|
|
|
@ -25,8 +25,6 @@ |
|
|
|
|
#include <post.h> |
|
|
|
|
#include <common.h> |
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_POST |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* SYSMON test |
|
|
|
|
* |
|
|
|
@ -34,9 +32,9 @@ |
|
|
|
|
* The test passes when all the following voltages and temperatures |
|
|
|
|
* are within allowed ranges: |
|
|
|
|
* |
|
|
|
|
* Temperature -40 .. +85 C |
|
|
|
|
* +5V +4.75 .. +5.25 V |
|
|
|
|
* +5V standby +4.75 .. +5.25 V |
|
|
|
|
* Temperature -40 .. +85 C |
|
|
|
|
* +5V +4.75 .. +5.25 V |
|
|
|
|
* +5V standby +4.75 .. +5.25 V |
|
|
|
|
* |
|
|
|
|
* LCD backlight is not enabled if temperature values are not within |
|
|
|
|
* allowed ranges (-30 .. + 80). The brightness of backlite can be |
|
|
|
@ -58,7 +56,7 @@ |
|
|
|
|
DECLARE_GLOBAL_DATA_PTR; |
|
|
|
|
|
|
|
|
|
/* from dspic.c */ |
|
|
|
|
extern int dspic_read(ushort reg, ushort *data); |
|
|
|
|
extern int dspic_read(ushort reg); |
|
|
|
|
|
|
|
|
|
#define RELOC(x) if (x != NULL) x = (void *) ((ulong) (x) + gd->reloc_off) |
|
|
|
|
|
|
|
|
@ -67,7 +65,6 @@ typedef struct sysmon_table_s sysmon_table_t; |
|
|
|
|
|
|
|
|
|
static void sysmon_dspic_init (sysmon_t * this); |
|
|
|
|
static int sysmon_dspic_read (sysmon_t * this, uint addr); |
|
|
|
|
static int sysmon_dspic_read_sgn (sysmon_t * this, uint addr); |
|
|
|
|
static void sysmon_backlight_disable (sysmon_table_t * this); |
|
|
|
|
|
|
|
|
|
struct sysmon_s |
|
|
|
@ -80,13 +77,9 @@ struct sysmon_s |
|
|
|
|
static sysmon_t sysmon_dspic = |
|
|
|
|
{CFG_I2C_DSPIC_IO_ADDR, sysmon_dspic_init, sysmon_dspic_read}; |
|
|
|
|
|
|
|
|
|
static sysmon_t sysmon_dspic_sgn = |
|
|
|
|
{CFG_I2C_DSPIC_IO_ADDR, sysmon_dspic_init, sysmon_dspic_read_sgn}; |
|
|
|
|
|
|
|
|
|
static sysmon_t * sysmon_list[] = |
|
|
|
|
{ |
|
|
|
|
&sysmon_dspic, |
|
|
|
|
&sysmon_dspic_sgn, |
|
|
|
|
NULL |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
@ -114,17 +107,17 @@ struct sysmon_table_s |
|
|
|
|
|
|
|
|
|
static sysmon_table_t sysmon_table[] = |
|
|
|
|
{ |
|
|
|
|
{"Temperature", " C", &sysmon_dspic_sgn, NULL, sysmon_backlight_disable, |
|
|
|
|
{"Temperature", " C", &sysmon_dspic, NULL, sysmon_backlight_disable, |
|
|
|
|
1, 1, -32768, 32767, 0xFFFF, 0x8000-40, 0x8000+85, 0, |
|
|
|
|
0x8000-30, 0x8000+80, 0, 0x12BC}, |
|
|
|
|
0x8000-30, 0x8000+80, 0, 0x12BC}, |
|
|
|
|
|
|
|
|
|
{"+ 5 V", "V", &sysmon_dspic, NULL, NULL, |
|
|
|
|
100, 1000, 0, 0xFFFF, 0xFFFF, 4750, 5250, 0, |
|
|
|
|
4750, 5250, 0, 0x12CA}, |
|
|
|
|
100, 1000, -0x8000, 0x7FFF, 0xFFFF, 0x8000+4750, 0x8000+5250, 0, |
|
|
|
|
0x8000+4750, 0x8000+5250, 0, 0x12CA}, |
|
|
|
|
|
|
|
|
|
{"+ 5 V standby", "V", &sysmon_dspic, NULL, NULL, |
|
|
|
|
100, 1000, 0, 0xFFFF, 0xFFFF, 4750, 5250, 0, |
|
|
|
|
4750, 5250, 0, 0x12C6}, |
|
|
|
|
100, 1000, -0x8000, 0x7FFF, 0xFFFF, 0x8000+4750, 0x8000+5250, 0, |
|
|
|
|
0x8000+4750, 0x8000+5250, 0, 0x12C6}, |
|
|
|
|
}; |
|
|
|
|
static int sysmon_table_size = sizeof(sysmon_table) / sizeof(sysmon_table[0]); |
|
|
|
|
|
|
|
|
@ -161,7 +154,9 @@ static char *sysmon_unit_value (sysmon_table_t *s, uint val) |
|
|
|
|
static char buf[32]; |
|
|
|
|
char *p, sign; |
|
|
|
|
int decimal, frac; |
|
|
|
|
int unit_val = |
|
|
|
|
int unit_val; |
|
|
|
|
|
|
|
|
|
unit_val = |
|
|
|
|
s->unit_min + (s->unit_max - s->unit_min) * val / s->val_mask; |
|
|
|
|
|
|
|
|
|
if (val == -1) |
|
|
|
@ -197,18 +192,10 @@ static void sysmon_dspic_init (sysmon_t * this) |
|
|
|
|
|
|
|
|
|
static int sysmon_dspic_read (sysmon_t * this, uint addr) |
|
|
|
|
{ |
|
|
|
|
ushort data; |
|
|
|
|
|
|
|
|
|
return (dspic_read(addr, &data)) ? -1 : data; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int sysmon_dspic_read_sgn (sysmon_t * this, uint addr) |
|
|
|
|
{ |
|
|
|
|
ushort data; |
|
|
|
|
int res = dspic_read(addr); |
|
|
|
|
|
|
|
|
|
/* To fit into the table range we should add 0x8000 */ |
|
|
|
|
return (dspic_read(addr, &data)) ? -1 : |
|
|
|
|
(signed short)data + 0x8000; |
|
|
|
|
return (res == -1) ? -1 : (res + 0x8000); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void sysmon_backlight_disable (sysmon_table_t * this) |
|
|
|
@ -256,4 +243,3 @@ int sysmon_post_test (int flags) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endif /* CONFIG_POST & CFG_POST_SYSMON */ |
|
|
|
|
#endif /* CONFIG_POST */ |
|
|
|
|