]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge with git://www.denx.de/git/u-boot.git
authorStefan Roese <sr@denx.de>
Wed, 15 Aug 2007 19:11:45 +0000 (21:11 +0200)
committerStefan Roese <sr@denx.de>
Wed, 15 Aug 2007 19:11:45 +0000 (21:11 +0200)
Makefile
board/freescale/common/sys_eeprom.c [moved from board/mpc8641hpcn/sys_eeprom.c with 100% similarity]
board/freescale/mpc8641hpcn/Makefile [moved from board/mpc8641hpcn/Makefile with 93% similarity]
board/freescale/mpc8641hpcn/config.mk [moved from board/mpc8641hpcn/config.mk with 100% similarity]
board/freescale/mpc8641hpcn/init.S [moved from board/mpc8641hpcn/init.S with 100% similarity]
board/freescale/mpc8641hpcn/mpc8641hpcn.c [moved from board/mpc8641hpcn/mpc8641hpcn.c with 99% similarity]
board/freescale/mpc8641hpcn/u-boot.lds [moved from board/mpc8641hpcn/u-boot.lds with 98% similarity]
common/cmd_bootm.c
include/configs/sbc8641d.h
net/tftp.c

index 9dee9483c63ead629084dd484a587705216a75ee..65efd3f5e05906cf8f454335c20480ac38b1d7ab 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1900,7 +1900,7 @@ TQM8560_config:           unconfig
 #########################################################################
 
 MPC8641HPCN_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc86xx mpc8641hpcn
+       @$(MKCONFIG) $(@:_config=) ppc mpc86xx mpc8641hpcn freescale
 
 sbc8641d_config:       unconfig
        @./mkconfig $(@:_config=) ppc mpc86xx sbc8641d
similarity index 93%
rename from board/mpc8641hpcn/Makefile
rename to board/freescale/mpc8641hpcn/Makefile
index df56b31e581bcfa2983d26dd89a4ace330a6cc6e..93b015d47436b831bef728af8c7f6da7b8c48f9f 100644 (file)
 include $(TOPDIR)/config.mk
 
 ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../freescale/common)
+$(shell mkdir -p $(obj)../common)
 endif
 
 LIB    = $(obj)lib$(BOARD).a
 
-COBJS  := $(BOARD).o sys_eeprom.o \
-               ../freescale/common/pixis.o
+COBJS  := $(BOARD).o \
+               ../common/sys_eeprom.o \
+               ../common/pixis.o
 
 SOBJS  := init.o
 
similarity index 99%
rename from board/mpc8641hpcn/mpc8641hpcn.c
rename to board/freescale/mpc8641hpcn/mpc8641hpcn.c
index 1bfbe88b5aafb7625757bda01ca2bc6fb0fafd96..ffd11cb5f1384e2a6e428cc7f393ccc4b795fdf5 100644 (file)
@@ -33,7 +33,7 @@
 extern void ft_cpu_setup(void *blob, bd_t *bd);
 #endif
 
-#include "../freescale/common/pixis.h"
+#include "../common/pixis.h"
 
 #if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER)
 extern void ddr_enable_ecc(unsigned int dram_size);
similarity index 98%
rename from board/mpc8641hpcn/u-boot.lds
rename to board/freescale/mpc8641hpcn/u-boot.lds
index 58644648c78846388bcf8236858cc927d80fb01b..fd163622a82918f0041ff8ba21c979250922cd35 100644 (file)
@@ -51,7 +51,7 @@ SECTIONS
   .text      :
   {
     cpu/mpc86xx/start.o        (.text)
-    board/mpc8641hpcn/init.o (.bootpg)
+    board/freescale/mpc8641hpcn/init.o (.bootpg)
     cpu/mpc86xx/traps.o (.text)
     cpu/mpc86xx/interrupts.o (.text)
     cpu/mpc86xx/cpu_init.o (.text)
index a6499e8dd9bc3fc853606567c847d0a064f02e55..df1d0380d4affdcfe06cda3a6c93ef512781533d 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
- /*cmd_boot.c*/
- extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+/*cmd_boot.c*/
+extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
-#if (CONFIG_COMMANDS & CFG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
+#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE)
 #include <rtc.h>
 #endif
 
@@ -56,13 +56,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #include <hush.h>
 #endif
 
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-# include <status_led.h>
-# define SHOW_BOOT_PROGRESS(arg)       show_boot_progress(arg)
-#else
-# define SHOW_BOOT_PROGRESS(arg)
-#endif
-
 #ifdef CFG_INIT_RAM_LOCK
 #include <asm/cache.h>
 #endif
@@ -89,11 +82,11 @@ int  gunzip (void *, int, unsigned char *, unsigned long *);
 static void *zalloc(void *, unsigned, unsigned);
 static void zfree(void *, void *, unsigned);
 
-#if (CONFIG_COMMANDS & CFG_CMD_IMI)
+#if defined(CONFIG_CMD_IMI)
 static int image_info (unsigned long addr);
 #endif
 
-#if (CONFIG_COMMANDS & CFG_CMD_IMLS)
+#if defined(CONFIG_CMD_IMLS)
 #include <flash.h>
 extern flash_info_t flash_info[]; /* info for FLASH chips */
 static int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
@@ -133,12 +126,12 @@ static void fixup_silent_linux (void);
 #endif
 static boot_os_Fcn do_bootm_netbsd;
 static boot_os_Fcn do_bootm_rtems;
-#if (CONFIG_COMMANDS & CFG_CMD_ELF)
+#if defined(CONFIG_CMD_ELF)
 static boot_os_Fcn do_bootm_vxworks;
 static boot_os_Fcn do_bootm_qnxelf;
 int do_bootvx ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] );
 int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] );
-#endif /* CFG_CMD_ELF */
+#endif
 #if defined(CONFIG_ARTOS) && defined(CONFIG_PPC)
 static boot_os_Fcn do_bootm_artos;
 #endif
@@ -176,7 +169,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                addr = simple_strtoul(argv[1], NULL, 16);
        }
 
-       SHOW_BOOT_PROGRESS (1);
+       show_boot_progress (1);
        printf ("## Booting image at %08lx ...\n", addr);
 
        /* Copy header so we can blank CRC field for re-calculation */
@@ -200,11 +193,11 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #endif /* __I386__ */
            {
                puts ("Bad Magic Number\n");
-               SHOW_BOOT_PROGRESS (-1);
+               show_boot_progress (-1);
                return 1;
            }
        }
-       SHOW_BOOT_PROGRESS (2);
+       show_boot_progress (2);
 
        data = (ulong)&header;
        len  = sizeof(image_header_t);
@@ -214,10 +207,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 
        if (crc32 (0, (uchar *)data, len) != checksum) {
                puts ("Bad Header Checksum\n");
-               SHOW_BOOT_PROGRESS (-2);
+               show_boot_progress (-2);
                return 1;
        }
-       SHOW_BOOT_PROGRESS (3);
+       show_boot_progress (3);
 
 #ifdef CONFIG_HAS_DATAFLASH
        if (addr_dataflash(addr)){
@@ -238,12 +231,12 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                puts ("   Verifying Checksum ... ");
                if (crc32 (0, (uchar *)data, len) != ntohl(hdr->ih_dcrc)) {
                        printf ("Bad Data CRC\n");
-                       SHOW_BOOT_PROGRESS (-3);
+                       show_boot_progress (-3);
                        return 1;
                }
                puts ("OK\n");
        }
-       SHOW_BOOT_PROGRESS (4);
+       show_boot_progress (4);
 
        len_ptr = (ulong *)data;
 
@@ -272,10 +265,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #endif
        {
                printf ("Unsupported Architecture 0x%x\n", hdr->ih_arch);
-               SHOW_BOOT_PROGRESS (-4);
+               show_boot_progress (-4);
                return 1;
        }
-       SHOW_BOOT_PROGRESS (5);
+       show_boot_progress (5);
 
        switch (hdr->ih_type) {
        case IH_TYPE_STANDALONE:
@@ -297,10 +290,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                        data += 4;
                break;
        default: printf ("Wrong Image Type for %s command\n", cmdtp->name);
-               SHOW_BOOT_PROGRESS (-5);
+               show_boot_progress (-5);
                return 1;
        }
-       SHOW_BOOT_PROGRESS (6);
+       show_boot_progress (6);
 
        /*
         * We have reached the point of no return: we are going to
@@ -351,7 +344,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                if (gunzip ((void *)ntohl(hdr->ih_load), unc_len,
                            (uchar *)data, &len) != 0) {
                        puts ("GUNZIP ERROR - must RESET board to recover\n");
-                       SHOW_BOOT_PROGRESS (-6);
+                       show_boot_progress (-6);
                        do_reset (cmdtp, flag, argc, argv);
                }
                break;
@@ -368,8 +361,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                                                CFG_MALLOC_LEN < (4096 * 1024), 0);
                if (i != BZ_OK) {
                        printf ("BUNZIP2 ERROR %d - must RESET board to recover\n", i);
-                       SHOW_BOOT_PROGRESS (-6);
-                       udelay(100000);
+                       show_boot_progress (-6);
                        do_reset (cmdtp, flag, argc, argv);
                }
                break;
@@ -378,11 +370,11 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                if (iflag)
                        enable_interrupts();
                printf ("Unimplemented compression type %d\n", hdr->ih_comp);
-               SHOW_BOOT_PROGRESS (-7);
+               show_boot_progress (-7);
                return 1;
        }
        puts ("OK\n");
-       SHOW_BOOT_PROGRESS (7);
+       show_boot_progress (7);
 
        switch (hdr->ih_type) {
        case IH_TYPE_STANDALONE:
@@ -409,10 +401,10 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                if (iflag)
                        enable_interrupts();
                printf ("Can't boot image type %d\n", hdr->ih_type);
-               SHOW_BOOT_PROGRESS (-8);
+               show_boot_progress (-8);
                return 1;
        }
-       SHOW_BOOT_PROGRESS (8);
+       show_boot_progress (8);
 
        switch (hdr->ih_os) {
        default:                        /* handled by (original) Linux case */
@@ -440,7 +432,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
                             addr, len_ptr, verify);
            break;
 
-#if (CONFIG_COMMANDS & CFG_CMD_ELF)
+#if defined(CONFIG_CMD_ELF)
        case IH_OS_VXWORKS:
            do_bootm_vxworks (cmdtp, flag, argc, argv,
                              addr, len_ptr, verify);
@@ -449,7 +441,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
            do_bootm_qnxelf (cmdtp, flag, argc, argv,
                              addr, len_ptr, verify);
            break;
-#endif /* CFG_CMD_ELF */
+#endif
 #ifdef CONFIG_ARTOS
        case IH_OS_ARTOS:
            do_bootm_artos  (cmdtp, flag, argc, argv,
@@ -458,7 +450,7 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #endif
        }
 
-       SHOW_BOOT_PROGRESS (-9);
+       show_boot_progress (-9);
 #ifdef DEBUG
        puts ("\n## Control returned to monitor - resetting...\n");
        do_reset (cmdtp, flag, argc, argv);
@@ -637,7 +629,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
 #endif
        if (argc >= 3) {
                debug ("Not skipping initrd\n");
-               SHOW_BOOT_PROGRESS (9);
+               show_boot_progress (9);
 
                addr = simple_strtoul(argv[2], NULL, 16);
 
@@ -648,7 +640,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
 
                if (ntohl(hdr->ih_magic)  != IH_MAGIC) {
                        puts ("Bad Magic Number\n");
-                       SHOW_BOOT_PROGRESS (-10);
+                       show_boot_progress (-10);
                        do_reset (cmdtp, flag, argc, argv);
                }
 
@@ -660,11 +652,11 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
 
                if (crc32 (0, (uchar *)data, len) != checksum) {
                        puts ("Bad Header Checksum\n");
-                       SHOW_BOOT_PROGRESS (-11);
+                       show_boot_progress (-11);
                        do_reset (cmdtp, flag, argc, argv);
                }
 
-               SHOW_BOOT_PROGRESS (10);
+               show_boot_progress (10);
 
                print_image_hdr (hdr);
 
@@ -697,19 +689,19 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
 
                        if (csum != ntohl(hdr->ih_dcrc)) {
                                puts ("Bad Data CRC\n");
-                               SHOW_BOOT_PROGRESS (-12);
+                               show_boot_progress (-12);
                                do_reset (cmdtp, flag, argc, argv);
                        }
                        puts ("OK\n");
                }
 
-               SHOW_BOOT_PROGRESS (11);
+               show_boot_progress (11);
 
                if ((hdr->ih_os   != IH_OS_LINUX)       ||
                    (hdr->ih_arch != IH_CPU_PPC)        ||
                    (hdr->ih_type != IH_TYPE_RAMDISK)   ) {
                        puts ("No Linux PPC Ramdisk Image\n");
-                       SHOW_BOOT_PROGRESS (-13);
+                       show_boot_progress (-13);
                        do_reset (cmdtp, flag, argc, argv);
                }
 
@@ -720,7 +712,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                u_long tail    = ntohl(len_ptr[0]) % 4;
                int i;
 
-               SHOW_BOOT_PROGRESS (13);
+               show_boot_progress (13);
 
                /* skip kernel length and terminator */
                data = (ulong)(&len_ptr[2]);
@@ -739,7 +731,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                /*
                 * no initrd image
                 */
-               SHOW_BOOT_PROGRESS (14);
+               show_boot_progress (14);
 
                len = data = 0;
        }
@@ -748,59 +740,65 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
        if(argc > 3) {
                of_flat_tree = (char *) simple_strtoul(argv[3], NULL, 16);
                hdr = (image_header_t *)of_flat_tree;
-#if defined(CONFIG_OF_LIBFDT)
-               if (fdt_check_header(of_flat_tree) == 0) {
+#if defined(CONFIG_OF_FLAT_TREE)
+               if (*((ulong *)(of_flat_tree + sizeof(image_header_t))) != OF_DT_HEADER) {
 #else
-               if (*(ulong *)of_flat_tree == OF_DT_HEADER) {
+               if (fdt_check_header(of_flat_tree + sizeof(image_header_t)) != 0) {
 #endif
 #ifndef CFG_NO_FLASH
                        if (addr2info((ulong)of_flat_tree) != NULL)
                                of_data = (ulong)of_flat_tree;
 #endif
                } else if (ntohl(hdr->ih_magic) == IH_MAGIC) {
-                       printf("## Flat Device Tree Image at %08lX\n", hdr);
+                       printf("## Flat Device Tree at %08lX\n", hdr);
                        print_image_hdr(hdr);
 
                        if ((ntohl(hdr->ih_load) <  ((unsigned long)hdr + ntohl(hdr->ih_size) + sizeof(hdr))) &&
                           ((ntohl(hdr->ih_load) + ntohl(hdr->ih_size)) > (unsigned long)hdr)) {
-                               printf ("ERROR: Load address overwrites Flat Device Tree uImage\n");
-                               return;
+                               puts ("ERROR: fdt overwritten - "
+                                       "must RESET the board to recover.\n");
+                               do_reset (cmdtp, flag, argc, argv);
                        }
 
-                       printf("   Verifying Checksum ... ");
+                       puts ("   Verifying Checksum ... ");
                        memmove (&header, (char *)hdr, sizeof(image_header_t));
                        checksum = ntohl(header.ih_hcrc);
                        header.ih_hcrc = 0;
 
                        if(checksum != crc32(0, (uchar *)&header, sizeof(image_header_t))) {
-                               printf("ERROR: Flat Device Tree header checksum is invalid\n");
-                               return;
+                               puts ("ERROR: fdt header checksum invalid - "
+                                       "must RESET the board to recover.\n");
+                               do_reset (cmdtp, flag, argc, argv);
                        }
 
                        checksum = ntohl(hdr->ih_dcrc);
                        addr = (ulong)((uchar *)(hdr) + sizeof(image_header_t));
 
                        if(checksum != crc32(0, (uchar *)addr, ntohl(hdr->ih_size))) {
-                               printf("ERROR: Flat Device Tree checksum is invalid\n");
-                               return;
+                               puts ("ERROR: fdt checksum invalid - "
+                                       "must RESET the board to recover.\n");
+                               do_reset (cmdtp, flag, argc, argv);
                        }
-                       printf("OK\n");
+                       puts ("OK\n");
 
                        if (ntohl(hdr->ih_type) != IH_TYPE_FLATDT) {
-                               printf ("ERROR: uImage not Flat Device Tree type\n");
-                               return;
+                               puts ("ERROR: uImage is not a fdt - "
+                                       "must RESET the board to recover.\n");
+                               do_reset (cmdtp, flag, argc, argv);
                        }
                        if (ntohl(hdr->ih_comp) != IH_COMP_NONE) {
-                               printf("ERROR: uImage is not uncompressed\n");
-                               return;
+                               puts ("ERROR: uImage is compressed - "
+                                       "must RESET the board to recover.\n");
+                               do_reset (cmdtp, flag, argc, argv);
                        }
-#if defined(CONFIG_OF_LIBFDT)
-                       if (fdt_check_header(of_flat_tree + sizeof(image_header_t)) == 0) {
-#else
+#if defined(CONFIG_OF_FLAT_TREE)
                        if (*((ulong *)(of_flat_tree + sizeof(image_header_t))) != OF_DT_HEADER) {
+#else
+                       if (fdt_check_header(of_flat_tree + sizeof(image_header_t)) != 0) {
 #endif
-                               printf ("ERROR: uImage data is not a flat device tree\n");
-                               return;
+                               puts ("ERROR: uImage data is not a fdt - "
+                                       "must RESET the board to recover.\n");
+                               do_reset (cmdtp, flag, argc, argv);
                        }
 
                        memmove((void *)ntohl(hdr->ih_load),
@@ -808,10 +806,11 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                                ntohl(hdr->ih_size));
                        of_flat_tree = (char *)ntohl(hdr->ih_load);
                } else {
-                       printf ("Did not find a flat flat device tree at address %08lX\n", of_flat_tree);
-                       return;
+                       puts ("Did not find a flat Flat Device Tree.\n"
+                               "Must RESET the board to recover.\n");
+                       do_reset (cmdtp, flag, argc, argv);
                }
-               printf ("   Booting using flat device tree at 0x%x\n",
+               printf ("   Booting using the fdt at 0x%x\n",
                                of_flat_tree);
        } else if ((hdr->ih_type==IH_TYPE_MULTI) && (len_ptr[1]) && (len_ptr[2])) {
                u_long tail    = ntohl(len_ptr[0]) % 4;
@@ -835,22 +834,24 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                        of_data += 4 - tail;
                }
 
-#if defined(CONFIG_OF_LIBFDT)
-               if (fdt_check_header((void *)of_data) != 0) {
+#if defined(CONFIG_OF_FLAT_TREE)
+               if (*((ulong *)(of_flat_tree + sizeof(image_header_t))) != OF_DT_HEADER) {
 #else
-               if (((struct boot_param_header *)of_data)->magic != OF_DT_HEADER) {
+               if (fdt_check_header(of_flat_tree + sizeof(image_header_t)) != 0) {
 #endif
-                       printf ("ERROR: image is not a flat device tree\n");
-                       return;
+                       puts ("ERROR: image is not a fdt - "
+                               "must RESET the board to recover.\n");
+                       do_reset (cmdtp, flag, argc, argv);
                }
 
-#if defined(CONFIG_OF_LIBFDT)
-               if (be32_to_cpu(fdt_totalsize(of_data)) !=  ntohl(len_ptr[2])) {
-#else
+#if defined(CONFIG_OF_FLAT_TREE)
                if (((struct boot_param_header *)of_data)->totalsize != ntohl(len_ptr[2])) {
+#else
+               if (be32_to_cpu(fdt_totalsize(of_data)) !=  ntohl(len_ptr[2])) {
 #endif
-                       printf ("ERROR: flat device tree size does not agree with image\n");
-                       return;
+                       puts ("ERROR: fdt size != image size - "
+                               "must RESET the board to recover.\n");
+                       do_reset (cmdtp, flag, argc, argv);
                }
        }
 #endif
@@ -890,7 +891,7 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                                initrd_start = nsp;
                }
 
-               SHOW_BOOT_PROGRESS (12);
+               show_boot_progress (12);
 
                debug ("## initrd at 0x%08lX ... 0x%08lX (len=%ld=0x%lX)\n",
                        data, data + len - 1, len, len);
@@ -923,27 +924,26 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                initrd_end = 0;
        }
 
-       debug ("## Transferring control to Linux (at address %08lx) ...\n",
-               (ulong)kernel);
-
-       SHOW_BOOT_PROGRESS (15);
+#if defined(CONFIG_OF_LIBFDT)
 
-#if defined(CFG_INIT_RAM_LOCK) && !defined(CONFIG_E500)
-       unlock_ram_in_cache();
+#ifdef CFG_BOOTMAPSZ
+       /*
+        * The blob must be within CFG_BOOTMAPSZ,
+        * so we flag it to be copied if it is not.
+        */
+       if (of_flat_tree >= (char *)CFG_BOOTMAPSZ)
+               of_data = of_flat_tree;
 #endif
 
-#if defined(CONFIG_OF_LIBFDT)
        /* move of_flat_tree if needed */
        if (of_data) {
                int err;
                ulong of_start, of_len;
 
                of_len = be32_to_cpu(fdt_totalsize(of_data));
-               /* position on a 4K boundary before the initrd/kbd */
-               if (initrd_start)
-                       of_start = initrd_start - of_len;
-               else
-                       of_start  = (ulong)kbd - of_len;
+
+               /* position on a 4K boundary before the kbd */
+               of_start  = (ulong)kbd - of_len;
                of_start &= ~(4096 - 1);        /* align on page */
                debug ("## device tree at 0x%08lX ... 0x%08lX (len=%ld=0x%lX)\n",
                        of_data, of_data + of_len - 1, of_len, of_len);
@@ -951,42 +951,49 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                of_flat_tree = (char *)of_start;
                printf ("   Loading Device Tree to %08lx, end %08lx ... ",
                        of_start, of_start + of_len - 1);
-               err = fdt_open_into((void *)of_start, (void *)of_data, of_len);
+               err = fdt_open_into((void *)of_data, (void *)of_start, of_len);
                if (err != 0) {
-                       printf ("libfdt: %s " __FILE__ " %d\n", fdt_strerror(err), __LINE__);
-               }
-               /*
-                * Add the chosen node if it doesn't exist, add the env and bd_t
-                * if the user wants it (the logic is in the subroutines).
-                */
-               if (fdt_chosen(of_flat_tree, initrd_start, initrd_end, 0) < 0) {
-                               printf("Failed creating the /chosen node (0x%08X), aborting.\n", of_flat_tree);
-                               return;
+                       puts ("ERROR: fdt move failed - "
+                               "must RESET the board to recover.\n");
+                       do_reset (cmdtp, flag, argc, argv);
                }
+       }
+       /*
+        * Add the chosen node if it doesn't exist, add the env and bd_t
+        * if the user wants it (the logic is in the subroutines).
+        */
+       if (fdt_chosen(of_flat_tree, initrd_start, initrd_end, 0) < 0) {
+               puts ("ERROR: /chosen node create failed - "
+                       "must RESET the board to recover.\n");
+               do_reset (cmdtp, flag, argc, argv);
+       }
 #ifdef CONFIG_OF_HAS_UBOOT_ENV
-               if (fdt_env(of_flat_tree) < 0) {
-                               printf("Failed creating the /u-boot-env node, aborting.\n");
-                               return;
-               }
+       if (fdt_env(of_flat_tree) < 0) {
+               puts ("ERROR: /u-boot-env node create failed - "
+                       "must RESET the board to recover.\n");
+               do_reset (cmdtp, flag, argc, argv);
+       }
 #endif
 #ifdef CONFIG_OF_HAS_BD_T
-               if (fdt_bd_t(of_flat_tree) < 0) {
-                               printf("Failed creating the /bd_t node, aborting.\n");
-                               return;
-               }
-#endif
+       if (fdt_bd_t(of_flat_tree) < 0) {
+               puts ("ERROR: /bd_t node create failed - "
+                       "must RESET the board to recover.\n");
+               do_reset (cmdtp, flag, argc, argv);
        }
 #endif
+#ifdef CONFIG_OF_BOARD_SETUP
+       /* Call the board-specific fixup routine */
+       ft_board_setup(of_flat_tree, gd->bd);
+#endif
+#endif /* CONFIG_OF_LIBFDT */
 #if defined(CONFIG_OF_FLAT_TREE)
        /* move of_flat_tree if needed */
        if (of_data) {
                ulong of_start, of_len;
                of_len = ((struct boot_param_header *)of_data)->totalsize;
+
                /* provide extra 8k pad */
-               if (initrd_start)
-                       of_start = initrd_start - of_len - 8192;
-               else
-                       of_start  = (ulong)kbd - of_len - 8192;
+               of_start  = (ulong)kbd - of_len - 8192;
                of_start &= ~(4096 - 1);        /* align on page */
                debug ("## device tree at 0x%08lX ... 0x%08lX (len=%ld=0x%lX)\n",
                        of_data, of_data + of_len - 1, of_len, of_len);
@@ -996,8 +1003,36 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
                        of_start, of_start + of_len - 1);
                memmove ((void *)of_start, (void *)of_data, of_len);
        }
+       /*
+        * Create the /chosen node and modify the blob with board specific
+        * values as needed.
+        */
+       ft_setup(of_flat_tree, kbd, initrd_start, initrd_end);
+       /* ft_dump_blob(of_flat_tree); */
+#endif
+       debug ("## Transferring control to Linux (at address %08lx) ...\n",
+               (ulong)kernel);
+
+       show_boot_progress (15);
+
+#if defined(CFG_INIT_RAM_LOCK) && !defined(CONFIG_E500)
+       unlock_ram_in_cache();
 #endif
 
+#if defined(CONFIG_OF_FLAT_TREE) || defined(CONFIG_OF_LIBFDT)
+       if (of_flat_tree) {     /* device tree; boot new style */
+               /*
+                * Linux Kernel Parameters (passing device tree):
+                *   r3: pointer to the fdt, followed by the board info data
+                *   r4: physical pointer to the kernel itself
+                *   r5: NULL
+                *   r6: NULL
+                *   r7: NULL
+                */
+               (*kernel) ((bd_t *)of_flat_tree, (ulong)kernel, 0, 0, 0);
+               /* does not return */
+       }
+#endif
        /*
         * Linux Kernel Parameters (passing board info data):
         *   r3: ptr to board info data
@@ -1006,46 +1041,8 @@ do_bootm_linux (cmd_tbl_t *cmdtp, int flag,
         *   r6: Start of command line string
         *   r7: End   of command line string
         */
-#if defined(CONFIG_OF_FLAT_TREE) || defined(CONFIG_OF_LIBFDT)
-       if (!of_flat_tree)      /* no device tree; boot old style */
-#endif
-               (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end);
-               /* does not return */
-
-#if defined(CONFIG_OF_FLAT_TREE) || defined(CONFIG_OF_LIBFDT)
-       /*
-        * Linux Kernel Parameters (passing device tree):
-        *   r3: ptr to OF flat tree, followed by the board info data
-        *   r4: physical pointer to the kernel itself
-        *   r5: NULL
-        *   r6: NULL
-        *   r7: NULL
-        */
-#if defined(CONFIG_OF_FLAT_TREE)
-       ft_setup(of_flat_tree, kbd, initrd_start, initrd_end);
-       /* ft_dump_blob(of_flat_tree); */
-#endif
-#if defined(CONFIG_OF_LIBFDT)
-       if (fdt_chosen(of_flat_tree, initrd_start, initrd_end, 0) < 0) {
-               printf("Failed creating the /chosen node (0x%08X), aborting.\n", of_flat_tree);
-               return;
-       }
-#ifdef CONFIG_OF_HAS_UBOOT_ENV
-       if (fdt_env(of_flat_tree) < 0) {
-               printf("Failed creating the /u-boot-env node, aborting.\n");
-               return;
-       }
-#endif
-#ifdef CONFIG_OF_HAS_BD_T
-       if (fdt_bd_t(of_flat_tree) < 0) {
-               printf("Failed creating the /bd_t node, aborting.\n");
-               return;
-       }
-#endif
-#endif /* if defined(CONFIG_OF_LIBFDT) */
-
-       (*kernel) ((bd_t *)of_flat_tree, (ulong)kernel, 0, 0, 0);
-#endif
+       (*kernel) (kbd, initrd_start, initrd_end, cmd_start, cmd_end);
+       /* does not return */
 }
 #endif /* CONFIG_PPC */
 
@@ -1115,7 +1112,7 @@ do_bootm_netbsd (cmd_tbl_t *cmdtp, int flag,
        printf ("## Transferring control to NetBSD stage-2 loader (at address %08lx) ...\n",
                (ulong)loader);
 
-       SHOW_BOOT_PROGRESS (15);
+       show_boot_progress (15);
 
        /*
         * NetBSD Stage-2 Loader Parameters:
@@ -1219,7 +1216,7 @@ do_bootm_artos (cmd_tbl_t *cmdtp, int flag,
 #endif
 
 
-#if (CONFIG_COMMANDS & CFG_CMD_BOOTD)
+#if defined(CONFIG_CMD_BOOTD)
 int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        int rcode = 0;
@@ -1247,7 +1244,7 @@ U_BOOT_CMD(
 
 #endif
 
-#if (CONFIG_COMMANDS & CFG_CMD_IMI)
+#if defined(CONFIG_CMD_IMI)
 int do_iminfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        int     arg;
@@ -1315,9 +1312,9 @@ U_BOOT_CMD(
        "      image contents (magic number, header and payload checksums)\n"
 );
 
-#endif /* CFG_CMD_IMI */
+#endif
 
-#if (CONFIG_COMMANDS & CFG_CMD_IMLS)
+#if defined(CONFIG_CMD_IMLS)
 /*-----------------------------------------------------------------------
  * List all images found in flash.
  */
@@ -1373,23 +1370,23 @@ U_BOOT_CMD(
        "    - Prints information about all images found at sector\n"
        "      boundaries in flash.\n"
 );
-#endif /* CFG_CMD_IMLS */
+#endif
 
 void
 print_image_hdr (image_header_t *hdr)
 {
-#if (CONFIG_COMMANDS & CFG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
+#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE)
        time_t timestamp = (time_t)ntohl(hdr->ih_time);
        struct rtc_time tm;
 #endif
 
        printf ("   Image Name:   %.*s\n", IH_NMLEN, hdr->ih_name);
-#if (CONFIG_COMMANDS & CFG_CMD_DATE) || defined(CONFIG_TIMESTAMP)
+#if defined(CONFIG_TIMESTAMP) || defined(CONFIG_CMD_DATE)
        to_tm (timestamp, &tm);
        printf ("   Created:      %4d-%02d-%02d  %2d:%02d:%02d UTC\n",
                tm.tm_year, tm.tm_mon, tm.tm_mday,
                tm.tm_hour, tm.tm_min, tm.tm_sec);
-#endif /* CFG_CMD_DATE, CONFIG_TIMESTAMP */
+#endif
        puts ("   Image Type:   "); print_type(hdr);
        printf ("\n   Data Size:    %d Bytes = ", ntohl(hdr->ih_size));
        print_size (ntohl(hdr->ih_size), "\n");
@@ -1578,7 +1575,7 @@ do_bootm_rtems (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        printf ("## Transferring control to RTEMS (at address %08lx) ...\n",
                (ulong)entry_point);
 
-       SHOW_BOOT_PROGRESS (15);
+       show_boot_progress (15);
 
        /*
         * RTEMS Parameters:
@@ -1588,7 +1585,7 @@ do_bootm_rtems (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        (*entry_point ) ( gd->bd );
 }
 
-#if (CONFIG_COMMANDS & CFG_CMD_ELF)
+#if defined(CONFIG_CMD_ELF)
 static void
 do_bootm_vxworks (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                  ulong addr, ulong *len_ptr, int verify)
@@ -1614,7 +1611,7 @@ do_bootm_qnxelf (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        local_args[1] = str;    /* and provide it via the arguments */
        do_bootelf(cmdtp, 0, 2, local_args);
 }
-#endif /* CFG_CMD_ELF */
+#endif
 
 #ifdef CONFIG_LYNXKDI
 static void
index 68d31ca1dbc3562afb4790bd16fa47a16f592ab8..277b611409d877e790301730c348ac8cf5330a14 100644 (file)
 #define CFG_LOAD_ADDR  0x2000000       /* default load address */
 #define CFG_PROMPT     "=> "           /* Monitor Command Prompt */
 
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#if defined(CONFIG_CMD_KGDB)
     #define CFG_CBSIZE 1024            /* Console I/O Buffer Size */
 #else
     #define CFG_CBSIZE 256             /* Console I/O Buffer Size */
 /* Cache Configuration */
 #define CFG_DCACHE_SIZE                32768
 #define CFG_CACHELINE_SIZE     32
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#if defined(CONFIG_CMD_KGDB)
 #define CFG_CACHELINE_SHIFT    5       /*log base 2 of the above value*/
 #endif
 
 #define BOOTFLAG_COLD  0x01            /* Normal Power-On: Boot from FLASH */
 #define BOOTFLAG_WARM  0x02            /* Software reboot */
 
-#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#if defined(CONFIG_CMD_KGDB)
 #define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
 #define CONFIG_KGDB_SER_INDEX  2       /* which serial port to use */
 #endif
index 888ec987cfcb24edecfb3fea028802acceb557bc..d6db91c05841a450cdd51a5360121d8e4cdbf93a 100644 (file)
@@ -614,4 +614,4 @@ static void parse_multicast_oack(char *pkt, int len)
 
 #endif /* Multicast TFTP */
 
-#endif /* CFG_CMD_NET */
+#endif