mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-19 21:51:31 +00:00
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>
This commit is contained in:
parent
b9b1bc8542
commit
7e263cea88
1 changed files with 13 additions and 16 deletions
|
@ -51,38 +51,35 @@ int i2c_post_test (int flags)
|
||||||
/* No devices found */
|
/* No devices found */
|
||||||
return -1;
|
return -1;
|
||||||
#else
|
#else
|
||||||
unsigned int good = 0;
|
unsigned int ret = 0;
|
||||||
unsigned int bad = 0;
|
|
||||||
int j;
|
int j;
|
||||||
unsigned char i2c_addr_list[] = I2C_ADDR_LIST;
|
const unsigned char i2c_addr_list[] = I2C_ADDR_LIST;
|
||||||
unsigned char i2c_miss_list[] = I2C_ADDR_LIST;
|
|
||||||
|
|
||||||
for (i = 0; i < 128; i++) {
|
for (i = 0; i < 128; i++) {
|
||||||
if (i2c_probe(i) != 0)
|
if (i2c_probe(i) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (j = 0; j < sizeof(i2c_addr_list); ++j) {
|
for (j = 0; j < sizeof(i2c_addr_list); ++j) {
|
||||||
if (i == i2c_addr_list[j]) {
|
if (i == i2c_addr_list[j]) {
|
||||||
good++;
|
i2c_addr_list[j] = 0xff;
|
||||||
i2c_miss_list[j] = 0xFF;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (j == sizeof(i2c_addr_list)) {
|
if (j == sizeof(i2c_addr_list)) {
|
||||||
bad++;
|
ret = -1;
|
||||||
post_log("I2C: addr %02X not expected\n", i);
|
post_log("I2C: addr %02x not expected\n", i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (good != sizeof(i2c_addr_list)) {
|
for (i = 0; i < sizeof(i2c_addr_list); ++i) {
|
||||||
for (j = 0; j < sizeof(i2c_miss_list); ++j) {
|
if (i2c_addr_list[i] == 0xff)
|
||||||
if (i2c_miss_list[j] != 0xFF) {
|
continue;
|
||||||
post_log("I2C: addr %02X did not respond\n",
|
post_log("I2C: addr %02x did not respond\n", i2c_addr_list[i]);
|
||||||
i2c_miss_list[j]);
|
ret = -1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
return ret;
|
||||||
return ((good == sizeof(i2c_addr_list)) && (bad == 0)) ? 0 : -1;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue