Weird I2C3 output in u-boot

Hi all!

I’m trying for a couple of days now to make I2C3 work on the TK1. I’m using u-boot 21.4 and in pinmux-config file I’ve set the following vars.

PINCFG(CAM_I2C_SCL_PBB1,       I2C3,        NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),
PINCFG(CAM_I2C_SDA_PBB2,       I2C3,        NORMAL, NORMAL,   INPUT,   ENABLE,  DEFAULT),

The other i2c channels work fine, only i2c3 doesn’t and when I say it doesn’t I mean it does weird things. Below there’s a screenshot of the problem I have.

and below another i2c channel, which is fine

I’ve tried to trace back the problem in the u-boot and the only thing I’ve found is that the i2c transfer fails inside send_recv_packets() function in drivers/i2c/tegra_i2c.c file. The problem seems to be that the wait_for_tx_fifo_empty() functions fails, whatever the timeout is and that happens because the count of the TX FIFO is always 7 and fails to meet the I2C_FIFO_DEPTH condition which is 8.

So, I’m lost in here. The output of i2c3 is very weird and I can’t find why.

Does anybody had the same issue?

Thank you in advance!

Oh, I forgot to say that if I change the i2c speed to 400k then the first part of the SCL is exactly the same (regarding the time) and only the pulse stream changes to the i2c freq.

Also in the first image the blue channel is SCL and in the second the SCL is the yellow channel.

Hello, dimtass:
It seems that blue channel in pic_48_2.gif and yellow channel in pic_48_1.gif are all in 100kHz.

I have not tried I2C in u-boot. Would you please check same signal in Linux first?

br
Chenjian