I2c_dw_handle_tx_abort: lost arbitration

I ran across this one the other day while working on a user-space I2C configuration tool for I2S codecs that runs on a Duo64 on SDK V2. I’m using ioctl() calls in C from userspace to the I2C bus device and after a few SMB write transactions I’d get the above in the system log. If I did many more I2C writes then the bus will begin to fail and eventually lock up completely and need a power cycle to recover. I found that inserting a few ms delay between each I2C bus transaction I could delay the time at which that first notice appears in the syslog and also prevent the bus errors & hangup. I don’t think it’s the I2C codec device that I’m targeting that causes this, and the bus errors seem to happen regardless of the target address so I’m thinking it’s something weird going on in the I2C kernel driver.

I did see that there are a few other topics similar to this in the forum but they don’t seem to track the specific case I’m in but seemed more related to Arduino code. Just wondering if anyone else has had difficulties with I2C on the Duo/Duo256

1 Like