diff options
Diffstat (limited to 'arch/arm/lib/board.c')
| -rw-r--r-- | arch/arm/lib/board.c | 29 | 
1 files changed, 24 insertions, 5 deletions
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index c7648449b..368fc5d6b 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -48,6 +48,8 @@  #include <nand.h>  #include <onenand_uboot.h>  #include <mmc.h> +#include <libfdt.h> +#include <fdtdec.h>  #include <post.h>  #include <logbuff.h> @@ -234,6 +236,9 @@ init_fnc_t *init_sequence[] = {  #if defined(CONFIG_BOARD_EARLY_INIT_F)  	board_early_init_f,  #endif +#ifdef CONFIG_OF_CONTROL +	fdtdec_check_fdt, +#endif  	timer_init,		/* initialize timer */  #ifdef CONFIG_FSL_ESDHC  	get_clocks, @@ -274,6 +279,16 @@ void board_init_f(ulong bootflag)  	memset((void *)gd, 0, sizeof(gd_t));  	gd->mon_len = _bss_end_ofs; +#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);  	for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {  		if ((*init_fnc_ptr)() != 0) { @@ -477,13 +492,14 @@ void board_init_r(gd_t *id, ulong dest_addr)  	flash_size = flash_init();  	if (flash_size > 0) {  # ifdef CONFIG_SYS_FLASH_CHECKSUM +		char *s = getenv("flashchecksum"); +  		print_size(flash_size, "");  		/*  		 * Compute and print flash CRC if flashchecksum is set to 'y'  		 *  		 * NOTE: Maybe we should add some WATCHDOG_RESET()? XXX  		 */ -		s = getenv("flashchecksum");  		if (s && (*s == 'y')) {  			printf("  CRC: %08X", crc32(0,  				(const unsigned char *) CONFIG_SYS_FLASH_BASE, @@ -566,12 +582,15 @@ void board_init_r(gd_t *id, ulong dest_addr)  	/* Initialize from environment */  	load_addr = getenv_ulong("loadaddr", 16, load_addr);  #if defined(CONFIG_CMD_NET) -	s = getenv("bootfile"); -	if (s != NULL) -		copy_filename(BootFile, s, sizeof(BootFile)); +	{ +		char *s = getenv("bootfile"); + +		if (s != NULL) +			copy_filename(BootFile, s, sizeof(BootFile)); +	}  #endif -#ifdef BOARD_LATE_INIT +#ifdef CONFIG_BOARD_LATE_INIT  	board_late_init();  #endif  |