This is a bit of a niche question - but maybe someone from Broadcom/with more knowledge could help?
I'm using Chris Boot's i2c driver, seems to work fine looking on an oscilloscope.
However, I'm using it to talk to an LCD which isn't quite i2c compliant - it will never ACK, instead the datasheet says you should just ignore the N/ACK bit.
This is OK, because the linux driver architecture allows for "protocol mangling," and I have (I think) modified Chris' driver to work with the I2C_M_IGNORE_NAK option.
The problem is, it looks like the BSC aborts the transaction anyway - the driver code happily ignores the error, but the scope trace shows the address is transmitted, then a NACK (as expected) and then a stop condition.
The stop is unexpected - as the transfer is several bytes long. The peripherals datasheet we have  indicates that the ERR bit in the status register is set to indicate a NACK condition (which my driver code ignores), however makes no mention of whether the hardware aborts a transaction in this case.
Hopefully I've actually got the software wrong, but does anyone know of this hardware "feature?"
 http://www.designspark.com/files/ds/sup ... CM2835.pdf