X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=common%2Fboard_f.c;h=0bdce64ca583731c3ede6dc6c45ee75ebab4e0f7;hb=068feb9b86d991283c43b56e36094f4e6f484d04;hp=49c8bc89f3cd91cb7029701747eebc53a641d0cf;hpb=f19955a01482d118eac0fdaf530ec6e5b08cf414;p=people%2Fms%2Fu-boot.git diff --git a/common/board_f.c b/common/board_f.c index 49c8bc89f3..0bdce64ca5 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -19,7 +19,6 @@ #include #include #include -#include #include #include #include @@ -118,7 +117,7 @@ __weak void board_add_ram_info(int use_default) static int init_baud_rate(void) { - gd->baudrate = getenv_ulong("baudrate", 10, CONFIG_BAUDRATE); + gd->baudrate = env_get_ulong("baudrate", 10, CONFIG_BAUDRATE); return 0; } @@ -211,14 +210,6 @@ static int init_func_spi(void) } #endif -__maybe_unused -static int zero_global_data(void) -{ - memset((void *)gd, '\0', sizeof(gd_t)); - - return 0; -} - static int setup_mon_len(void) { #if defined(__ARM__) || defined(__MICROBLAZE__) @@ -227,7 +218,7 @@ static int setup_mon_len(void) gd->mon_len = (ulong)&_end - (ulong)_init; #elif defined(CONFIG_NIOS2) || defined(CONFIG_XTENSA) gd->mon_len = CONFIG_SYS_MONITOR_LEN; -#elif defined(CONFIG_NDS32) || defined(CONFIG_SH) +#elif defined(CONFIG_NDS32) || defined(CONFIG_SH) || defined(CONFIG_RISCV) gd->mon_len = (ulong)(&__bss_end) - (ulong)(&_start); #elif defined(CONFIG_SYS_MONITOR_BASE) /* TODO: use (ulong)&__bss_end - (ulong)&__text_start; ? */ @@ -304,27 +295,13 @@ static int setup_dest_addr(void) return 0; } -#if defined(CONFIG_LOGBUFFER) -static int reserve_logbuffer(void) -{ -#ifndef CONFIG_ALT_LB_ADDR - /* reserve kernel log buffer */ - gd->relocaddr -= LOGBUFF_RESERVE; - debug("Reserving %dk for kernel logbuffer at %08lx\n", LOGBUFF_LEN, - gd->relocaddr); -#endif - - return 0; -} -#endif - #ifdef CONFIG_PRAM /* reserve protected RAM */ static int reserve_pram(void) { ulong reg; - reg = getenv_ulong("pram", 10, CONFIG_PRAM); + reg = env_get_ulong("pram", 10, CONFIG_PRAM); gd->relocaddr -= (reg << 10); /* size is in kB */ debug("Reserving %ldk for protected RAM at %08lx\n", reg, gd->relocaddr); @@ -340,7 +317,7 @@ static int reserve_round_4k(void) } #ifdef CONFIG_ARM -static int reserve_mmu(void) +__weak int reserve_mmu(void) { #if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF)) /* reserve TLB table */ @@ -727,7 +704,7 @@ static int initf_bootstage(void) static int initf_console_record(void) { -#if defined(CONFIG_CONSOLE_RECORD) && defined(CONFIG_SYS_MALLOC_F_LEN) +#if defined(CONFIG_CONSOLE_RECORD) && CONFIG_VAL(SYS_MALLOC_F_LEN) return console_record_init(); #else return 0; @@ -736,7 +713,7 @@ static int initf_console_record(void) static int initf_dm(void) { -#if defined(CONFIG_DM) && defined(CONFIG_SYS_MALLOC_F_LEN) +#if defined(CONFIG_DM) && CONFIG_VAL(SYS_MALLOC_F_LEN) int ret; bootstage_start(BOOTSTATE_ID_ACCUM_DM_F, "dm_f"); @@ -774,6 +751,7 @@ static const init_fnc_t init_sequence_f[] = { trace_early_init, #endif initf_malloc, + log_init, initf_bootstage, /* uses its own timer, so does not need DM */ initf_console_record, #if defined(CONFIG_HAVE_FSP) @@ -854,9 +832,6 @@ static const init_fnc_t init_sequence_f[] = { * - board info struct */ setup_dest_addr, -#if defined(CONFIG_LOGBUFFER) - reserve_logbuffer, -#endif #ifdef CONFIG_PRAM reserve_pram, #endif @@ -910,25 +885,6 @@ static const init_fnc_t init_sequence_f[] = { void board_init_f(ulong boot_flags) { -#ifdef CONFIG_SYS_GENERIC_GLOBAL_DATA - /* - * For some architectures, global data is initialized and used before - * calling this function. The data should be preserved. For others, - * CONFIG_SYS_GENERIC_GLOBAL_DATA should be defined and use the stack - * here to host global data until relocation. - */ - gd_t data; - - gd = &data; - - /* - * Clear global data before it is accessed at debug print - * in initcall_run_list. Otherwise the debug print probably - * get the wrong value of gd->have_console. - */ - zero_global_data(); -#endif - gd->flags = boot_flags; gd->have_console = 0; @@ -977,8 +933,13 @@ void board_init_f_r(void) * The pre-relocation drivers may be using memory that has now gone * away. Mark serial as unavailable - this will fall back to the debug * UART if available. + * + * Do the same with log drivers since the memory may not be available. */ - gd->flags &= ~GD_FLG_SERIAL_READY; + gd->flags &= ~(GD_FLG_SERIAL_READY | GD_FLG_LOG_READY); +#ifdef CONFIG_TIMER + gd->timer = NULL; +#endif /* * U-Boot has been copied into SDRAM, the BSS has been cleared etc.