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
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