diff options
Diffstat (limited to 'post/drivers/i2c.c')
| -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 b152deaf6..84a603549 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]);  			}  		} |