iMX8MP EEPROM Programming - TLV
Revisions and Notes
Date
Owner
Revision
Notes
11 Apr 2022
1.0
Initial release
Table of Contents
Introduction
Starting from April 01. 2022, the EEPROMs on Carriers, i.MX8M Plus SoMs are being programmed with identifying information such as the product name and SKUs to allow for programmatic identification of hardware. The data is structured according to the ONIE TLV Standard.
Carrier
The EEPROM on Clearfog Base and Pro on i2c-3 at 0x57 is programmed with the following TLV entries:
TLV_CODE_PRODUCT_NAME (mandatory) Human-readable name of the Product.
TLV_CODE_PART_NUMBER (mandatory) Identifying part number from ordering system (SKU) without BOM suffix (/0).
TLV_CODE_SERIAL_NUMBER (mandatory)
TLV_CODE_MANUF_DATE (mandatory) Manufacturing Date (MM/DD/YYYY HH:MM:SS)
TLV_CODE_DEVICE_VERSION (mandatory) Board Revision, incremented when parts or layout changes; MAJOR.MINOR revisions are encoded by storing MAJOR in the four most significant bits, MINOR in the four least significant bits.
TLV_CODE_MANUF_NAME (mandatory)
TLV_CODE_MANUF_COUNTRY (mandatory)
TLV_CODE_VENDOR_NAME (mandatory) Name of Vendor, typically SolidRun.
TLV_CODE_VENDOR_EXT (optional): This is a custom entry using the following structure:
4 byte IANA enterprise number in network byte order (we use 0xFFFFFFFF for now)
1 byte solidrun tlv code
SR_TLV_CODE_KIT_NUMBER (0x10): Identifying part number (SKU) when sold as a Kit.
up to 250 byte of binary data
Example
TLV_CODE_PRODUCT_NAME: HummingBoard Ripple
TLV_CODE_PART_NUMBER: SRHBCRE000CV25
TLV_CODE_SERIAL_NUMBER: NG01829212000006
TLV_CODE_MANUF_DATE: 12/24/2022 07:35:59
TLV_CODE_DEVICE_VERSION: 0x25 (2.5)
TLV_CODE_MANUF_NAME: IMI
TLV_CODE_MANUF_COUNTRY: PH
TLV_CODE_VENDOR_NAME: SolidRun
TLV_CODE_VENDOR_EXT: 0xFFFFFFFF 0x10 SRMP8QDW00D01GE008R02CH
Programming from U-Boot
The EEPROM can be programmed from the U-Boot cli accordingly by the following commands:
SoM
The EEPROM on i.MX8M Plus SoMs on i2c-1 at 0x50 is programmed with the following TLV entries:
TLV_CODE_PRODUCT_NAME (mandatory) Human-readable name of the Product.
TLV_CODE_PART_NUMBER (mandatory) Identifying part number from ordering system (long SKU) without BOM suffix (/0).
TLV_CODE_SERIAL_NUMBER (mandatory)
TLV_CODE_MAC_BASE (optional) First MAC Address for the on-COM (SoC) network interface(s)
TLV_CODE_MANUF_DATE (mandatory) Manufacturing Date (MM/DD/YYYY HH:MM:SS)
TLV_CODE_DEVICE_VERSION (mandatory) Board Revision, incremented when parts or layout changes; MAJOR.MINOR revisions are encoded by storing MAJOR in the four most significant bits, MINOR in the four least significant bits.
TLV_CODE_PLATFORM_NAME Family name for the SoC.
TLV_CODE_MAC_SIZE (optional) Number of consecutive MAC Addresses starting from TLV_CODE_MAC_BASE. Usually 1.
TLV_CODE_MANUF_NAME (mandatory)
TLV_CODE_MANUF_COUNTRY (mandatory)
TLV_CODE_VENDOR_NAME (mandatory) Name of Vendor, typically SolidRun.
TLV_CODE_VENDOR_EXT (optional): This is a custom entry using the following structure:
4 byte IANA enterprise number in network byte order (we use 0xFFFFFFFF for now)
1 byte solidrun tlv code
SR_TLV_CODE_KIT_NUMBER (0x10): Identifying part number (SKU) when sold as a Kit.
up to 250 byte of binary data
Example
TLV_CODE_PRODUCT_NAME: i.MX8M Plus System on Module
TLV_CODE_PART_NUMBER: S8DN18C11/1
TLV_CODE_SERIAL_NUMBER: NG01865214200061
TLV_CODE_MANUF_DATE: 12/24/2022 07:35:59
TLV_CODE_DEVICE_VERSION: 0x11 (1.1)
TLV_CODE_PLATFORM_NAME: i.MX8M Plus
TLV_CODE_MANUF_NAME: Nistec
TLV_CODE_MANUF_COUNTRY: IL
TLV_CODE_VENDOR_NAME: SolidRun
TLV_CODE_VENDOR_EXT: 0xFFFFFFFF 0x10 SRMP8QDW00D01GE008X01CE
Programming from U-Boot
The EEPROM can be programmed from the U-Boot cli accordingly by the following commands:
Progammring MAC Address
There are two options for storing MAC addresses on the i.MX8MP platform:
Store the MAC address in OTP eFuses
This is a non-reversible action, as the eFuse is permanently programmed.
Store the MAC address in EEPROM using TLV format (Recommended)
This method allows flexibility and is the preferred approach.
Default Configuration
By default, the MAC address is stored in the SOM's TLV EEPROM.
All SOMs are pre-flashed with SolidRun's default MAC address range in the TLV EEPROM.
Custom MAC Address Option
There is an option to provide a custom MAC address range.
SolidRun can program the custom MAC addresses into the TLV EEPROM upon request.
Programming MAC Address in TLV Format
Using the following U-Boot commands:
By default, the bootloader will automatically read the
TLV_MACvalue during initialization and apply it to the corresponding network interface.
Last updated