The NXP i.MX91 CPU provides a set of one-time programmable bits (eFuses) organized in a fuse array.
Kernel configuration
You can manage the OTP driver support through the kernel configuration option:
-
i.MX FSB/S400-API ocotp fuse box support (
CONFIG_NVMEM_IMX_OCOTP_FSB_S400
)
This option gives you read-only access to the OTP bits and is enabled as built-in on the ConnectCore 91 default kernel configuration file.
OTP memory write access is not yet supported on Linux. |
Kernel driver
The OTP memory driver is located at:
File | Description |
---|---|
i.MX FSB/S400-API ocotp fuse box support |
Device tree bindings
The OTP bits are managed by EdgeLock Enclave security module.
The device tree bindings for the OTP bits are documented at Documentation/devicetree/bindings/nvmem/imx-ocotp.yaml
.
ocotp: efuse@47510000 {
compatible = "fsl,imx93-ocotp", "syscon", "simple-mfd";
reg = <0x47510000 0x10000>;
#address-cells = <1>;
#size-cells = <1>;
imx93_uid: soc-uid@c0 {
reg = <0xc0 0x10>;
};
eth_mac1: mac-address@4ec {
reg = <0x4ec 0x6>;
};
eth_mac2: mac-address@4f2 {
reg = <0x4f2 0x6>;
};
imx93_soc: imx93-soc {
compatible = "fsl,imx93-soc";
nvmem-cells = <&imx93_uid>;
nvmem-cell-names = "soc_unique_id";
};
};
OTP user space usage
The OTP words are accessible (read-only) through the sysfs at /sys/bus/nvmem/devices/fsb_s400_fuse0/nvmem
.
# hexdump -e '"%08_ax: " 4/4 "%08x " "\n"' /sys/bus/nvmem/devices/fsb_s400_fuse0/nvmem
00000000: 000020d8 00000043 00000080 000075c6
00000010: 0000001b 00007e00 00000600 00000002
00000020: 00003600 000036db 000036db 00000000
00000030: 6e5f0497 00000003 7b662264 00000109
00000040: 00000000 00000000 00000001 00000000
00000050: 00000000 00000000 00000000 00000000
*
000000c0: d9d5002b 2145b14f 7cb2c28f 5dd23e3e
000000d0: 00000000 00000000 00000000 00000000
*
000000f0: 00000000 00000000 00000000 00004000
00000100: 00000000 00000000 00000000 00000000
*
000004e0: 00000000 00000000 00000000 5d600025
000004f0: 114e2ffd 00067088 00000000 00000000
00000500: 00000000 00000000 00000000 00000000
*
00000520: 00000000 87808740 55001406 0000af38
00000530: 3140f44f 20009001 f6c1bf00 900070fd
00000540: 55000801 0000af4c f0013080 00000000
00000550: 00000000 00000000 00000000 00000000
*
000005e0: 00000000 7ff1e775 55003402 0000e79c
000005f0: 20490040 f81f0ffe 529a0000 72a40420
00000600: 52810001 4a010002 52854203 72a00023
00000610: d63f0060 121d7908 f84107fe d65f03c0
00000620: 00000000 00000000 00000000 00000000
*