summaryrefslogtreecommitdiff
path: root/post/drivers/i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'post/drivers/i2c.c')
-rw-r--r--post/drivers/i2c.c48
1 files changed, 23 insertions, 25 deletions
diff --git a/post/drivers/i2c.c b/post/drivers/i2c.c
index b152dea..84a6035 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]);
}
}