I2C issue on Jetson Xavier

In the custom carrier card developed for Jetson AGX Xavier module, seems like I2C_GP4 is not working properly. We have connected Audio codec to I2C_GP4 line and device is not found.
When we probed the I2C_GP4 signal in Xavier Eval kit and our carrier card, the signals are not having proper low state. Its having around 0.46V when driven low.

On devkit board, I2C_GP4 is routed to camera connector, M.2 key connector and Audio codec. Do you mean it has wrong low voltage on devkit?

And what else you connected to I2C_GP4 on custom board?

Yes. I have probed and checked both the boards and the voltage levels are same (0.46V when driven low by Xavier Module).
In the custom board also I2C_GP4 is connected to camera connector, M.2 key connector and Audio codec but the Audio codec is SGTL from NXP. I have the waveform screen shot but not sure how to upload here.

What’s your sw version and what kind of changes you did to it, such as pinmux, dts, etc.?

The captured waveform is from Evaluation board. No changes are done to the software.
Version: JetPack L4T-4.1.1


Would you mind working on Jetpack4.2 and sharing the full dmesg with us?

Roshan, did you find a solution?
I’m having the same problem with Jetpack 4.2
I2C_GP4 is never pulled all the way to 0 V and some of the devices on my expansion board can tolerate this while others become unresponsive. I2C_GP3 works fine.

The problem appears to be that the I2C_GP4 pins are configured with LPDR = 1, whereas the I2C pins (like I2C_GP3) that work normally have LPDR set to 0. This can be seen with “cat /sys/kernel/debug/tegra_pinctrl_reg | grep i2c” which shows 0x540 for gen8_i2c_sda_pdd2 (alias of I2C_GP4) instead of 0x440.

I can set this bit to 0 in user space and the I2C seems to start working normally again. Is there a way I can configure it in the device tree so it loads correctly from start of boot? I know I can change the .cfg file and reflash the entire device but I’d rather just flash an updated device tree instead of having to wipe my development environment.

There’s no any device tree property for this. However if you don’t want to modify the cfg file you can use devmem2 to write the REG after boot.