On Fri, Oct 10, 2008 at 9:58 AM, Paul Walmsley <[EMAIL PROTECTED]> wrote: > > omap_i2c_unidle() and omap_i2c_idle() are called recursively during > omap_i2c_probe(). This is evidently unexpected and will wipe > out the I2C interrupt enable register the second time that > omap_i2c_idle() is called consecutively. Any I2C transactions > following a probe of a bus with at least one device on it will then > time out. > > Fix by moving omap_i2c_idle() further up in omap_i2c_probe(). Ensure > the I2C controller is marked as idle before the probe starts. Also > attempt to catch future reappearances of this bug early in development > by warning in omap_i2c_{un,}idle() when they are called recursively. > > Problem reported by David Brownell <[EMAIL PROTECTED]>. > > Tested on 3430SDP and 2430SDP. > > Signed-off-by: Paul Walmsley <[EMAIL PROTECTED]> > Cc: David Brownell <[EMAIL PROTECTED]> > Cc: Richard Woodruff <[EMAIL PROTECTED]>
I can confirm that this patch eliminates the i2c timeout issues on Overo. Acked-by; Steve Sakoman <[EMAIL PROTECTED]> -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html