The NXP i.MX8M Nano CPU provides a set of one-time programmable bits (eFuses) structured as 15 banks. Each bank is composed of four words of 32 bits each.
| These bits can be blown just once. Programming them is an irreversible operation. | 
Kernel configuration
You can manage the OTP driver support through the kernel configuration option:
- 
Freescale On-Chip OTP Memory Support (CONFIG_FSL_OTP) 
This option gives you read-only access to the OTP bits and is enabled as built-in on the ConnectCore 8M Nano Development Kit kernel configuration file.
| OTP memory write access is not yet supported on Linux. | 
Kernel driver
The OTP memory driver is located at:
| File | Description | 
|---|---|
| Freescale On-Chip OTP driver | 
Device tree bindings
The i.MX8M Nano OTP memory driver device tree binding is documented at Documentation/devicetree/bindings/nvmem/imx-ocotp.txt.
ocotp: ocotp-ctrl@30350000 {
	compatible = "fsl,imx8mq-ocotp", "fsl,imx7d-ocotp", "syscon";
	reg = <0 0x30350000 0 0x10000>;
	clocks = <&clk IMX8MN_CLK_OCOTP_ROOT>;
	/* For nvmem subnodes */
	#address-cells = <1>;
	#size-cells = <1>;
};OTP user space usage
The OTP words are accessible through the sysfs at /sys/fsl_otp.
Read access
Use the cat command to read each word:
~# cat HW_OCOTP_MAC_ADDR1 0x18e2501
| The HW_OCOTP_MAC_ADDR0, HW_OCOTP_MAC_ADDR1, and HW_OCOTP_MAC_ADDR2 words are reserved by Digi to program the module’s Hardware ID. (MAC addresses are programmed in the U-Boot environment.) | 
 
         
   
   
        