Thread (2 messages) 2 messages, 1 author, 2020-02-20

[BUG] hid-cp2112 sda stuck low, doesn't clear

flat view

From: Andrew James <hidden>
Date: 2020-02-20 02:55:04

Hi David,

I found a problem with the driver.  In this situation, the SDA line is
stuck low, but never clears, until cold rebooted.

I am using the CP2112 as a USB-to-I2C adapter with two slave devices.
Kernel version is 4.9.88.  CP2112 silicon revision is F03.

From userspace, if I ctrl+c (^c) the output of the device file of one
of the slaves, this occurs:

[  110.877415] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.
[  111.909193] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.
[  112.941004] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.
[  113.973812] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.
[  115.005627] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.
[  116.037474] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.
[  117.068261] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.
[  118.100093] cp2112 0003:10C4:EA90.0001: Transfer timed out, cancelling.


The log message continues indefinitely; the clock is stuck high and
the data line is stuck low.

When we swap to a different I2C adapter in hardware, the bus lockup no
longer occurs.

Is there a modification I can make to the driver so that it can clear
the bus, or recover the CP2112?  I can forward some I2C traces if
needed.

Andrew
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help