Share my test procedure in the attachment.
I do not see a /sys/fsl_otp ???
I have defined "CONFIG_FSL_OTP" and re-compiled. What step am I missing?
(Sorry I mistakenly put /dev/fsl_otp)
Why do you look for this (/dev/fsl_otp)??
From my document, we just need /sys/fsl_otp.
I am not sure why the device doesn't show up in /sys/fsl_otp. I selected "y" in menuconfig (.config), and recompiled.
I had the same issue. In my case I moved fsl_otp to be a module so it's error message could be read conveniently. The error I saw in dmesg after modprobing the fsl_otp module was this:
Error: Driver 'imx-ocotp' is already registered, aborting...
If you grep for imx-ocotp on the kernel source you should find two instances:
./drivers/char/fsl_otp.c:241: .name = "imx-ocotp",
./arch/arm/plat-mxc/devices/platform-imx-ocotp.c:99: return imx_add_platform_device("imx-ocotp", 0,
The second instance is in a function named imx_add_otp(), which has a wrapping #define, imx6q_add_otp() in case of the i.MX6.
I put a call for this function where the call for other components are made (imx6q_add_*) inside arch/arm/mach-mx6/board-mx6q_arm2.c (you may use a different board-mx6q_ file, depending on the hardware you use).
This fixed the issue, now fsl_otp runs and opens the /sys/fsl_otp dir.
Thank you Mickey! This helped tremendously.