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.) |