]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/board_f.c
Power: remove support for Freescale MPC8220
[karo-tx-uboot.git] / common / board_f.c
index 204505519a8d5412c0a64858876a581a7b072231..81edbdf8e45b5899cab64d798d4c9f510afa3809 100644 (file)
@@ -31,6 +31,7 @@
 #include <version.h>
 #include <environment.h>
 #include <fdtdec.h>
+#include <fs.h>
 #if defined(CONFIG_CMD_IDE)
 #include <ide.h>
 #endif
@@ -305,6 +306,55 @@ __weak int arch_cpu_init(void)
        return 0;
 }
 
+#ifdef CONFIG_OF_HOSTFILE
+
+#define CHECK(x)               err = (x); if (err) goto failed;
+
+/* Create an empty device tree blob */
+static int make_empty_fdt(void *fdt)
+{
+       int err;
+
+       CHECK(fdt_create(fdt, 256));
+       CHECK(fdt_finish_reservemap(fdt));
+       CHECK(fdt_begin_node(fdt, ""));
+       CHECK(fdt_end_node(fdt));
+       CHECK(fdt_finish(fdt));
+
+       return 0;
+failed:
+       printf("Unable to create empty FDT: %s\n", fdt_strerror(err));
+       return -EACCES;
+}
+
+static int read_fdt_from_file(void)
+{
+       struct sandbox_state *state = state_get_current();
+       void *blob;
+       int size;
+       int err;
+
+       blob = map_sysmem(CONFIG_SYS_FDT_LOAD_ADDR, 0);
+       if (!state->fdt_fname) {
+               err = make_empty_fdt(blob);
+               if (!err)
+                       goto done;
+               return err;
+       }
+       err = fs_set_blk_dev("host", NULL, FS_TYPE_SANDBOX);
+       if (err)
+               return err;
+       size = fs_read(state->fdt_fname, CONFIG_SYS_FDT_LOAD_ADDR, 0, 0);
+       if (size < 0)
+               return -EIO;
+
+done:
+       gd->fdt_blob = blob;
+
+       return 0;
+}
+#endif
+
 #ifdef CONFIG_SANDBOX
 static int setup_ram_buf(void)
 {
@@ -328,6 +378,11 @@ static int setup_fdt(void)
 # else
        gd->fdt_blob = (ulong *)&_end;
 # endif
+#elif defined(CONFIG_OF_HOSTFILE)
+       if (read_fdt_from_file()) {
+               puts("Failed to read control FDT\n");
+               return -1;
+       }
 #endif
        /* Allow the early environment to override the fdt address */
        gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16,
@@ -612,27 +667,6 @@ static int setup_board_part1(void)
 #if defined(CONFIG_MPC83xx)
        bd->bi_immrbar = CONFIG_SYS_IMMR;
 #endif
-#if defined(CONFIG_MPC8220)
-       bd->bi_mbar_base = CONFIG_SYS_MBAR;     /* base of internal registers */
-       bd->bi_inpfreq = gd->arch.inp_clk;
-       bd->bi_pcifreq = gd->pci_clk;
-       bd->bi_vcofreq = gd->arch.vco_clk;
-       bd->bi_pevfreq = gd->arch.pev_clk;
-       bd->bi_flbfreq = gd->arch.flb_clk;
-
-       /* store bootparam to sram (backward compatible), here? */
-       {
-               u32 *sram = (u32 *) CONFIG_SYS_SRAM_BASE;
-
-               *sram++ = gd->ram_size;
-               *sram++ = gd->bus_clk;
-               *sram++ = gd->arch.inp_clk;
-               *sram++ = gd->cpu_clk;
-               *sram++ = gd->arch.vco_clk;
-               *sram++ = gd->arch.flb_clk;
-               *sram++ = 0xb8c3ba11;   /* boot signature */
-       }
-#endif
 
        return 0;
 }
@@ -866,9 +900,6 @@ static init_fnc_t init_sequence_f[] = {
 #if defined(CONFIG_MPC5xxx)
        prt_mpc5xxx_clks,
 #endif /* CONFIG_MPC5xxx */
-#if defined(CONFIG_MPC8220)
-       prt_mpc8220_clks,
-#endif
 #if defined(CONFIG_DISPLAY_BOARDINFO)
        checkboard,             /* display board info */
 #endif
@@ -1032,13 +1063,3 @@ void board_init_f_r(void)
        hang();
 }
 #endif /* CONFIG_X86 */
-
-void hang(void)
-{
-       puts("### ERROR ### Please RESET the board ###\n");
-#ifdef CONFIG_SANDBOX
-       os_exit(0);
-#else
-       for (;;);
-#endif
-}