Adapt board configuration and fix kernel crash on MCC200 board.
authorWolfgang Denk <wd@denx.de>
Sun, 12 Aug 2007 13:11:38 +0000 (15:11 +0200)
committerWolfgang Denk <wd@denx.de>
Sun, 12 Aug 2007 13:11:38 +0000 (15:11 +0200)
The update procedure was modified to turn off the USB subsystem
before exit for MCC200 and TRAB. This is necessary as otherwise the
USB controller continues to write periodically to system memory!

MCC200-specific notes:
- the patch disables the magic key check for MCC200
- the patch contains the configuration changes made
  for the new revision of the board.

Signed-off-by: Sergei Poselenov <sposelenov@emcraft.com>
Signed-off-by: Wolfgang Denk <wd@denx.de>
board/mcc200/auto_update.c
board/trab/auto_update.c
include/configs/mcc200.h

index 6044565ff043fac540d9c11437dd85cbb6bc3920..28e4c877b538fe0d6dae5746861fa0a9f6823627 100644 (file)
@@ -330,6 +330,8 @@ int do_auto_update(void)
        int i, res = 0, bitmap_first, cnt, old_ctrlc, got_ctrlc;
        char *env;
        long start, end;
+
+#if 0 /* disable key-press detection to speed up boot-up time */
        uchar keypad_status1[2] = {0,0}, keypad_status2[2] = {0,0};
 
        /*
@@ -347,6 +349,7 @@ int do_auto_update(void)
                return 0;
        }
 
+#endif
        au_usb_stor_curr_dev = -1;
        /* start USB */
        if (usb_stop() < 0) {
@@ -364,18 +367,21 @@ int do_auto_update(void)
        au_usb_stor_curr_dev = usb_stor_scan(0);
        if (au_usb_stor_curr_dev == -1) {
                debug ("No device found. Not initialized?\n");
-               return -1;
+               res = -1;
+               goto xit;
        }
        /* check whether it has a partition table */
        stor_dev = get_dev("usb", 0);
        if (stor_dev == NULL) {
                debug ("uknown device type\n");
-               return -1;
+               res = -1;
+               goto xit;
        }
        if (fat_register_device(stor_dev, 1) != 0) {
                debug ("Unable to use USB %d:%d for fatls\n",
                        au_usb_stor_curr_dev, 1);
-               return -1;
+               res = -1;
+               goto xit;
        }
        if (file_fat_detectfs() != 0) {
                debug ("file_fat_detectfs failed\n");
@@ -504,7 +510,7 @@ int do_auto_update(void)
                } while (res < 0);
 #endif
        }
-       usb_stop();
+
        /* restore the old state */
        disable_ctrlc(old_ctrlc);
 #ifdef CONFIG_PROGRESSBAR
@@ -517,6 +523,8 @@ int do_auto_update(void)
                lcd_enable();
        }
 #endif
-       return 0;
+ xit:
+       usb_stop();
+       return res;
 }
 #endif /* CONFIG_AUTO_UPDATE */
index 92120b0d01ca8f0d3b779a19d059c4c922d18508..54d3645ffab9bf97fe59c3b7f48d1eb6921b68df 100644 (file)
@@ -450,7 +450,7 @@ do_auto_update(void)
 {
        block_dev_desc_t *stor_dev;
        long sz;
-       int i, res, bitmap_first, cnt, old_ctrlc, got_ctrlc;
+       int i, res = 0, bitmap_first, cnt, old_ctrlc, got_ctrlc;
        char *env;
        long start, end;
 
@@ -477,18 +477,21 @@ do_auto_update(void)
        au_usb_stor_curr_dev = usb_stor_scan(0);
        if (au_usb_stor_curr_dev == -1) {
                debug ("No device found. Not initialized?\n");
-               return -1;
+               res = -1;
+               goto xit;
        }
        /* check whether it has a partition table */
        stor_dev = get_dev("usb", 0);
        if (stor_dev == NULL) {
                debug ("uknown device type\n");
-               return -1;
+               res = -1;
+               goto xit;
        }
        if (fat_register_device(stor_dev, 1) != 0) {
                debug ("Unable to use USB %d:%d for fatls\n",
                        au_usb_stor_curr_dev, 1);
-               return -1;
+               res = -1;
+               goto xit;
        }
        if (file_fat_detectfs() != 0) {
                debug ("file_fat_detectfs failed\n");
@@ -648,9 +651,10 @@ do_auto_update(void)
                        /* enable the power switch */
                        *CPLD_VFD_BK &= ~POWER_OFF;
        }
-       usb_stop();
        /* restore the old state */
        disable_ctrlc(old_ctrlc);
-       return 0;
+xit:
+       usb_stop();
+       return res;
 }
 #endif /* CONFIG_AUTO_UPDATE */
index 744f551c3e88dcbbc79948c8869cd057bc4a8921..cc2dbcdef9b566b4cbad30f09e4934b5c2033f85 100644 (file)
 #define CONFIG_CMD_I2C
 #define CONFIG_CMD_USB
 
+#undef CONFIG_CMD_NET
+
 
 /*
  * Autobooting
  */
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds */
+#define CONFIG_BOOTDELAY       1       /* autoboot after 1 second */
 
 #define CONFIG_PREBOOT "echo;" \
        "echo Type \"run flash_nfs\" to mount root filesystem over NFS;" \
 # define CFG__LINUX_CONSOLE    "ttyS0"
 #else
 # define CFG__BOARDNAME                "mcc200"
-# define CFG__LINUX_CONSOLE    "ttyEU7"
+# define CFG__LINUX_CONSOLE    "ttyEU5"
 #endif
 
+/* Network */
+#define CONFIG_ETHADDR 00:17:17:ff:00:00
+#define CONFIG_IPADDR  10.76.9.29
+#define CONFIG_SERVERIP        10.76.9.1
+
+#include <version.h> /* For U-Boot version */
+
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "ubootver=" U_BOOT_VERSION "\0"                                 \
        "netdev=eth0\0"                                                 \
        "hostname=" CFG__BOARDNAME "\0"                                 \
        "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
                "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
+       "ramargs=setenv bootargs root=/dev/mtdblock2 "                  \
+               "rootfstype=cramfs\0"                                   \
        "addip=setenv bootargs ${bootargs} "                            \
                "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
                ":${hostname}:${netdev}:off panic=1\0"                  \
        "addcons=setenv bootargs ${bootargs} "                          \
-               "console=${console},${baudrate}\0"                      \
+               "console=${console},${baudrate} "               \
+               "ubootver=${ubootver} board=${board}\0" \
        "flash_nfs=run nfsargs addip addcons;"                          \
                "bootm ${kernel_addr}\0"                                \
        "flash_self=run ramargs addip addcons;"                         \
        "bootfile=/tftpboot/" CFG__BOARDNAME "/uImage\0"                \
        "load=tftp 200000 /tftpboot/" CFG__BOARDNAME "/u-boot.bin\0"    \
        "text_base=" MK_STR(TEXT_BASE) "\0"                             \
+       "kernel_addr=0xFC0C0000\0"                                      \
        "update=protect off ${text_base} +${filesize};"                 \
                "era ${text_base} +${filesize};"                        \
                "cp.b 200000 ${text_base} ${filesize}\0"                \
 /*
  * Ethernet configuration
  */
-#define CONFIG_MPC5xxx_FEC     1
+/*#define CONFIG_MPC5xxx_FEC   1*/
 /*
  * Define CONFIG_FEC_10MBIT to force FEC at 10Mb
  */
 #define CFG_CS1_SIZE           0x00001000
 #define CFG_CS1_CFG            0x1d300
 
+/* Leica - build revision resistors */
+/*
+#define CFG_CS3_START          0x80020000
+#define CFG_CS3_SIZE           0x00000004
+#define CFG_CS3_CFG            0x1d300
+*/
+
 /*
  *  Select one of quarts as a default
  * console. If undefined - PSC console
 #define CONFIG_USB_CLOCK       0x0001BBBB
 #define CONFIG_USB_CONFIG      0x00005000
 
+#define CONFIG_AUTOBOOT_KEYED          /* use key strings to stop autoboot     */
+#define CONFIG_AUTOBOOT_STOP_STR       "432"
+#define CONFIG_SILENT_CONSOLE  1
+
 #endif /* __CONFIG_H */