diff options
Diffstat (limited to 'post')
-rw-r--r-- | post/drivers/i2c.c | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/post/drivers/i2c.c b/post/drivers/i2c.c index b152deaf6a..84a603549d 100644 --- a/post/drivers/i2c.c +++ b/post/drivers/i2c.c @@ -21,8 +21,6 @@ * MA 02111-1307 USA */ -#include <common.h> - /* * I2C test * @@ -36,6 +34,7 @@ * #endif */ +#include <common.h> #include <post.h> #include <i2c.h> @@ -44,42 +43,41 @@ int i2c_post_test (int flags) { unsigned int i; +#ifndef I2C_ADDR_LIST + for (i = 0; i < 128; i++) + if (i2c_probe (i) == 0) + return 0; + + /* No devices found */ + return -1; +#else unsigned int good = 0; -#ifdef I2C_ADDR_LIST unsigned int bad = 0; int j; unsigned char i2c_addr_list[] = I2C_ADDR_LIST; unsigned char i2c_miss_list[] = I2C_ADDR_LIST; -#endif for (i = 0; i < 128; i++) { - if (i2c_probe (i) == 0) { -#ifndef I2C_ADDR_LIST - good++; -#else /* I2C_ADDR_LIST */ - for (j=0; j<sizeof(i2c_addr_list); ++j) { - if (i == i2c_addr_list[j]) { - good++; - i2c_miss_list[j] = 0xFF; - break; - } - } - if (j == sizeof(i2c_addr_list)) { - bad++; - post_log ("I2C: addr %02X not expected\n", - i); + if (i2c_probe(i) != 0) + continue; + for (j = 0; j < sizeof(i2c_addr_list); ++j) { + if (i == i2c_addr_list[j]) { + good++; + i2c_miss_list[j] = 0xFF; + break; } -#endif /* I2C_ADDR_LIST */ + } + + if (j == sizeof(i2c_addr_list)) { + bad++; + post_log("I2C: addr %02X not expected\n", i); } } -#ifndef I2C_ADDR_LIST - return good > 0 ? 0 : -1; -#else /* I2C_ADDR_LIST */ if (good != sizeof(i2c_addr_list)) { - for (j=0; j<sizeof(i2c_miss_list); ++j) { + for (j = 0; j < sizeof(i2c_miss_list); ++j) { if (i2c_miss_list[j] != 0xFF) { - post_log ("I2C: addr %02X did not respond\n", + post_log("I2C: addr %02X did not respond\n", i2c_miss_list[j]); } } |