summaryrefslogtreecommitdiff
path: root/drivers/i2c
diff options
context:
space:
mode:
authorSteve Sakoman <steve@sakoman.com>2010-10-22 13:48:00 -0700
committerHeiko Schocher <hs@denx.de>2010-10-25 07:57:20 +0200
commit4df66894954ec6411d22e3a86070014d74bafb5c (patch)
treefd5454565fed37df3425a5d0f795498322240a5a /drivers/i2c
parentfff6ec382c139eb242bd85356e66a0bc43becb63 (diff)
downloadu-boot-imx-4df66894954ec6411d22e3a86070014d74bafb5c.zip
u-boot-imx-4df66894954ec6411d22e3a86070014d74bafb5c.tar.gz
u-boot-imx-4df66894954ec6411d22e3a86070014d74bafb5c.tar.bz2
ARMV7: OMAP: I2C driver: Fix bug found in 37XX testing
On OMAP36/37XX the standard on chip pullups are not sufficient to ensure proper i2c operation without external pullups or switching to high speed mode and enabling special on chip pullups. This is an issue for Beagle xM, which does not have external pullups on the expansion board i2c lines. The issue manifests itself as an AL (arbitration lost) error when probing for a non-existent device (i.e. on a Beagle xM with no expansion boards attached). This issue does not occur on expansion boards that include pullups or on Overo 37XX COM's since they include pull-ups. This patch fixes the issue by checking for the AL bit in the i2c_probe function. Signed-off-by: Steve Sakoman <steve.sakoman@linaro.org>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/omap24xx_i2c.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c
index a72d1a1..fab49fd 100644
--- a/drivers/i2c/omap24xx_i2c.c
+++ b/drivers/i2c/omap24xx_i2c.c
@@ -329,7 +329,7 @@ int i2c_probe (uchar chip)
while (1) {
status = wait_for_pin();
- if (status == 0) {
+ if (status == 0 || status & I2C_STAT_AL) {
res = 1;
goto probe_exit;
}