We have custom carrier board for TX2 which works fine and uses approach with plugin manager for DTB overlay. CBoot finds IDS (ID string) in external Eeprom on carrier board and apply necessary nodes accordingly Log in | NVIDIA Developer. For TX2 we use L4T 32.4.4. IDS stored in external Eeprom by address 0x57 and have next record:
No size specified (using byte-data access)
0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
00: 00 02 ff ff ff ff ff ff ff ff ff ff ff ff ff ff .?..
10: ff ff ff ff cc 41 42 53 2d 31 30 00 ff ff ff ff …?ABS-10…
20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
50: ff ff ff ff ff ff ff ff ff 70 01 ff ff ff ff ff …p?..
60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff …
f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 22 …"
We need to migrate from TX2 to Xavier NX for current carrier board with Auvidea NX/TX2 Adapter. For Xavier NX we use L4T 35.5.0 and it does not have plugin manager because this L4T uses UEFI instead of. Accordingly documentation from Sensor Software Driver Programming — NVIDIA Jetson Linux Developer Guide 1 documentation this L4T provides another approach for DTB overlay.
I have done next necessary steps:
- The file tegra194-p3668-abs10.dtsi has been created and included in general .dts file.
- The overlay file tegra194-p3668-abs10-overlay.dts created and the tegra194-p3668-abs10-overlay.dtbo file compiled.
- The files tegra194-p3668-abs10-overlay.dtbo and tegra194-p3668-abs10.dtb copied to Linux_for_Tegra/kernel/dtb.
- Line for overlay in the p3668.conf file is changed:
OVERLAY_DTB_FILE="${OVERLAY_DTB_FILE},tegra194-p3668-abs10-overlay.dtbo”; - The file
Linux_for_Tegra/bootloader/t186ref/BCT/tegra194-mb1-bct-misc-l4t.cfgis changed, because Eeprom connected to i2c-2 :
cvb_eeprom_instanse = 2; - Xavier NX is flashed.
- After reboot UEFI found external Eeprom on carrier board:
[0002.272] > DEVICE_PROD: device prod is not initialized.
[0002.297] > DEVICE_PROD: device prod is not initialized.
[0000.919] I> Welcome to MB2(TBoot-BPMP) (version: default.t194-mobile-8e4b789e)
[0000.919] I> DMA Heap @ [0x526fa000 - 0x52ffa000]
[0000.920] I> Default Heap @ [0xd486400 - 0xd48a400]
[0000.921] E> DEVICE_PROD: Invalid value data = 70020000, size = 0.
[0000.926] W> device prod register failed
[0000.930] I> gpio framework initialized
[0000.934] I> tegrabl_gpio_driver_register: register ‘nvidia,tegra194-gpio’ driver
[0000.941] I> tegrabl_gpio_driver_register: register ‘nvidia,tegra194-gpio-aon’ driver
[0000.949] I> No valid sdcard_params in mb1_bct
[0000.953] I> Boot_device: QSPI_FLASH instance: 0
[0000.958] I> qspi flash-0 params source = boot args
[0000.963] I> QSPI-0l initialized successfully
[0000.966] I> sdmmc-3 params source = safe params
[0001.400] I> sdmmc DDR50 mode
[0001.418] I> Found 41 partitions in QSPI_FLASH (instance 0)
[0001.435] W> Cannot find any partition table for 00000003
[0001.436] > PARTITION_MANAGER: Failed to publish partition.
[0001.451] I> Found 22 partitions in SDMMC_USER (instance 3)
[0001.452] I> Active Boot chain : 0
[0002.271] I> Relocating BR-BCT
[0002.272] > DEVICE_PROD: device prod is not initialized.
[0002.297] > DEVICE_PROD: device prod is not initialized.
[0002.621] I> Relocating OP-TEE dtb from: 0x6bfff720 to 0x70050000, size: 1008
[0002.621] I> [0] START: 0x80000000, SIZE: 0x2f000000
[0002.622] I> [1] START: 0xaf010000, SIZE: 0x189f0000
[0002.622] I> [2] START: 0xc7b00000, SIZE: 0xc0000
[0002.623] I> [3] START: 0xca000000, SIZE: 0x800000
[0002.623] I> dram_block larger than 80000000
[0002.626] I> [4] START: 0x100000000, SIZE: 0x380000000
[0002.637] I> Setting NS memory ranges to OP-TEE dtb finished.
[0002.640] I> found decompressor handler: lz4
[0003.129] I> EKB detected (length: 0x410) @ VA:0x52709400
[0003.131] I> Setting EKB blob info to OPTEE dtb finished.
but didn’t find any IDs:
[0004.194] W> No board IDs available
[0004.196] E> Failed to get board id info!
[0004.046] GIC-SPI Target CPU: 0
[0004.049] Interrupts Init done
[0004.052] calling constructors
[0004.055] initializing heap
[0004.058] I> Heap: [0xa0a60000 … 0xadf00000]
[0004.062] initializing threads
[0004.065] initializing timers
[0004.068] creating bootstrap completion thread
[0004.072] top of bootstrap2()
[0004.075] CPU: MIDR: 0x4E0F0040, MPIDR: 0x80000000
[0004.079] initializing platform
[0004.082] E> DEVICE_PROD: Invalid value data = 0, size = 0.
[0004.088] W> device prod register failed
[0004.092] I> Bl_dtb @0xadf000000xadf00000
[0004.095] I> gpio framework initialized
[0004.105] I> tegrabl_gpio_driver_register: register ‘nvidia,tegra194-gpio’ driver
[0004.110] I> tegrabl_gpio_@0xadf00000river_register: register ‘nvidia,tegra194-gpio-aon’ driver
[0004.118] I> fixed regulator driver initialized
[0004.141] I> register ‘maxim’ power off handle
[0004.146] I> virtual i2c enabled
[0004.147] I> registered ‘maxim,max20024’ pmic
[0004.147] I> tegrabl_gpio_driver_register: register ‘max20024-gpio’ driver
[0004.148] I> Boot-device: QSPI
[0004.148] I> Boot_device: QSPI_FLASH instance: 0
[0004.148] I> configure_qspi_clk: qparams clk_src = 5, clk_div = 0, clk_src_freq = 800000000, interface_freq = 50000000
[0004.154] I> configure_qspi_clk: FORCING INTERFACE_FREQ TO 133000000!!
[0004.161] I> QSPI source rate = 204000 Khz
[0004.164] I> Requested rate for QSPI clock = 34000 Khz
[0004.169] I> BPMP-set rate for QSPI clk = 34000 Khz
[0004.174] I> tx_clk_tap_delay : 0
[0004.177] I> rx_clk_tap_delay : 16
[0004.180] I> QSPI Flash Size = 32 MB
[0004.188] I> Qspi initialized successfully
[0004.188] I> qspi flash-0 params source = boot args
[0004.194] W> No board IDs available
[0004.196] E> Failed to get board id info!
[0004.202] I> sdmmc-3 params source = safe params
[0004.209] I> Found 41 partitions in QSPI_FLASH (instance 0)
[0004.210] W> Cannot find any partition table for 00000003
[0004.215] E> Failed to publish 00000003
[0004.219] I> Found 22 partitions in SDMMC_USER (instance 3)
[0004.248] I> regulator ‘vdd-hdmi-5v0’ already enabled
[0004.257] I> regulator ‘vdd-hdmi-5v0’ already enabled
[0004.257] E> tegrabl_display_init_regulator: hdmi cable is not connected
[0004.258] E> tegrabl_display_get_pdata, failed to parse dtb settings
[0004.260] E> cannot find any other nvdisp nodes
[0004.260] E> no valid display unit config found in dtb
[0004.263] W> display init failed
[0004.263] initializing target
[0004.265] calling apps_init()
[0004.268] starting app kernel_boot_app
[0004.271] I> Kernel type = NormalJetson UEFI firmware (version 202210.4-11fd746-dirty built on 2025-01-13T18:45:41-0
Why UEFI does not see IDS in external Eeprom? Could this IDS be placed in CVB Eeprom or it should used another Eeprom on another I2C bus? It worked for TX2. From documentation Eeprom on Camera Module has address 0x54, but I don’t see any I2C reading cycles for address 0x54. Right now external Eeprom connected to CAM_I2C bus and I see reading 256 bytes from it on I2C bus from UEFI, it looks as reading “DEVICE_PROD: device prod is not initialized.“. How to resolve this issue? Thanks in advance.