Преглед изворни кода

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.

Wolfgang Denk пре 20 година
родитељ
комит
15f36a5efd
2 измењених фајлова са 16 додато и 2 уклоњено
  1. 5 0
      CHANGELOG
  2. 11 2
      post/sysmon.c

+ 5 - 0
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"
 

+ 11 - 2
post/sysmon.c

@@ -185,6 +185,10 @@ static char *sysmon_unit_value (sysmon_table_t *s, uint val)
 	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 @@ int sysmon_post_test (int flags)
 		}
 
 		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);