I2C access in UEFI

Hi, Nvidia team:
I want to access I2C-9 in UEFI to retrieve the status of the deserializer chip. However, only 3 I2C buses are detected in return. Is this caused by incomplete bus configuration in UEFI? How can I enable all I2C buses?

BR//ChengKe

What is your deserializer chip, MAX9296 ?

You have reviewed these docs?
https://docs.nvidia.com/jetson/archives/r38.4/DeveloperGuide/SD/CameraDevelopment/JetsonVirtualChannelWithGmslCameraFramework.html#reference-setup

MAX96712
the key point is I need to read it in UEFI

First please review these and correct anything that needs it. Then put attached files into the directories listed below.

DTB overlay (adds MAX96712 child node, uses existing code)
Once the child node is present, gNVIDIAI2cMax96712 gets an EFI_I2C_IO_PROTOCOL instance and the read code should work.

Confirm the MAX96712 actual I2C address on your carrier board; if it’s not 0x29, update both the node name and reg in Max96712I2c9.dts.
i2cdetect -y 9

cd nvidia-uefi/edk2-nvidia

File                                              Change
Silicon/NVIDIA/NVIDIA.dec                         Added gNVIDIAI2cMax96712 GUID                                
Silicon/NVIDIA/Drivers/TegraI2c/TegraI2cDxe.inf   Referenced gNVIDIAI2cMax96712 in [Guids]                     
Silicon/NVIDIA/Drivers/TegraI2c/TegraI2cDxe.c     Added maxim,max96712 detection block in the subnode loop     
Silicon/NVIDIA/Tegra/DeviceTree/Max96712I2c9.dts  New — overlay that adds max96712@29 child under i2c@810c6a0000
Silicon/NVIDIA/Tegra/DeviceTree/DeviceTree.inf    Registered the new overlay                  

DeviceTree.inf.txt (873 Bytes)
Max96712I2c9.dts.txt (451 Bytes)
NVIDIA.dec.txt (51.0 KB)
TegraI2cDxe.c.txt (64.2 KB)
TegraI2cDxe.inf.txt (1.5 KB)

Hi ekeechg,

Are you using the devkit or custom board for Thor?
What’s the Jetpack version in use?

Please review whitesScott’s suggestion to see if it provides a viable solution for your current case.

Based on my understanding, UEFI is DTB-driven so the I2C interface should work if you have enabled it in device tree.
Please also let us know what’s your use case and the requirement.