From 8d61625d6a73307857f80002949583105545dbbc Mon Sep 17 00:00:00 2001 From: Graeme Russ Date: Tue, 27 Nov 2012 15:38:36 +0000 Subject: x86: Put global data on the stack Putting global data on the stack simplifies the init process (and makes it slightly quicker). During the 'flash' stage of the init sequence, global data is in the CAR stack. After SDRAM is initialised, global data is copied from CAR to the SDRAM stack Signed-off-by: Graeme Russ Signed-off-by: Simon Glass --- arch/x86/lib/board.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch/x86/lib/board.c') diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c index e5caf1356..a13f5c0e1 100644 --- a/arch/x86/lib/board.c +++ b/arch/x86/lib/board.c @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -121,7 +122,6 @@ init_fnc_t *init_sequence_f[] = { * initialise the CPU caches (to speed up the relocation process) */ init_fnc_t *init_sequence_f_r[] = { - copy_gd_to_ram_f_r, init_cache_f_r, copy_uboot_to_ram, clear_bss, -- cgit v1.2.3-70-g09d2 From c73c6de60c94b444cd717ffd27041a49fbbc4849 Mon Sep 17 00:00:00 2001 From: Graeme Russ Date: Tue, 27 Nov 2012 15:38:37 +0000 Subject: x86: Remove duplicate PCI init Signed-off-by: Graeme Russ Signed-off-by: Simon Glass --- arch/x86/lib/board.c | 3 --- 1 file changed, 3 deletions(-) (limited to 'arch/x86/lib/board.c') diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c index a13f5c0e1..c7d89604c 100644 --- a/arch/x86/lib/board.c +++ b/arch/x86/lib/board.c @@ -164,9 +164,6 @@ init_fnc_t *init_sequence_r[] = { #ifdef CONFIG_MISC_INIT_R misc_init_r, #endif -#if defined(CONFIG_CMD_PCMCIA) && !defined(CONFIG_CMD_IDE) - pci_init_r, -#endif #if defined(CONFIG_CMD_KGDB) kgdb_init_r, #endif -- cgit v1.2.3-70-g09d2 From 8313315b9ab3a130784a2a7d0c4f329808690c0b Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 3 Nov 2012 11:41:23 +0000 Subject: x86: Initialise SPI if enabled If we have SPI support, make sure that we init it. Signed-off-by: Gabe Black Signed-off-by: Simon Glass Signed-off-by: Vic Yang --- arch/x86/include/asm/init_helpers.h | 1 + arch/x86/lib/board.c | 3 +++ arch/x86/lib/init_helpers.c | 9 +++++++++ 3 files changed, 13 insertions(+) (limited to 'arch/x86/lib/board.c') diff --git a/arch/x86/include/asm/init_helpers.h b/arch/x86/include/asm/init_helpers.h index ade694fba..2f437e034 100644 --- a/arch/x86/include/asm/init_helpers.h +++ b/arch/x86/include/asm/init_helpers.h @@ -37,5 +37,6 @@ int init_bd_struct_r(void); int flash_init_r(void); int status_led_set_r(void); int set_load_addr_r(void); +int init_func_spi(void); #endif /* !_INIT_HELPERS_H_ */ diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c index c7d89604c..2ffe0614d 100644 --- a/arch/x86/lib/board.c +++ b/arch/x86/lib/board.c @@ -153,6 +153,9 @@ init_fnc_t *init_sequence_r[] = { serial_initialize_r, #ifndef CONFIG_SYS_NO_FLASH flash_init_r, +#endif +#ifdef CONFIG_SPI + init_func_spi; #endif env_relocate_r, #ifdef CONFIG_PCI diff --git a/arch/x86/lib/init_helpers.c b/arch/x86/lib/init_helpers.c index 87c7263fc..d10a846cf 100644 --- a/arch/x86/lib/init_helpers.c +++ b/arch/x86/lib/init_helpers.c @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -160,3 +161,11 @@ int set_load_addr_r(void) return 0; } + +int init_func_spi(void) +{ + puts("SPI: "); + spi_init(); + puts("ready\n"); + return 0; +} -- cgit v1.2.3-70-g09d2 From b208c7f1d05c304e0dd27b7278ffb00e4af8e26e Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 3 Nov 2012 11:41:30 +0000 Subject: x86: Add support for CONFIG_OF_CONTROL Allow a device tree to be provided through the standard mechanisms. Signed-off-by: Gabe Black Signed-off-by: Simon Glass --- arch/x86/lib/board.c | 7 +++++++ arch/x86/lib/init_helpers.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) (limited to 'arch/x86/lib/board.c') diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c index 2ffe0614d..22bc26dde 100644 --- a/arch/x86/lib/board.c +++ b/arch/x86/lib/board.c @@ -99,10 +99,17 @@ typedef int (init_fnc_t) (void); init_fnc_t *init_sequence_f[] = { cpu_init_f, board_early_init_f, +#ifdef CONFIG_OF_CONTROL + find_fdt, + fdtdec_check_fdt, +#endif env_init, init_baudrate_f, serial_init, console_init_f, +#ifdef CONFIG_OF_CONTROL + prepare_fdt, +#endif dram_init_f, calculate_relocation_address, diff --git a/arch/x86/lib/init_helpers.c b/arch/x86/lib/init_helpers.c index 3a62b2ea0..3eec9a61d 100644 --- a/arch/x86/lib/init_helpers.c +++ b/arch/x86/lib/init_helpers.c @@ -171,3 +171,32 @@ int init_func_spi(void) puts("ready\n"); return 0; } + +#ifdef CONFIG_OF_CONTROL +int find_fdt(void) +{ +#ifdef CONFIG_OF_EMBED + /* Get a pointer to the FDT */ + gd->fdt_blob = _binary_dt_dtb_start; +#elif defined CONFIG_OF_SEPARATE + /* FDT is at end of image */ + gd->fdt_blob = (void *)(_end_ofs + _TEXT_BASE); +#endif + /* Allow the early environment to override the fdt address */ + gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16, + (uintptr_t)gd->fdt_blob); + + return 0; +} + +int prepare_fdt(void) +{ + /* For now, put this check after the console is ready */ + if (fdtdec_prepare_fdt()) { + panic("** CONFIG_OF_CONTROL defined but no FDT - please see " + "doc/README.fdt-control"); + } + + return 0; +} +#endif -- cgit v1.2.3-70-g09d2