X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=arch%2Farm%2Flib%2Fboard.c;h=a482706fe8aaa603139d8361a52a16305ed3d0ca;hb=87a5d601031652293ec4b729fdb7ee01bbd940a8;hp=85320bc19006cbbc4a0d8daeeb22b882e9f3d4f2;hpb=2d3be7c456f9d0bcfd4d4b0515aecd32d6a06037;p=platform%2Fkernel%2Fu-boot.git diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index 85320bc..a482706 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -48,6 +48,10 @@ #include #include #include +#include +#include +#include +#include #ifdef CONFIG_BITBANGMII #include @@ -78,7 +82,6 @@ extern void rtl8019_get_enetaddr (uchar * addr); #include #endif - /************************************************************************ * Coloured LED functionality ************************************************************************ @@ -116,16 +119,11 @@ void blue_led_off(void) __attribute__((weak, alias("__blue_led_off"))); #if defined(CONFIG_ARM_DCC) && !defined(CONFIG_BAUDRATE) #define CONFIG_BAUDRATE 115200 #endif + static int init_baudrate(void) { - char tmp[64]; /* long enough for environment variables */ - int i = getenv_f("baudrate", tmp, sizeof(tmp)); - - gd->baudrate = (i > 0) - ? (int) simple_strtoul(tmp, NULL, 10) - : CONFIG_BAUDRATE; - - return (0); + gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE); + return 0; } static int display_banner(void) @@ -237,6 +235,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, @@ -265,6 +266,9 @@ void board_init_f(ulong bootflag) init_fnc_t **init_fnc_ptr; gd_t *id; ulong addr, addr_sp; +#ifdef CONFIG_PRAM + ulong reg; +#endif /* Pointer is writable since we allocated a register for it */ gd = (gd_t *) ((CONFIG_SYS_INIT_SP_ADDR) & ~0x07); @@ -274,6 +278,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) { @@ -315,9 +329,7 @@ void board_init_f(ulong bootflag) /* * reserve protected RAM */ - i = getenv_r("pram", (char *)tmp, sizeof(tmp)); - reg = (i > 0) ? simple_strtoul((const char *)tmp, NULL, 10) : - CONFIG_PRAM; + reg = getenv_ulong("pram", 10, CONFIG_PRAM); addr -= (reg << 10); /* size is in kB */ debug("Reserving %ldk for protected RAM at %08lx\n", reg, addr); #endif /* CONFIG_PRAM */ @@ -439,15 +451,12 @@ static char *failed = "*** failed ***\n"; void board_init_r(gd_t *id, ulong dest_addr) { - char *s; - bd_t *bd; ulong malloc_start; #if !defined(CONFIG_SYS_NO_FLASH) ulong flash_size; #endif gd = id; - bd = gd->bd; gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */ @@ -482,13 +491,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, @@ -515,7 +525,7 @@ void board_init_r(gd_t *id, ulong dest_addr) #ifdef CONFIG_GENERIC_MMC puts("MMC: "); - mmc_initialize(bd); + mmc_initialize(gd->bd); #endif #ifdef CONFIG_HAS_DATAFLASH @@ -569,16 +579,17 @@ void board_init_r(gd_t *id, ulong dest_addr) #endif /* CONFIG_DRIVER_SMC91111 || CONFIG_DRIVER_LAN91C96 */ /* Initialize from environment */ - s = getenv("loadaddr"); - if (s != NULL) - load_addr = simple_strtoul(s, NULL, 16); + 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 @@ -586,9 +597,7 @@ void board_init_r(gd_t *id, ulong dest_addr) bb_miiphy_init(); #endif #if defined(CONFIG_CMD_NET) -#if defined(CONFIG_NET_MULTI) puts("Net: "); -#endif eth_initialize(gd->bd); #if defined(CONFIG_RESET_PHY_R) debug("Reset Ethernet PHY\n"); @@ -606,18 +615,11 @@ void board_init_r(gd_t *id, ulong dest_addr) * taking into account the protected RAM at top of memory */ { - ulong pram; + ulong pram = 0; uchar memsz[32]; -#ifdef CONFIG_PRAM - char *s; - s = getenv("pram"); - if (s != NULL) - pram = simple_strtoul(s, NULL, 10); - else - pram = CONFIG_PRAM; -#else - pram = 0; +#ifdef CONFIG_PRAM + pram = getenv_ulong("pram", 10, CONFIG_PRAM); #endif #ifdef CONFIG_LOGBUFFER #ifndef CONFIG_ALT_LB_ADDR