--- zzzz-none-000/linux-2.6.19.2/drivers/i2c/busses/i2c-pxa.c 2007-01-10 19:10:37.000000000 +0000 +++ davinci-8020-5504/linux-2.6.19.2/drivers/i2c/busses/i2c-pxa.c 2007-01-11 07:38:19.000000000 +0000 @@ -272,8 +272,7 @@ dev_dbg(&i2c->adap.dev, "%s: %ld: ISR=%08x, ICR=%08x, IBMR=%02x\n", __func__, (long)jiffies, ISR, ICR, IBMR); - if ((ISR & (ISR_UB|ISR_IBB)) == 0 || - (ISR & ISR_SAD) != 0 || + if ((ISR & (ISR_UB|ISR_IBB|ISR_SAD)) == ISR_SAD || (ICR & ICR_SCLE) == 0) { if (i2c_debug > 1) dev_dbg(&i2c->adap.dev, "%s: done\n", __func__); @@ -493,10 +492,7 @@ if (isr & ISR_BED) { /* what should we do here? */ } else { - int ret = 0; - - if (i2c->slave != NULL) - ret = i2c->slave->read(i2c->slave->data); + int ret = i2c->slave->read(i2c->slave->data); IDBR = ret; ICR |= ICR_TB; /* allow next byte */