diff options
author | Paul Walmsley <[email protected]> | 2008-11-21 13:39:47 -0800 |
---|---|---|
committer | Tony Lindgren <[email protected]> | 2008-11-21 13:39:47 -0800 |
commit | 3831f154418e058616129942e8175dc4c7e4a1d8 (patch) | |
tree | 39373d541573f986cce29acd8b54f7e4584e11af /lib/string_helpers.c | |
parent | c1a473bde4c06e8e6996ce3a33121b7a9a86b4b9 (diff) |
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 <[email protected]>.
Tested on 3430SDP and 2430SDP.
Signed-off-by: Paul Walmsley <[email protected]>
Cc: David Brownell <[email protected]>
Cc: Richard Woodruff <[email protected]>
Acked-by; Steve Sakoman <[email protected]>
Signed-off-by: Tony Lindgren <[email protected]>
Diffstat (limited to 'lib/string_helpers.c')
0 files changed, 0 insertions, 0 deletions