This patch converts MC8536DS to use generic board. This is for discussion.
Do NOT apply.

To make it work

Add #ifdef CONFIG_OF_CONTROL for reserve_fdt(), setup_fdt(), reloc_fdt().
Set initial value for gd. Powerpc SoCs use locked cache as init RAM.
Change return value for mac_read_from_eeprom() when mismatch happens to
prevent calling hang().

Signed-off-by: York Sun <york...@freescale.com>
---
 board/freescale/common/sys_eeprom.c |    2 +-
 common/board_f.c                    |   18 +++++++++++++++++-
 include/configs/MPC8536DS.h         |    2 ++
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/board/freescale/common/sys_eeprom.c 
b/board/freescale/common/sys_eeprom.c
index 9c18dd8..a3c37ff 100644
--- a/board/freescale/common/sys_eeprom.c
+++ b/board/freescale/common/sys_eeprom.c
@@ -447,7 +447,7 @@ int mac_read_from_eeprom(void)
        crcp = (void *)&e + crc_offset;
        if (crc != be32_to_cpu(*crcp)) {
                printf("CRC mismatch (%08x != %08x)\n", crc, 
be32_to_cpu(e.crc));
-               return -1;
+               return 0;
        }
 
 #ifdef CONFIG_SYS_I2C_EEPROM_NXID
diff --git a/common/board_f.c b/common/board_f.c
index f285bad..b972db8 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -335,6 +335,7 @@ static int setup_ram_buf(void)
 }
 #endif
 
+#ifdef CONFIG_OF_CONTROL
 static int setup_fdt(void)
 {
 #ifdef CONFIG_OF_EMBED
@@ -354,6 +355,7 @@ static int setup_fdt(void)
                                                (uintptr_t)gd->fdt_blob);
        return 0;
 }
+#endif
 
 /* Get the top of usable RAM */
 __weak ulong board_get_usable_ram_top(ulong total_size)
@@ -549,6 +551,7 @@ static int reserve_global_data(void)
        return 0;
 }
 
+#ifdef CONFIG_OF_CONTROL
 static int reserve_fdt(void)
 {
        /*
@@ -567,6 +570,7 @@ static int reserve_fdt(void)
 
        return 0;
 }
+#endif
 
 static int reserve_stacks(void)
 {
@@ -584,7 +588,6 @@ static int reserve_stacks(void)
        gd->start_addr_sp -= 16;
        gd->start_addr_sp &= ~0xf;
        gd->irq_sp = gd->start_addr_sp;
-
        /*
         * Handle architecture-specific things here
         * TODO(s...@chromium.org): Perhaps create arch_reserve_stack()
@@ -724,6 +727,7 @@ static int setup_dram_config(void)
        return 0;
 }
 
+#ifdef CONFIG_OF_CONTROL
 static int reloc_fdt(void)
 {
        if (gd->new_fdt) {
@@ -733,6 +737,7 @@ static int reloc_fdt(void)
 
        return 0;
 }
+#endif
 
 static int setup_reloc(void)
 {
@@ -789,7 +794,9 @@ static init_fnc_t init_sequence_f[] = {
        setup_ram_buf,
 #endif
        setup_mon_len,
+#ifdef CONFIG_OF_CONTROL
        setup_fdt,
+#endif
        trace_early_init,
 #if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
        /* TODO: can this go into arch_cpu_init()? */
@@ -945,7 +952,9 @@ static init_fnc_t init_sequence_f[] = {
 #endif
        setup_machine,
        reserve_global_data,
+#ifdef CONFIG_OF_CONTROL
        reserve_fdt,
+#endif
        reserve_stacks,
        setup_dram_config,
        show_dram_config,
@@ -960,7 +969,9 @@ static init_fnc_t init_sequence_f[] = {
        setup_board_extra,
 #endif
        INIT_FUNC_WATCHDOG_RESET
+#ifdef CONFIG_OF_CONTROL
        reloc_fdt,
+#endif
        setup_reloc,
 #if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX)
        jump_to_copy,
@@ -976,6 +987,11 @@ void board_init_f(ulong boot_flags)
        gd = &data;
 #endif
 
+#ifdef CONFIG_PPC
+       gd = (gd_t *) (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET);
+       __asm__ __volatile__("":::"memory");
+#endif
+
        /*
         * Clear global data before it is accessed at debug print
         * in initcall_run_list. Otherwise the debug print probably
diff --git a/include/configs/MPC8536DS.h b/include/configs/MPC8536DS.h
index f15e162..c241736 100644
--- a/include/configs/MPC8536DS.h
+++ b/include/configs/MPC8536DS.h
@@ -11,6 +11,8 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 #include "../board/freescale/common/ics307_clk.h"
 
 #ifdef CONFIG_36BIT
-- 
1.7.9.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to