diff options
Diffstat (limited to 'arch/x86/lib/init_helpers.c')
| -rw-r--r-- | arch/x86/lib/init_helpers.c | 48 | 
1 files changed, 44 insertions, 4 deletions
| diff --git a/arch/x86/lib/init_helpers.c b/arch/x86/lib/init_helpers.c index 87c7263fc..3eec9a61d 100644 --- a/arch/x86/lib/init_helpers.c +++ b/arch/x86/lib/init_helpers.c @@ -28,9 +28,11 @@  #include <net.h>  #include <ide.h>  #include <serial.h> +#include <spi.h>  #include <status_led.h>  #include <asm/processor.h>  #include <asm/u-boot-x86.h> +#include <linux/compiler.h>  #include <asm/init_helpers.h> @@ -71,7 +73,7 @@ int init_baudrate_f(void)  	return 0;  } -int calculate_relocation_address(void) +__weak int calculate_relocation_address(void)  {  	ulong text_start = (ulong)&__text_start;  	ulong bss_end = (ulong)&__bss_end; @@ -85,15 +87,16 @@ int calculate_relocation_address(void)  	/* Stack is at top of available memory */  	dest_addr = gd->ram_size; -	gd->start_addr_sp = dest_addr; -	/* U-Boot is below the stack */ -	dest_addr -= CONFIG_SYS_STACK_SIZE; +	/* U-Boot is at the top */  	dest_addr -= (bss_end - text_start);  	dest_addr &= ~15;  	gd->relocaddr = dest_addr;  	gd->reloc_off = (dest_addr - text_start); +	/* Stack is at the bottom, so it can grow down */ +	gd->start_addr_sp = dest_addr - CONFIG_SYS_MALLOC_LEN; +  	return 0;  } @@ -160,3 +163,40 @@ int set_load_addr_r(void)  	return 0;  } + +int init_func_spi(void) +{ +	puts("SPI:   "); +	spi_init(); +	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 |