[U-Boot] [PATCH 11/17] post/i2c: Clean up detection logic

Peter Tyser ptyser at xes-inc.com
Wed Sep 29 21:05:50 CEST 2010


The logic previously used in the I2C post was a bit convoluted.

Signed-off-by: Peter Tyser <ptyser at xes-inc.com>
CC: hs at denx.de
---
 post/drivers/i2c.c |   27 ++++++++++++---------------
 1 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/post/drivers/i2c.c b/post/drivers/i2c.c
index 84a6035..635438d 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;
 
 	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
 }
 
-- 
1.7.0.4



More information about the U-Boot mailing list