Other Parts Discussed in Thread: TPD12S015, PMP, DRA752, TFP410, TMP102
Team,
Can you help my customer identify the cause of I2C2 issue described below?:
Device AM5748ABZXAS
98P10EQ
941 ABZ
This issue has been seen on multiple AM devices of the same batch.
The AM device is used on a custom module.
All five I2C buses are configured, only I2C2 displays this issues:
Occasionally I2C will power up with I2C2_SDA stuck low, especially when cold
Sometimes, when SDA is not stuck low, from a u-boot prompt, attempting to access a device results in the following error:
=> i2c dev 1
Setting bus to 1
=> i2c probe
Valid chip addresses:Timed out in wait_for_event: status=0000
Check if pads/pull-ups of bus are properly configured
Timed out in wait_for_event: status=0000
(and the above two lines are repeated . . .)
When all seems to be well, the above probe works fine:
=> i2c dev 1
Setting bus to 1
=> i2c probe
Valid chip addresses: 10 20 48 49 4A 4B 57
Signal Integrity is good.
When all seems to be fine, running the following as a script will hang the SDA low after a small number of attempts (1 to 6 or so)
Script completes:
=> i2c mm 4b 100.2
00000100: 00 ? 00
00000101: 00 ? 00
00000102: 00 ? 00
00000103: 00 ? 00
00000104: 00 ? 00
00000105: 00 ? 00
00000106: 00 ? 00
00000107: 00 ? 00
00000108: 00 ? 00
00000109: 00 ? 00
0000010a: 00 ? 00
0000010b: 00 ? 00
0000010c: 00 ? ^c
=>
Script fails:
> i2c mm 4b 100.2
00000100: 00 ? 00
00000101: 00 ? 00
00000102: 00 ? 00
00000103: 00 ? 00
00000104: 00 ? 00
00000105: 00 ? 00
00000106: 00 ? 00
00000107:Timed out in wait_for_event: status=1000
Check if pads/pull-ups of bus are properly configured
Error reading the chip: -121
=>
Here is a scope capture of the failing transaction. It should be a write of 0x0107 to device at 0x96 (4B write) followed by a single data read at device 0x97 (4B read). The write is successful but the read fails as shown.
I have a previous version of our module with the same device at 4B and uses an AM5748 from the same batch. Difference is that the 4B device is on I2C4 on that version. On that previous version, I2C2 was used but had devices at 10, 4A, and 57; I2C4 had devices at 38, 48, 49, and 4B. In this older version we have never seen any of these issues and the script runs flawlessly.
In both the old and the new modules, I2C pullups are 2.21K and I2C buses are run at 3.3V.
The lead SW person and I (HW lead) have scrubbed the registers and compared the configuration between the various I2C buses and found nothing of any significance.
Anyone have any ideas what might be happening or ever seen anything like this?
Let me know if additional information is needed.
Thanks!
Viktorija