The NXP i.MX95 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 95 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.MX95 device tree
ocotp: efuse@47510000 {
	compatible = "fsl,imx95-ocotp";
	reg = <0x0 0x47510000 0x0 0x10000>;
	#address-cells = <1>;
	#size-cells = <1>;

	eth_mac0: mac-address@0 {
		reg = <0x0514 0x6>;
	};

	eth_mac1: mac-address@1 {
		reg = <0x1514 0x6>;
	};

	eth_mac2: mac-address@2 {
		reg = <0x2514 0x6>;
	};
};

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: 000000db 00000000 00000000 00000000
00000010: 00000000 00000000 00000000 00000000
00000020: 00000000 00008017 00003400 00000000
00000030: 6e5f04dd 00000006 00050916 65193005
00000040: 00000000 00015e74 00000000 00000000
00000050: 00000080 00000000 00000000 00000000
00000060: 00000000 00000000 00000000 00000000
*
00000090: 00000000 00000000 b561bc2d 007a65d4
000000a0: b561bc2d 005b65d4 7707083b 80000000
000000b0: 00040000 00000000 00000000 00000000
000000c0: b5a90454 eb41d172 adf4aa88 1831ee83
000000d0: 00000000 00000000 00000000 00000000
*
00000500: 00005067 00000000 00000000 00000000
00000510: 00000000 00000000 00000000 00000000
00000520: 00000001 1d0835af 55002001 100052e0
00000530: bf00d109 10011508 2000e001 1001151c
00000540: 68092303 10011548 bf004019 00000000
00000550: 00000000 00000000 00000000 00000000
*
00000980: 00000000 00000000