> For the complete documentation index, see [llms.txt](https://dev.solid-run.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dev.solid-run.com/marvell/cn913x/sbc-platform/cn913x-other-articles/cn913x-eeprom-programming-tlv.md).

# CN913x EEPROM Programming - TLV

## Revisions and Notes

| **Date**          | **Owner**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | **Revision** | **Notes**       |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | --------------- |
| 03 Apr 2022       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 1.0          | Initial release |
| Table of Contents | <p>- <a href="#revisions-and-notes">Revisions and Notes</a><br>- <a href="#introduction">Introduction</a><br>- <a href="#carrier">Carrier</a><br>- <a href="#example">Example</a><br>- <a href="#programming-from-u-boot">Programming from U-Boot</a><br>- <a href="#com-express">COM Express</a><br>- <a href="#example">Example</a><br>- <a href="#programming-from-u-boot">Programming from U-Boot</a><br>- <a href="#som">SoM</a><br>- <a href="#example">Example</a><br>- <a href="#programming-from-u-boot">Programming from U-Boot</a></p> |              |                 |

## Introduction

Starting from April 01. 2022, the EEPROMs on Carriers, SoMs and COM-Express Modules are being programmed with identifying information such as the product name and SKUs to allow for programmatic identification of hardware. The data is is structured according to the [ONIE TLV Standard](https://opencomputeproject.github.io/onie/design-spec/hw_requirements.html#board-eeprom-information-format).

## Carrier

The EEPROM on Clearfog Base and Pro on i2c-0 at 0x52 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.

### Example

* TLV\_CODE\_PRODUCT\_NAME: Clearfog Base
* TLV\_CODE\_PART\_NUMBER: SRCFCB9130IV14
* TLV\_CODE\_SERIAL\_NUMBER: NG01725204200060
* TLV\_CODE\_MANUF\_DATE: 12/24/2022 07:35:59
* TLV\_CODE\_DEVICE\_VERSION: 0x14 (1.4)
* TLV\_CODE\_MANUF\_NAME: IMI
* TLV\_CODE\_MANUF\_COUNTRY: PH
* TLV\_CODE\_VENDOR\_NAME: SolidRun

### Programming from U-Boot

The EEPROM can be programmed from the U-Boot cli accordingly by the following commands:

```
tlv_eeprom dev 0
tlv_eeprom erase
tlv_eeprom set 0x21 'Clearfog Base'
tlv_eeprom set 0x22 'SRCFCB9130IV14'
tlv_eeprom set 0x23 'NG01725204200060'
tlv_eeprom set 0x25 '12/24/2022 07:35:59'
tlv_eeprom set 0x26 '0x14'
tlv_eeprom set 0x2b 'IMI'
tlv_eeprom set 0x2c 'PH'
tlv_eeprom set 0x2d 'SolidRun'
tlv_eeprom write

```

## COM Express

The EEPROM on CN913x CEX-7 Modules on i2c-0 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 (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.

### Example

* TLV\_CODE\_PRODUCT\_NAME: CN9132 COM Express 7 Module
* TLV\_CODE\_PART\_NUMBER: SRC9132S64D00GE008V12
* TLV\_CODE\_SERIAL\_NUMBER: NG01848213000015
* TLV\_CODE\_MANUF\_DATE: 12/24/2022 07:35:59
* TLV\_CODE\_DEVICE\_VERSION: 0x12 (1.2)
* TLV\_CODE\_PLATFORM\_NAME: Octeon TX2
* TLV\_CODE\_MANUF\_NAME: Nistec
* TLV\_CODE\_MANUF\_COUNTRY: IL
* TLV\_CODE\_VENDOR\_NAME: SolidRun

### Programming from U-Boot

The EEPROM can be programmed from the U-Boot cli accordingly by the following commands:

```
tlv_eeprom dev 0
tlv_eeprom erase
tlv_eeprom set 0x21 'CN9132 COM Express 7 Module'
tlv_eeprom set 0x22 'SRC9132S64D00GE008V12'
tlv_eeprom set 0x23 'NG01848213000015'
tlv_eeprom set 0x25 '12/24/2022 07:35:59'
tlv_eeprom set 0x26 '0x12'
tlv_eeprom set 0x28 'Octeon TX2'
tlv_eeprom set 0x2b 'IMI'
tlv_eeprom set 0x2c 'PH'
tlv_eeprom set 0x2d 'SolidRun'
tlv_eeprom write

```

## SoM

The EEPROM on CN913x SoMs on i2c-0 at 0x53 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.

### Example

* TLV\_CODE\_PRODUCT\_NAME: CN9130 System on Module
* TLV\_CODE\_PART\_NUMBER: SRS9130S64D04GE008V11C0
* TLV\_CODE\_SERIAL\_NUMBER: NG01862214200020
* TLV\_CODE\_MANUF\_DATE: 12/24/2022 07:35:59
* TLV\_CODE\_DEVICE\_VERSION: 0x11 (1.1)
* TLV\_CODE\_PLATFORM\_NAME: Octeon TX2
* TLV\_CODE\_MANUF\_NAME: Nistec
* TLV\_CODE\_MANUF\_COUNTRY: IL
* TLV\_CODE\_VENDOR\_NAME: SolidRun

### Programming from U-Boot

The EEPROM can be programmed from the U-Boot cli accordingly by the following commands:

```
tlv_eeprom dev 1
tlv_eeprom erase
tlv_eeprom set 0x21 'CN9130 System on Module'
tlv_eeprom set 0x22 'SRS9130S64D04GE008V11C0'
tlv_eeprom set 0x23 'NG01862214200020'
tlv_eeprom set 0x25 '12/24/2022 07:35:59'
tlv_eeprom set 0x26 '0x11'
tlv_eeprom set 0x28 'Octeon TX2'
tlv_eeprom set 0x2b 'Nistec'
tlv_eeprom set 0x2c 'IL'
tlv_eeprom set 0x2d 'SolidRun'
tlv_eeprom write
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev.solid-run.com/marvell/cn913x/sbc-platform/cn913x-other-articles/cn913x-eeprom-programming-tlv.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
