My customer reported that when he used his OMAP35xx I2C SW unchanged on the OMAP37xx the I2C would hang sometimes and fail to start on the EN write to the I2C_CON register.
Typically they would see a number of good completed transactions and then one that hangs the transmit loop waiting for the status register to return with I2C_STAT_ARDY set.
The software would setup some configuration stuff, then enable the write as follows:
OUTREG16(&pI2CRegs->CON, I2C_CON_EN | I2C_CON_STT | I2C_CON_TRX | I2C_CON_STP | possible other bits); /Start transaction
At this point the STAT register is poled waiting for ARDY, but when the failure happens the STAT register stays at zero forever and the I2C clock and data stay high. It is like the write to CON did not take. If we time out and retry it will usually work on the second try, but sometime it fails multiple times in a row.
This behavior was not seen on the omap35xx