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

Reply via email to