aboutsummaryrefslogtreecommitdiff
path: root/post/drivers
diff options
context:
space:
mode:
authorPeter Tyser2010-10-22 00:20:28 -0500
committerKumar Gala2010-10-22 02:18:36 -0500
commit7e263cea88995d0b4b9fb659a95c382128feca71 (patch)
treee38885f966f219c2ea1d516af6fcad511fdae52f /post/drivers
parentb9b1bc8542db5f26453c45db843903dee7056244 (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/drivers')
-rw-r--r--post/drivers/i2c.c29
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
}