AnsweredAssumed Answered

Access OCOTP registers in IMX8MQ

Question asked by jignesh patel on Feb 5, 2019
Latest reply on Feb 7, 2019 by igorpadykov

We are going to make product based on IMX8MQ (MIMX8MQ6DVAJZAA) processor.  Currently we are doing POC on IMX8MQ processor EVK.


  • We need unique ID of the board for our use case. As per Technical Reference  Manual we have two registers (0x30350410 and 0x30350420) in OCOTP controller for this purpose.
  • The issue is that we are not able to access it from user space. (using devmem utility).
  • Whenever we try to access these registers board got hang for few seconds and reboot.
  • This issue is same if we try to access any registers of OCOTP controller. (base : 0x30350000)
  • Is there any specific method to access these registers? Are we missing anything?
  • We also find the in kernel there is already driver exist for this purpose (drivers/soc/imx/soc-imx8.c) which provides unique ID via sysfs interface as ( cat /sys/devices/soc0/soc_uid). We see that this driver reads these registers at early stage of kernel booting.
  • We want to access same unique ID in our custom driver to access soc_uid via proc entry due to code modularity with older products(based on IMX6Q). But it is not accessible via custom driver. It shows same behavior as devmem.
  • In IMX6Q we didn't face such issue while accessing OCOTP registers via devmem or custom driver.

Please provide your suggestion if we are missing anything.