On Sat, Dec 20, 2008 at 11:35:51AM -0600, Kainan Cha wrote: > Balbi, > > I have also seen this issue once in a while but I am using 2.6.24 kernel. Do > you know which commits in the linux-omap git fixes this issue so I can > backport? Hmm, I suppose it's this one: commit 663715fc55ea5d292171c6934a2b91d8f4874171 Author: Paul Walmsley <paul@xxxxxxxxx> Date: Fri Oct 10 10:58:30 2008 -0600 i2c-omap: fix I2C timeouts due to recursive omap_i2c_{un,}idle() 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 <david-b@xxxxxxxxxxx>. Tested on 3430SDP and 2430SDP. But I'd say the changes to twl4030-core.c also helped and those will be nasty to backport :-p -- balbi -- 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