[#6136] Illegal i2c bus lock upon certain transfer scenarios
Submitted By: Michael Hennerich
Open Date
2010-07-23 04:12:23
Priority:
Medium High Assignee:
Sonic Zhang
Status:
Open Fixed In Release:
N/A
Found In Release:
2009R1.1-RC4 Release:
Category:
Drivers Board:
STAMP
Processor:
BF527 Silicon Revision:
Is this bug repeatable?:
Yes Resolution:
Fixed
Uboot version or rev.:
Toolchain version or rev.:
trunk
App binary format:
N/A
Summary: Illegal i2c bus lock upon certain transfer scenarios
Details:
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.
Follow-ups
--- 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
Mark fixed.
Reopen if you find new case to reproduce.
--- Sonic Zhang 2011-09-05 04:20:13
Mark fixed.
Reopen if you find new case to reproduce.
Files
Changes
Commits
Dependencies
Duplicates
Associations
Tags
File Name File Type File Size Posted By
No Files Were Found