Fix sysmon POST problem: check I2C error codes
This fixes a problem of displaying bogus voltages when the voltages
are so low that the I2C devices start failing while the rest of the
system keeps running.
diff --git a/CHANGELOG b/CHANGELOG
index bde6eaf..35c3969 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,11 @@
Changes for U-Boot 1.1.3:
======================================================================
+* Fix sysmon POST problem: check I2C error codes
+ This fixes a problem of displaying bogus voltages when the voltages
+ are so low that the I2C devices start failing while the rest of the
+ system keeps running.
+
* Patch by Cedric Vincent, 6 Jul 2005:
Fix CFG_CMD_SETGETDCR handling in "common/cmd_dcr.c"
diff --git a/post/sysmon.c b/post/sysmon.c
index 8758ccd..72fcac3 100644
--- a/post/sysmon.c
+++ b/post/sysmon.c
@@ -185,6 +185,10 @@
char *p, sign;
int dec, frac;
+ if (val == -1) {
+ return "I/O ERROR";
+ }
+
if (unit_val < 0) {
sign = '-';
unit_val = -unit_val;
@@ -297,8 +301,13 @@
}
val = t->sysmon->read(t->sysmon, t->addr);
- t->val_valid = val >= t->val_min && val <= t->val_max;
- t->val_valid_alt = val >= t->val_min_alt && val <= t->val_max_alt;
+ if (val != -1) {
+ t->val_valid = val >= t->val_min && val <= t->val_max;
+ t->val_valid_alt = val >= t->val_min_alt && val <= t->val_max_alt;
+ } else {
+ t->val_valid = 0;
+ t->val_valid_alt = 0;
+ }
if (t->exec_after) {
t->exec_after(t);