I am able to write fuses on the imx93 from linux using the imx-ocotp-fsb-s400 driver. Now, I want to sense / read the fused values back without rebooting. Unfortunately, only the shadow register with the old values are read back. Checking the code and the imx93 reference manual(76.6.1.5), I came across the register FSB_ACC_DIS. Disabling the shadow register in code solved my issue, but a few questions are still open:
Please note: I know the recommended way for burning fuses is via uboot's fuse prog. Unfortunately, we are looking for a solution from linux.
>> How to set the Bit0/OSCCA_FUSE_READ_DIS in the FSB_ACC_DIS register?
> OSCCA_FUSE_READ_DIS is used to check if fuse read is disabled in the device, it cannot be configured since it is a only read register.
What hw/sw part is setting the register? What is the purpose, if the customer can not change it's value? I understand that there are lock bits to control (read/write) individual parts of the fuse map., but the register seems to be independent of the lock bits. Is there a fuse to change OSCCA_FUSE_READ_DIS value?
>> What is the benefit of reading the fuses from shadow registers instead of reading it directly from the fuses, except the fact it is easier without the ELE messaging unit?
> The main objective of shadow register use is response since the value is saved in RAM.
Is it possible to refresh the shadow register after writing to them?
Hello,
OSCCA_FUSE_READ_DIS is used to check if fuse read is disabled in the device, it cannot be configured since it is a only read register.
The main objective of shadow register use is response since the value is saved in RAM.
The control fuse read enable/disable is in lock bits, please check chapter 7.1.2 of i.MX93 reference manual.
Best regards,