* Allow to call sysmon function interactively

* PIC on LWMON board needs delay after power-on
* Add missing RSR definitions for MPC8xx
* Improve log buffer handling: guarantee clean reset after power-on
This commit is contained in:
wdenk
2003-06-28 09:10:42 +00:00
parent ef0630617e
commit ed579b4210
7 changed files with 68 additions and 67 deletions

View File

@@ -2,6 +2,14 @@
Changes since U-Boot 0.4.0:
======================================================================
* Allow to call sysmon function interactively
* PIC on LWMON board needs delay after power-on
* Add missing RSR definitions for MPC8xx
* Improve log buffer handling: guarantee clean reset after power-on
* Add support for EXBITGEN board
* Add support for SL8245 board

View File

@@ -38,6 +38,7 @@ V* Verification: dzu@denx.de
#include <commproc.h>
#include <i2c.h>
#include <command.h>
#include <cmd_bsp.h>
#include <malloc.h>
#include <post.h>
@@ -72,9 +73,9 @@ const uint sdram_table[] =
/*
* SDRAM Initialization (offset 5 in UPM RAM)
*
* This is no UPM entry point. The following definition uses
* the remaining space to establish an initialization
* sequence, which is executed by a RUN command.
* This is no UPM entry point. The following definition uses
* the remaining space to establish an initialization
* sequence, which is executed by a RUN command.
*
*/
0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
@@ -120,9 +121,9 @@ const uint sdram_table[] =
/*
* SDRAM Initialization (offset 5 in UPM RAM)
*
* This is no UPM entry point. The following definition uses
* the remaining space to establish an initialization
* sequence, which is executed by a RUN command.
* This is no UPM entry point. The following definition uses
* the remaining space to establish an initialization
* sequence, which is executed by a RUN command.
*
*/
0x1FF5FC34, 0xEFEABC34, 0x1FB57C35, /* last */
@@ -131,7 +132,7 @@ const uint sdram_table[] =
*/
0x0E2DBC04, 0x10AF7C04, 0xF0AFFC00, 0xF0AFFC00,
0xF1AFFC00, 0xEFBAFC00, 0x1FF5FC47, /* last */
_NOT_USED_,
_NOT_USED_,
_NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
_NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
/*
@@ -145,7 +146,7 @@ const uint sdram_table[] =
*/
0x0E29BC04, 0x10A77C00, 0xF0AFFC00, 0xF0AFFC00,
0xE1BAFC04, 0x1FF5FC47, /* last */
_NOT_USED_, _NOT_USED_,
_NOT_USED_, _NOT_USED_,
_NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
_NOT_USED_, _NOT_USED_, _NOT_USED_, _NOT_USED_,
/*
@@ -510,9 +511,12 @@ static void kbd_init (void)
int i;
i2c_init (CFG_I2C_SPEED, CFG_I2C_SLAVE);
gd->kbd_status = 0;
/* Forced by PIC. Delays <= 175us loose */
udelay(1000);
/* Read initial keyboard error code */
val = KEYBD_CMD_READ_STATUS;
i2c_write (kbd_addr, 0, 0, &val, 1);
@@ -542,13 +546,13 @@ static void kbd_init (void)
/*
* Read current keyboard state.
*
* After the error reset it may take some time before the
* keyboard PIC picks up a valid keyboard scan - the total
* scan time is approx. 1.6 ms (information by Martin Rajek,
* 28 Sep 2002). We read a couple of times for the keyboard
* to stabilize, using a big enough delay.
* 10 times should be enough. If the data is still changing,
* we use what we get :-(
* After the error reset it may take some time before the
* keyboard PIC picks up a valid keyboard scan - the total
* scan time is approx. 1.6 ms (information by Martin Rajek,
* 28 Sep 2002). We read a couple of times for the keyboard
* to stabilize, using a big enough delay.
* 10 times should be enough. If the data is still changing,
* we use what we get :-(
*/
memset (tmp_data, 0xFF, KEYBD_DATALEN); /* impossible value */
@@ -848,12 +852,6 @@ int do_pic (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
printf ("Usage:\n%s\n", cmdtp->usage);
return 1;
}
cmd_tbl_t U_BOOT_CMD(pic) = MK_CMD_ENTRY(
"pic", 4, 1, do_pic,
"pic - read and write PIC registers\n",
"read reg - read PIC register `reg'\n"
"pic write reg val - write value `val' to PIC register `reg'\n"
);
/***********************************************************************
F* Function: int do_kbd (cmd_tbl_t *cmdtp, int flag,
@@ -907,12 +905,6 @@ int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return 0;
}
cmd_tbl_t U_BOOT_CMD(kdb) = MK_CMD_ENTRY(
"kbd", 1, 1, do_kbd,
"kbd - read keyboard status\n",
NULL
);
/* Read and set LSB switch */
#define CFG_PC_TXD1_ENA 0x0008 /* PC.12 */
@@ -979,14 +971,6 @@ int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return 1;
}
cmd_tbl_t U_BOOT_CMD(lsb) = MK_CMD_ENTRY(
"lsb", 2, 1, do_lsb,
"lsb - check and set LSB switch\n",
"on - switch LSB on\n"
"lsb off - switch LSB off\n"
"lsb - print current setting\n"
);
#endif /* CFG_CMD_BSP */
/*----------------------------- Utilities -----------------------------*/

View File

@@ -74,18 +74,24 @@ static unsigned long *ext_logged_chars;
void logbuff_init_ptrs (void)
{
DECLARE_GLOBAL_DATA_PTR;
unsigned long *ext_tag;
char *s;
log_buf = (unsigned char *)(gd->bd->bi_memsize-LOGBUFF_LEN);
ext_tag = (unsigned long *)(log_buf)-4;
ext_log_start = (unsigned long *)(log_buf)-3;
ext_log_size = (unsigned long *)(log_buf)-2;
ext_logged_chars = (unsigned long *)(log_buf)-1;
if (*ext_tag!=LOGBUFF_MAGIC) {
#ifdef CONFIG_POST
/* The post routines have setup the word so we can simply test it */
if (post_word_load () & POST_POWERON) {
logged_chars = log_size = log_start = 0;
*ext_tag = LOGBUFF_MAGIC;
}
#else
/* No post routines, so we do our own checking */
if (post_word_load () != LOGBUFF_MAGIC) {
logged_chars = log_size = log_start = 0;
post_word_store (LOGBUFF_MAGIC);
}
#endif
/* Initialize default loglevel if present */
if ((s = getenv ("loglevel")) != NULL)
console_loglevel = (int)simple_strtoul (s, NULL, 10);
@@ -195,16 +201,7 @@ int do_log (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return 1;
}
}
#if defined(CONFIG_LOGBUFFER)
cmd_tbl_t U_BOOT_CMD(LOG) = MK_CMD_ENTRY(
"log", 255, 1, do_log,
"log - manipulate logbuffer\n",
"log info - show pointer details\n"
"log reset - clear contents\n"
"log show - show contents\n"
"log append <msg> - append <msg> to the logbuffer\n"
);
#endif /* CONFIG_LOGBUFFER */
static int logbuff_printk(const char *line)
{
int i;

View File

@@ -188,7 +188,7 @@ m8260_cpm_extcbrg(uint brg, uint rate, uint extclk, int pinsel)
*bp |= CPM_BRG_EXTC_CLK5_15;
}
#ifdef CONFIG_POST
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
void post_word_store (ulong a)
{
@@ -206,4 +206,4 @@ ulong post_word_load (void)
return *save_addr;
}
#endif /* CONFIG_POST */
#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/

View File

@@ -91,7 +91,7 @@ uint dpram_base_align (uint align)
}
#endif /* CFG_ALLOC_DPRAM */
#ifdef CONFIG_POST
#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)
void post_word_store (ulong a)
{
@@ -109,4 +109,4 @@ ulong post_word_load (void)
return *(volatile ulong *) save_addr;
}
#endif /* CONFIG_POST */
#endif /* CONFIG_POST || CONFIG_LOGBUFFER*/

View File

@@ -117,6 +117,20 @@
#define PISCR_PTE 0x0001 /* Periodic Timer Enable */
#endif
/*-----------------------------------------------------------------------
* RSR - Reset Status Register 5-4
*/
#define RSR_JTRS 0x01000000 /* JTAG Reset Status */
#define RSR_DBSRS 0x02000000 /* Debug Port Soft Reset Status */
#define RSR_DBHRS 0x04000000 /* Debug Port Hard Reset Status */
#define RSR_CSRS 0x08000000 /* Check Stop Reset Status */
#define RSR_SWRS 0x10000000 /* Software Watchdog Reset Status*/
#define RSR_LLRS 0x20000000 /* Loss-of-Lock Reset Status */
#define RSR_ESRS 0x40000000 /* External Soft Reset Status */
#define RSR_EHRS 0x80000000 /* External Hard Reset Status */
#define RSR_ALLBITS (RSR_JTRS|RSR_DBSRS|RSR_DBHRS|RSR_CSRS|RSR_SWRS|RSR_LLRS|RSR_ESRS|RSR_EHRS)
/*-----------------------------------------------------------------------
* PLPRCR - PLL, Low-Power, and Reset Control Register 15-30
*/

View File

@@ -32,7 +32,7 @@
* This test performs the system hardware monitoring.
* The test passes when all the following voltages and temperatures
* are within allowed ranges:
*
*
* Board temperature
* Front temperature
* +3.3V CPU logic
@@ -40,7 +40,7 @@
* +12V PCMCIA
* +12V CCFL
* +5V standby
*
*
* CCFL is not enabled if temperature values are not within allowed ranges
*
* See the list off all parameters in the sysmon_table below
@@ -150,7 +150,7 @@ int sysmon_init_f (void)
{
(*l)->init(*l);
}
return 0;
}
@@ -185,24 +185,24 @@ static char * sysmon_unit_value (sysmon_table_t * s, uint val)
int dec, frac;
sprintf(buf, "%+d", unit_val / s->unit_div);
frac = (unit_val > 0 ? unit_val : -unit_val) % s->unit_div;
p = buf + strlen(buf);
dec = s->unit_div;
if (dec != 1)
{
*p++ = '.';
}
for (dec /= 10; dec != 0; dec /= 10)
{
*p++ = '0' + frac / dec % 10;
}
strcpy(p, s->unit_name);
return buf;
}
@@ -217,7 +217,7 @@ static void sysmon_lm87_init (sysmon_t * this)
printf("Error: LM87 not found at 0x%02X\n", this->chip);
return;
}
/* Configure pins 5,6 as AIN */
val = 0x03;
if (i2c_write(this->chip, 0x16, 1, &val, 1))
@@ -306,9 +306,7 @@ int sysmon_post_test (int flags)
t->exec_after(t);
}
#ifndef DEBUG
if (!t->val_valid)
#endif
if ((!t->val_valid) || (flags & POST_MANUAL))
{
printf("%-17s = %-10s ", t->name, sysmon_unit_value(t, val));
printf("allowed range");