* Allow to call sysmon function interactively LABEL_2003_06_28_1800-stable
authorwdenk <wdenk>
Sat, 28 Jun 2003 09:10:42 +0000 (09:10 +0000)
committerwdenk <wdenk>
Sat, 28 Jun 2003 09:10:42 +0000 (09:10 +0000)
* 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

CHANGELOG
board/lwmon/lwmon.c
common/cmd_log.c
cpu/mpc8260/commproc.c
cpu/mpc8xx/commproc.c
include/mpc8xx.h
post/sysmon.c

index eaa5cc326c87e3159ec2e6d5b52ce61c813e2c9e..513d04ab6b1dc6ea54fcaa65add6f5bec65a69b2 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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
index b359ec758d100e615e84a4c0ff8f61e04916242f..f1544ae38ef10af19f3120ee061fd5082bcc6ed6 100644 (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 -----------------------------*/
index b07dc7533c6f260bb8e9b40edc7150bf732f2934..ce414b16ddb3395f6a3d05ea60099d95388d134c 100644 (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;
index dcbffc4412a46a8a42c03be8ef0f259e305b6750..c523ee4dca70dc26f76d06c806f7c31e7df5f8e4 100644 (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*/
index 62a4458a5ea63de9d40784f735ec67784c230674..37c72a7273ee3700e46ba821afb4b455189b3266 100644 (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*/
index ef6d3f7dd95763308b5d85753f54d3e7232862e7..1a65f10ca2950404881eabb0d6efc636ea29644d 100644 (file)
 #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
  */
index 30a5cb20a7d1398a3011cd20101a54b7f645aa7e..3d77bce3538d1dbba6e436bb6b664e1cf0fb25de 100644 (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");