The NXP i.MX93 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 93 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

drivers/nvmem/imx-ocotp-fsb-s400.c

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.

i.MX93 device tree
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
*