]> git.sur5r.net Git - u-boot/blobdiff - lib_ppc/bootm.c
MPC8610HPCD: Report board id, board version and fpga version.
[u-boot] / lib_ppc / bootm.c
index 8cdace2859474dbba5ade46ea6cef5deadad7067..10a0b12141e24fea1ddb9162a0872c558107d115 100644 (file)
@@ -23,7 +23,6 @@
  * MA 02111-1307 USA
  */
 
-#define DEBUG
 
 #include <common.h>
 #include <watchdog.h>
@@ -72,6 +71,7 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        ulong   initrd_start, initrd_end;
        ulong   rd_data_start, rd_data_end, rd_len;
        ulong   size;
+       phys_size_t bootm_size;
 
        ulong   cmd_start, cmd_end, bootmap_base;
        bd_t    *kbd;
@@ -86,22 +86,23 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 #endif
 
        bootmap_base = getenv_bootm_low();
-       size = getenv_bootm_size();
+       bootm_size = getenv_bootm_size();
 
 #ifdef DEBUG
-       if (((u64)bootmap_base + size) > (CFG_SDRAM_BASE + (u64)gd->ram_size))
+       if (((u64)bootmap_base + bootm_size) >
+           (CFG_SDRAM_BASE + (u64)gd->ram_size))
                puts("WARNING: bootm_low + bootm_size exceed total memory\n");
-       if ((bootmap_base + size) > get_effective_memsize())
+       if ((bootmap_base + bootm_size) > get_effective_memsize())
                puts("WARNING: bootm_low + bootm_size exceed eff. memory\n");
 #endif
 
-       size = min(size, get_effective_memsize());
+       size = min(bootm_size, get_effective_memsize());
        size = min(size, CFG_LINUX_LOWMEM_MAX_SIZE);
 
-       if (size < getenv_bootm_size()) {
+       if (size < bootm_size) {
                ulong base = bootmap_base + size;
                printf("WARNING: adjusting available memory to %x\n", size);
-               lmb_reserve(lmb, base, getenv_bootm_size() - size);
+               lmb_reserve(lmb, base, bootm_size - size);
        }
 
        /*
@@ -147,7 +148,7 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
 
        /* find kernel entry point */
        if (images->legacy_hdr_valid) {
-               ep = image_get_ep (images->legacy_hdr_os);
+               ep = image_get_ep (&images->legacy_hdr_os_copy);
 #if defined(CONFIG_FIT)
        } else if (images->fit_uname_os) {
                ret = fit_image_get_entry (images->fit_hdr_os,
@@ -185,18 +186,6 @@ do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                        fdt_error ("/chosen node create failed");
                        goto error;
                }
-#ifdef CONFIG_OF_HAS_UBOOT_ENV
-               if (fdt_env(of_flat_tree) < 0) {
-                       fdt_error ("/u-boot-env node create failed");
-                       goto error;
-               }
-#endif
-#ifdef CONFIG_OF_HAS_BD_T
-               if (fdt_bd_t(of_flat_tree) < 0) {
-                       fdt_error ("/bd_t node create failed");
-                       goto error;
-               }
-#endif
 #ifdef CONFIG_OF_BOARD_SETUP
                /* Call the board-specific fixup routine */
                ft_board_setup(of_flat_tree, gd->bd);
@@ -311,7 +300,7 @@ static void set_clocks_in_mhz (bd_t *kbd)
                kbd->bi_cpmfreq /= 1000000L;
                kbd->bi_brgfreq /= 1000000L;
                kbd->bi_sccfreq /= 1000000L;
-               kbd->bi_vco     /= 1000000L;
+               kbd->bi_vco     /= 1000000L;
 #endif
 #if defined(CONFIG_MPC5xxx)
                kbd->bi_ipbfreq /= 1000000L;
@@ -411,9 +400,9 @@ static int boot_get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
        ulong           image_start, image_end;
        ulong           load_start, load_end;
 #if defined(CONFIG_FIT)
-        void            *fit_hdr;
-        const char      *fit_uname_config = NULL;
-        const char      *fit_uname_fdt = NULL;
+       void            *fit_hdr;
+       const char      *fit_uname_config = NULL;
+       const char      *fit_uname_fdt = NULL;
        ulong           default_addr;
        int             cfg_noffset;
        int             fdt_noffset;
@@ -639,9 +628,9 @@ static int boot_get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                                /*
                                 * FDT blob
                                 */
+                               fdt_blob = (char *)fdt_addr;
                                debug ("*  fdt: raw FDT blob\n");
                                printf ("## Flattened Device Tree blob at %08lx\n", fdt_blob);
-                               fdt_blob = (char *)fdt_addr;
                        }
                        break;
                default:
@@ -652,7 +641,7 @@ static int boot_get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                printf ("   Booting using the fdt blob at 0x%x\n", fdt_blob);
 
        } else if (images->legacy_hdr_valid &&
-                       image_check_type (images->legacy_hdr_os, IH_TYPE_MULTI)) {
+                       image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
 
                ulong fdt_data, fdt_len;
 
@@ -680,9 +669,8 @@ static int boot_get_fdt (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
                                goto error;
                        }
                } else {
-                       fdt_error ("Did not find a Flattened Device Tree "
-                               "in a legacy multi-component image");
-                       goto error;
+                       debug ("## No Flattened Device Tree\n");
+                       return 0;
                }
        } else {
                debug ("## No Flattened Device Tree\n");
@@ -739,7 +727,7 @@ static int boot_relocate_fdt (struct lmb *lmb, ulong bootmap_base,
                ulong of_start;
 
                /* position on a 4K boundary before the alloc_current */
-               of_start = lmb_alloc_base(lmb, of_len, 0x1000,
+               of_start = (unsigned long)lmb_alloc_base(lmb, of_len, 0x1000,
                                         (CFG_BOOTMAPSZ + bootmap_base));
 
                if (of_start == 0) {
@@ -764,7 +752,7 @@ static int boot_relocate_fdt (struct lmb *lmb, ulong bootmap_base,
                *of_flat_tree = (char *)of_start;
        } else {
                *of_flat_tree = fdt_blob;
-               lmb_reserve(lmb, (ulong)fdt, of_len);
+               lmb_reserve(lmb, (ulong)working_fdt, of_len);
        }
 
        return 0;