The i.MX6 CPU has one-time-programmable (otp) fuses which can be used by SoCs to store various permanent configuration and data.
Some common uses include boot configuration, security configuration, MAC addresses, etc.
We only modify the following fuse words:
|0x22 and 0x23||MAC address|
Thanks to a patch by Thilo Jeremias, we’ve been using the ‘imxotp’ command to set fuses. The process looked like this:
U-Boot > imxotp blow --force 5 0x18000030 U-Boot > imxotp blow --force 6 0x00000010 U-Boot > imxotp blow --force 0x23 0x19 U-Boot > imxotp blow --force 0x22 ...low bits of mac address
Recently, Benoît Thébaudeau developed the fuse API and got it accepted into mainline,
so we’re making the transition. The new commands look like this:
U-Boot > fuse prog 0 5 0x18000030 U-Boot > fuse prog 0 6 0x00000010 U-Boot > fuse prog 4 3 0x19 U-Boot > fuse prog 4 2 ...low bits of mac address
Note that the fuses are arranged in banks of 8 words so for example, 0x22 = 34 = bank 4 word 2. For more information about the Fuse API see the README