"Sudhakar Rajashekhara" <sudhakar.raj@xxxxxx> writes: > Hi, > > On Wed, Jan 27, 2010 at 05:11:28, Kevin Hilman wrote: >> From: Dirk Behme <dirk.behme@xxxxxxxxxxxxxx> >> >> This fixes Oops at kernel startup while "scanning" for TLV320AIC23IDx >> addresses. >> >> Signed-off-by: Alexander Vasiliev <alexvasiljev@xxxxxxxxx> >> Signed-off-by: Brad Griffis <bgriffis@xxxxxx> >> Signed-off-by: Dirk Behme <dirk.behme@xxxxxxxxx> >> Acked-by: Kevin Hilman <khilman@xxxxxxxxxx> >> --- >> drivers/i2c/busses/i2c-davinci.c | 29 +++++++++++++++++++++++++---- >> 1 files changed, 25 insertions(+), 4 deletions(-) >> >> diff --git a/drivers/i2c/busses/i2c-davinci.c b/drivers/i2c/busses/i2c-davinci.c >> index c89687a..444a9f2 100644 >> --- a/drivers/i2c/busses/i2c-davinci.c >> +++ b/drivers/i2c/busses/i2c-davinci.c > > [...] > >> @@ -290,6 +293,16 @@ i2c_davinci_xfer_msg(struct i2c_adapter *adap, struct i2c_msg *msg, int stop) >> davinci_i2c_write_reg(dev, DAVINCI_I2C_IMR_REG, w); >> >> dev->terminate = 0; >> + >> + /* First byte should be set here, not after interrupt, >> + * because transmit-data-ready interrupt can come before >> + * NACK-interrupt during sending of previous message and >> + * ICDXR may have wrong data */ >> + if ((!(msg->flags & I2C_M_RD)) && dev->buf_len) { >> + davinci_i2c_write_reg(dev, DAVINCI_I2C_DXR_REG, *dev->buf++); >> + dev->buf_len--; >> + } >> + > > I found an issue on DA850 while using this patch. ok, I'll drop this one for 2.6.34 until we figure this out. > I think the above code should come after the > below lines because an I2C transaction is being carried out before configuring the I2C mode > register (which has bits to configure Master, Start condition etc), which causes undefined > behavior. hmm, are you seeing this behavior on davinci git too? This is the same patch that has been in davinci git for some time? Kevin > >> /* write the data into mode register */ >> davinci_i2c_write_reg(dev, DAVINCI_I2C_MDR_REG, flag); >> > > Regards, > Sudhakar -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html