summaryrefslogtreecommitdiffstats
path: root/crypto/api.c
diff options
context:
space:
mode:
authorPaul Walmsley <paul@pwsan.com>2008-11-21 13:39:47 -0800
committerTony Lindgren <tony@atomide.com>2008-11-21 13:39:47 -0800
commit3831f154418e058616129942e8175dc4c7e4a1d8 (patch)
tree39373d541573f986cce29acd8b54f7e4584e11af /crypto/api.c
parentc1a473bde4c06e8e6996ce3a33121b7a9a86b4b9 (diff)
downloadkernel-crypto-3831f154418e058616129942e8175dc4c7e4a1d8.tar.gz
kernel-crypto-3831f154418e058616129942e8175dc4c7e4a1d8.tar.xz
kernel-crypto-3831f154418e058616129942e8175dc4c7e4a1d8.zip
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@pacbell.net>. Tested on 3430SDP and 2430SDP. Signed-off-by: Paul Walmsley <paul@pwsan.com> Cc: David Brownell <david-b@pacbell.net> Cc: Richard Woodruff <r-woodruff2@ti.com> Acked-by; Steve Sakoman <steve@sakoman.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'crypto/api.c')
0 files changed, 0 insertions, 0 deletions