We are trying to burn the GP3 and GP4 (General purpose fuse register 3 and 4, ranging from 0x880 to 0x8f0) by using the available sysfs entries. We are using NXP official BSP release 4.1.15_2.0.0_ga.
We are doing something like this:
echo 0xdeadbeef > /sys/fsl_otp/HW_OCOTP_GP30
echo 0xdeadbeef > /sys/fsl_otp/HW_OCOTP_GP31
echo 0xdeadbeef > /sys/fsl_otp/HW_OCOTP_GP32
echo 0xdeadbeef > /sys/fsl_otp/HW_OCOTP_GP33
Unfortunately, this doesn't work. Fuses are not burnt, the behavior is the same when we are trying to burn a locked fuse.
Nevertheless, based on the lock fusemap available on page 212 of the imx6ull reference manual, I can confirm GP3 and GP4 are not locked.
# cat /sys/fsl_otp/HW_OCOTP_LOCK
// 0x333f03 & (1 << 15) = 0
// 0x333f03 & (1 << 23) = 0
How can this behavior be explained ? I can confirm other fuses like HW_OCOTP_SW_GPn, HW_OCOTP_MACn, HW_OCOTP_GP1 or HW_OCOTP_GP2 seem to work as expected.