
On 7/22/05, Thomas Kastner thomas.kastner@marekmicro.de wrote:
Andrew Dyer wrote:
I am working with the soft i2c code on my target and I believe there is a problem in the send_ack() function.
[snip]
In my case changing the order to:
I2C_SCL(0); I2C_DELAY; I2C_ACTIVE;
I ported U-Boot to the AT91M55800A (ARM7DTMI) which has multi-driver capable GPIOs, but didn't want to spend the time to change the I2C code and left the ACTIVE/TRISTATE mechanism - and also came across the same problem. A 24C08 worked fine, but e.g. a ADV7181 would only give me a few consecutive reads.
So yes, I can confirm there is a problem and also that the above mentioned fix is OK.
Ok, here's a patch for the queue.
ChangeLog:
change the sequence of events in soft_i2c.c:send_ack() to keep from incorrectly generating start/stop conditions on the bus.