diff options
author | Peter Tyser | 2010-10-22 00:20:28 -0500 |
---|---|---|
committer | Kumar Gala | 2010-10-22 02:18:36 -0500 |
commit | 7e263cea88995d0b4b9fb659a95c382128feca71 (patch) | |
tree | e38885f966f219c2ea1d516af6fcad511fdae52f /post | |
parent | b9b1bc8542db5f26453c45db843903dee7056244 (diff) |
post/i2c: Clean up detection logic
The logic previously used in the I2C post was a bit convoluted.
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>
Diffstat (limited to 'post')
-rw-r--r-- | post/drivers/i2c.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/post/drivers/i2c.c b/post/drivers/i2c.c index 84a603549d4..0cbbf77bb37 100644 --- a/post/drivers/i2c.c +++ b/post/drivers/i2c.c @@ -51,38 +51,35 @@ int i2c_post_test (int flags) /* No devices found */ return -1; #else - unsigned int good = 0; - unsigned int bad = 0; + unsigned int ret = 0; int j; - unsigned char i2c_addr_list[] = I2C_ADDR_LIST; - unsigned char i2c_miss_list[] = I2C_ADDR_LIST; + const unsigned char i2c_addr_list[] = I2C_ADDR_LIST; for (i = 0; i < 128; 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; + i2c_addr_list[j] = 0xff; break; } } if (j == sizeof(i2c_addr_list)) { - bad++; - post_log("I2C: addr %02X not expected\n", i); + ret = -1; + post_log("I2C: addr %02x not expected\n", i); } } - if (good != sizeof(i2c_addr_list)) { - for (j = 0; j < sizeof(i2c_miss_list); ++j) { - if (i2c_miss_list[j] != 0xFF) { - post_log("I2C: addr %02X did not respond\n", - i2c_miss_list[j]); - } - } + for (i = 0; i < sizeof(i2c_addr_list); ++i) { + if (i2c_addr_list[i] == 0xff) + continue; + post_log("I2C: addr %02x did not respond\n", i2c_addr_list[i]); + ret = -1; } - return ((good == sizeof(i2c_addr_list)) && (bad == 0)) ? 0 : -1; + + return ret; #endif } |