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

2 messages, 1 author, 2020-02-20 · open the first message on its own page

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

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

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

From: Andrew James <hidden>
Date: 2020-02-20 03:32:40

Hi,

For some reason David's email address bounces:
dbarksdale [off-list ref]

He was the original author of this chip driver.
If anyone can help me to grab his attention that would be awesome.

Thanks!
Andrew

On 2/20/20, Andrew James [off-list ref] wrote:
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