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