[#6136] Illegal i2c bus lock upon certain transfer scenarios
Submitted By: Michael Hennerich
Medium High Assignee:
Open Fixed In Release:
Found In Release:
BF527 Silicon Revision:
Is this bug repeatable?:
Uboot version or rev.:
Toolchain version or rev.:
App binary format:
Summary: Illegal i2c bus lock upon certain transfer scenarios
For transfer counts > 255 bytes i2c-bfin-twi sets the data
transfer counter DCNT to 0xFF indicating unlimited transfers.
It then uses a flag iface->manual_stop to manually issue the STOP condition, once the required amount of bytes are received.
We found that on I2C receive operation issuing the STOP condition together with a FULL RCV FIFO (2bytes)
Will cause SDA and SCL be constantly driven low.
A simple workaround is to discard the RCV FIFO before writing the STOP condition.
--- Michael Hennerich 2010-07-23 04:27:16
I checked an temporary workaround into trunk and 2009R1 branch:
Discard the RCV FIFO before issuing the STOP condition.
--- Sonic Zhang 2010-08-26 01:17:15
I just add some improvement to stop receive operation immediately in last byte
rx interrupt. Also wake up waiting process only when transfer completes.
--- Rob Maris 2010-09-09 15:54:54
I'd enter this in order to point to my workaround and in order to automatically
obtain messages when something new is entered here. The pointer:
--- Sonic Zhang 2011-09-05 04:19:58
Reopen if you find new case to reproduce.
--- Sonic Zhang 2011-09-05 04:20:13
File Name File Type File Size Posted By
No Files Were Found