diff options
| author | Peter Tyser <ptyser@xes-inc.com> | 2010-10-22 00:20:28 -0500 | 
|---|---|---|
| committer | Kumar Gala <galak@kernel.crashing.org> | 2010-10-22 02:18:36 -0500 | 
| commit | 7e263cea88995d0b4b9fb659a95c382128feca71 (patch) | |
| tree | e38885f966f219c2ea1d516af6fcad511fdae52f | |
| parent | b9b1bc8542db5f26453c45db843903dee7056244 (diff) | |
| download | olio-uboot-2014.01-7e263cea88995d0b4b9fb659a95c382128feca71.tar.xz olio-uboot-2014.01-7e263cea88995d0b4b9fb659a95c382128feca71.zip | |
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>
| -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 84a603549..0cbbf77bb 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  } |