From 15f36a5efd31fe608b43dc197ebbd80d3cecbe44 Mon Sep 17 00:00:00 2001 From: Wolfgang Denk Date: Thu, 28 Jul 2005 10:42:26 +0200 Subject: [PATCH] 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. --- CHANGELOG | 5 +++++ post/sysmon.c | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index bde6eafea..35c396939 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 8758ccdc0..72fcac385 100644 --- a/post/sysmon.c +++ b/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);