]> git.sur5r.net Git - u-boot/commitdiff
post/i2c: Don't probe address 0
authorPeter Tyser <ptyser@xes-inc.com>
Fri, 22 Oct 2010 05:20:29 +0000 (00:20 -0500)
committerKumar Gala <galak@kernel.crashing.org>
Fri, 22 Oct 2010 07:18:42 +0000 (02:18 -0500)
According to the I2C specification device address 0 is the "general call
address", ie a broadcast address.  The I2C specification states that the
format of a general call uses at least 2 bytes, which U-Boot's probing
routine does not adhere to.

Not probing device address 0 will prevent possible issues with devices
that accept general calls.  Additionally, this change shouldn't reduce
POST coverage since each I2C device should still be accessed via its
own, unique address.

Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
Acked-by: Heiko Schocher <hs@denx.de>
Acked-by: Wolfgang Denk <wd@denx.de>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
post/drivers/i2c.c

index 0cbbf77bb37138562f2cd63714331cb6e85a7a42..35081776b3cb8289a7f8e7b3d2c8b86e0765d07e 100644 (file)
@@ -44,7 +44,8 @@ int i2c_post_test (int flags)
 {
        unsigned int i;
 #ifndef I2C_ADDR_LIST
-       for (i = 0; i < 128; i++)
+       /* Start at address 1, address 0 is the general call address */
+       for (i = 1; i < 128; i++)
                if (i2c_probe (i) == 0)
                        return 0;
 
@@ -55,7 +56,8 @@ int i2c_post_test (int flags)
        int j;
        const unsigned char i2c_addr_list[] = I2C_ADDR_LIST;
 
-       for (i = 0; i < 128; i++) {
+       /* Start at address 1, address 0 is the general call address */
+       for (i = 1; i < 128; i++) {
                if (i2c_probe(i) != 0)
                        continue;