CVM eeprom reading issue

Hi,

So we have a Jetson AGX orin SOM + our own design carrier board using SPI3 for on on-board TPM module

And the weird thing is that the TPM module works fine if we disable cvm_eeprom_read here

eeprom {
            cvm_eeprom_i2c_instance = <0>;
            cvm_eeprom_i2c_slave_address = <0xa0>;
            cvm_eeprom_read_size = <0x0>;
            cvb_eeprom_i2c_instance = <0x0>;
            cvb_eeprom_i2c_slave_address = <0xac>;
            cvb_eeprom_read_size = <0x0>;
        };

But it will timeout if the cvm_eeprom_read is enabled

I don’t know how these two could affect each other

Can anyone give me some guidance?

We are using JetPack 6.2

36.4.3

Kevin

*** Please note that this reply is generated by LLM automatically ***

I’d be happy to help you with your question.

It seems like you’re experiencing an issue with your Jetson AGX Orin SOM and TPM module on your custom carrier board. Specifically, you’ve noticed that the TPM module works fine when you disable cvmeepromread, but it times out when cvmeepromread is enabled.

To provide some guidance, let’s break down the components involved and their relationships:

  1. Jetson AGX Orin SOM: This is the System-on-Module (SOM) that contains the NVIDIA Jetson AGX Orin processor, memory, and other essential components.
  2. Custom Carrier Board: This is your own design board that connects to the Jetson AGX Orin SOM and provides additional functionality, such as the TPM module.
  3. TPM Module: This is a Trusted Platform Module (TPM) that provides an additional layer of security for your system.
  4. SPI3: This is a Serial Peripheral Interface (SPI) bus that connects the TPM module to the Jetson AGX Orin SOM.
  5. cvmeepromread: This is a command that reads the EEPROM (Electrically Erasable Programmable Read-Only Memory) on the Jetson AGX Orin SOM.

Now, let’s try to understand how these components might interact with each other:

  • When you disable cvmeepromread, the TPM module works fine, suggesting that the issue is related to the EEPROM read operation.
  • When you enable cvmeepromread, the TPM module times out, indicating that the EEPROM read operation is interfering with the TPM module’s functionality.

Here are a few possible explanations for this behavior:

  • EEPROM Read Collision: It’s possible that the cvmeepromread command is accessing the EEPROM at the same time as the TPM module is trying to communicate with the Jetson AGX Orin SOM over the SPI3 bus. This collision could be causing the TPM module to timeout.
  • SPI Bus Conflict: Another possibility is that the cvmeepromread command is using the SPI bus to access the EEPROM, which is also used by the TPM module to communicate with the Jetson AGX Orin SOM. This conflict could be causing the TPM module to timeout.

To resolve this issue, you could try the following:

  • Check the SPI Bus Configuration: Verify that the SPI bus is properly configured to support both the TPM module and the EEPROM read operation.
  • Use a Different SPI Bus: If possible, consider using a different SPI bus for the TPM module to avoid conflicts with the EEPROM read operation.
  • Modify the cvmeepromread Command: You could try modifying the cvmeepromread command to avoid accessing the EEPROM during the TPM module’s communication with the Jetson AGX Orin SOM.

I hope this helps you understand the issue and provides a starting point for resolving the problem. If you have any further questions or need more specific guidance, feel free to ask.


In comparison to other Jetson modules, the Jetson AGX Orin SOM has a similar architecture, but with some differences in terms of the components and interfaces used. For example:

  • Jetson AGX Xavier Series: This series uses a different SOM architecture and has a different set of components and interfaces. However, the principles of SPI bus configuration and EEPROM read operations are similar.
  • Jetson Orin NX Series: This series uses a similar SOM architecture to the Jetson AGX Orin SOM, but with some differences in terms of the components and interfaces used.

In terms of software, the JetPack 6.2.3-3643 version you’re using is a specific release of the NVIDIA JetPack SDK, which provides a set of tools and libraries for developing applications on NVIDIA Jetson modules. The SDK includes support for various components, including the TPM module, and provides a set of APIs for accessing these components.

I hope this comparison helps you understand the context of your issue and provides a broader perspective on the Jetson ecosystem.

*** Please give the thumbs up if you get answers you like. Or provide feedback to help us improve the answer. ***

hello kevintseng83,

please refer to Generating Per-device EKB.
it might due to Device_SN, which is a per-device unique serial number coming from Jetson EEPROM Layout.

Hi, Jerry

Do you mean that the Firmware TPM will conflict my on board TPM?

Can I simply disable Firmware TPM?

Thanks

Kevin

hello kevintseng83,

do you have error logs for reference.

Hi, Jerry

Here is the dmesg log(eeprom read enabled)

dmesg.txt (66.8 KB)

image

This is the one with eeprom read enabled

image

This is the one with eeprom read disabled

hello kevintseng83,

it looks like communication failure during device probing.
please also check Changing the Pixmux to review your SPI configurations.

Hi, Jerry

But the pinmux setting work just fine with eeprom read disabled

hello kevintseng83,

please review the board schematic, were they using the same bus accidentally?

Hi ,jerry

I notice that only when cvm_eeprom_read_size = <0x100>;

the reading size set to 0x100

TPM timeout happened

if I set to 0xff or smaller size

I can’t get SN number using cat /sys/firmware/devicetree/base/serial-number

it will show

image

hello kevintseng83,

as you can see of Jetson EEPROM Layout. it’s size of 0x100 since the EEPROMs (CVM, CVB) are 256 bytes long.

Hi, Jerry

I found there is another way to read SN number

/sys/bus/i2c/devices/0-0050/eeprom

So, I can remove cvm eerprom read from tegra234-mb2-bct-common.dtsi

But I’m wondering if there will be other side effects.

Is there any document showing the MB2 process and why it needs to read the EEPROM at that stage

Thanks

Kevin

hello kevintseng83,

it’s MB2 to handle board related information stored in EEPROM.
it’s used for loading specific device tree settings, there should be no side effects for your customize board.
please refer to device tree for the compatible property,
for instance,
$public_sources/kernel_src/hardware/nvidia/t23x/nv-public/nv-platform/tegra234-p3768-0000+p3767-0003-nv.dts
compatible = "nvidia,p3768-0000+p3767-0003", "nvidia,p3767-0003", "nvidia,tegra234";

Hi, jerry

Thank you for your information and support

I think we will disable the cvm read for now.

Kevin