X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-uboot.git;a=blobdiff_plain;f=arch%2Favr32%2Flib%2Fboard.c;h=2e79e98eb0d2ec843dc0ba3357410ab4a0936ed4;hp=8b56237f1893d705807ad5735c0e0d78664ca9fd;hb=a7e62be09189dae3a16882e53f15c38754f9db91;hpb=d963e84c92a63b4e6c4f2f80482a5ecbe9b24fe0 diff --git a/arch/avr32/lib/board.c b/arch/avr32/lib/board.c index 8b56237f18..2e79e98eb0 100644 --- a/arch/avr32/lib/board.c +++ b/arch/avr32/lib/board.c @@ -23,27 +23,27 @@ #include #include #include -#include #include #include +#include #ifdef CONFIG_BITBANGMII #include #endif -#include #include #include +#include #ifndef CONFIG_IDENT_STRING #define CONFIG_IDENT_STRING "" #endif +#ifdef CONFIG_GENERIC_ATMEL_MCI +#include +#endif DECLARE_GLOBAL_DATA_PTR; -const char version_string[] = - U_BOOT_VERSION " ("U_BOOT_DATE" - "U_BOOT_TIME") " CONFIG_IDENT_STRING; - unsigned long monitor_flash_len; /* Weak aliases for optional board functions */ @@ -54,6 +54,13 @@ static int __do_nothing(void) int board_postclk_init(void) __attribute__((weak, alias("__do_nothing"))); int board_early_init_r(void) __attribute__((weak, alias("__do_nothing"))); +/* provide cpu_mmc_init, to overwrite provide board_mmc_init */ +int cpu_mmc_init(bd_t *bd) +{ + /* This calls the atmel_mci_init in gen_atmel_mci.c */ + return atmel_mci_init((void *)ATMEL_BASE_MMCI); +} + #ifdef CONFIG_SYS_DMA_ALLOC_LEN #include #include @@ -100,33 +107,19 @@ static inline void dma_alloc_init(void) static int init_baudrate(void) { - char tmp[64]; - int i; - - i = getenv_f("baudrate", tmp, sizeof(tmp)); - if (i > 0) { - gd->baudrate = simple_strtoul(tmp, NULL, 10); - } else { - gd->baudrate = CONFIG_BAUDRATE; - } + gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE); return 0; } - static int display_banner (void) { printf ("\n\n%s\n\n", version_string); printf ("U-Boot code: %08lx -> %08lx data: %08lx -> %08lx\n", (unsigned long)_text, (unsigned long)_etext, - (unsigned long)_data, (unsigned long)_end); + (unsigned long)_data, (unsigned long)(&__bss_end)); return 0; } -void hang(void) -{ - for (;;) ; -} - static int display_dram_config (void) { int i; @@ -190,7 +183,7 @@ void board_init_f(ulong board_type) * - stack */ addr = CONFIG_SYS_SDRAM_BASE + sdram_size; - monitor_len = _end - _text; + monitor_len = (char *)(&__bss_end) - _text; /* * Reserve memory for u-boot code, data and bss. @@ -213,11 +206,11 @@ void board_init_f(ulong board_type) #ifdef CONFIG_FB_ADDR printf("LCD: Frame buffer allocated at preset 0x%08x\n", CONFIG_FB_ADDR); - gd->fb_base = (void *)CONFIG_FB_ADDR; + gd->fb_base = CONFIG_FB_ADDR; #else addr = lcd_setmem(addr); printf("LCD: Frame buffer allocated at 0x%08lx\n", addr); - gd->fb_base = (void *)addr; + gd->fb_base = addr; #endif /* CONFIG_FB_ADDR */ #endif /* CONFIG_LCD */ @@ -233,7 +226,7 @@ void board_init_f(ulong board_type) /* And finally, a new, bigger stack. */ new_sp = (unsigned long *)addr; - gd->stack_end = addr; + gd->arch.stack_end = addr; *(--new_sp) = 0; *(--new_sp) = 0; @@ -252,11 +245,9 @@ void board_init_f(ulong board_type) void board_init_r(gd_t *new_gd, ulong dest_addr) { - extern void malloc_bin_reloc (void); #ifndef CONFIG_ENV_IS_NOWHERE extern char * env_name_spec; #endif - char *s; bd_t *bd; gd = new_gd; @@ -276,8 +267,8 @@ void board_init_r(gd_t *new_gd, ulong dest_addr) /* * We have to relocate the command table manually */ - fixup_cmdtable(&__u_boot_cmd_start, - (ulong)(&__u_boot_cmd_end - &__u_boot_cmd_start)); + fixup_cmdtable(ll_entry_start(cmd_tbl_t, cmd), + ll_entry_count(cmd_tbl_t, cmd)); #endif /* defined(CONFIG_NEEDS_MANUAL_RELOC) */ /* there are some other pointer constants we must deal with */ @@ -290,7 +281,6 @@ void board_init_r(gd_t *new_gd, ulong dest_addr) /* The malloc area is right below the monitor image in RAM */ mem_malloc_init(CONFIG_SYS_MONITOR_BASE + gd->reloc_off - CONFIG_SYS_MALLOC_LEN, CONFIG_SYS_MALLOC_LEN); - malloc_bin_reloc(); dma_alloc_init(); enable_interrupts(); @@ -318,29 +308,24 @@ void board_init_r(gd_t *new_gd, ulong dest_addr) /* initialize environment */ env_relocate(); - bd->bi_ip_addr = getenv_IPaddr ("ipaddr"); - stdio_init(); jumptable_init(); console_init_r(); - s = getenv("loadaddr"); - if (s) - load_addr = simple_strtoul(s, NULL, 16); + /* Initialize from environment */ + load_addr = getenv_ulong("loadaddr", 16, load_addr); #ifdef CONFIG_BITBANGMII bb_miiphy_init(); #endif #if defined(CONFIG_CMD_NET) - s = getenv("bootfile"); - if (s) - copy_filename(BootFile, s, sizeof(BootFile)); -#if defined(CONFIG_NET_MULTI) puts("Net: "); -#endif eth_initialize(gd->bd); #endif +#ifdef CONFIG_GENERIC_ATMEL_MCI + mmc_initialize(gd->bd); +#endif for (;;) { main_loop(); }