X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=common%2Fboard_r.c;h=150e8cd424f64b6ebe435bf817f0483492d9a153;hb=06985289d452ad2423145cfed8cece61a7f8cec6;hp=6349e86f71ae0f07b81e0991175843856a82daaf;hpb=92f84b67e5f259bb5805706a216d4605c37862bc;p=oweals%2Fu-boot.git diff --git a/common/board_r.c b/common/board_r.c index 6349e86f71..150e8cd424 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (c) 2011 The Chromium OS Authors. * (C) Copyright 2002-2006 @@ -6,8 +7,6 @@ * (C) Copyright 2002 * Sysgo Real-Time Solutions, GmbH * Marius Groeger - * - * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -23,10 +22,6 @@ #include #include #include -#include -#ifdef CONFIG_PS2KBD -#include -#endif #if defined(CONFIG_CMD_KGDB) #include #endif @@ -41,7 +36,6 @@ #include #include #include -#include #include #include #include @@ -54,6 +48,7 @@ #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; @@ -145,15 +140,12 @@ static int initr_reloc_global_data(void) */ fixup_cpu(); #endif -#ifdef CONFIG_SYS_EXTRA_ENV_RELOC +#if !defined(CONFIG_ENV_ADDR) || defined(ENV_IS_EMBEDDED) /* - * Some systems need to relocate the env_addr pointer early because the - * location it points to will get invalidated before env_relocate is - * called. One example is on systems that might use a L2 or L3 cache - * in SRAM mode and initialize that cache from SRAM mode back to being - * a cache in cpu_init_r. + * Relocate the early env_addr pointer unless we know it is not inside + * the binary. Some systems need this and for the rest, it doesn't hurt. */ - gd->env_addr += gd->relocaddr - CONFIG_SYS_MONITOR_BASE; + gd->env_addr += gd->reloc_off; #endif #ifdef CONFIG_OF_EMBED /* @@ -163,6 +155,13 @@ static int initr_reloc_global_data(void) gd->fdt_blob += gd->reloc_off; #endif #ifdef CONFIG_EFI_LOADER + /* + * On the ARM architecture gd is mapped to a fixed register (r9 or x18). + * As this register may be overwritten by an EFI payload we save it here + * and restore it on every callback entered. + */ + efi_save_gd(); + efi_runtime_relocate(gd->relocaddr, NULL); #endif @@ -387,20 +386,6 @@ static int initr_flash(void) } #endif -#if defined(CONFIG_PPC) && !defined(CONFIG_DM_SPI) -static int initr_spi(void) -{ - /* PPC does this here */ -#ifdef CONFIG_SPI -#if !defined(CONFIG_ENV_IS_IN_EEPROM) - spi_init_f(); -#endif - spi_init_r(); -#endif - return 0; -} -#endif - #ifdef CONFIG_CMD_NAND /* go init the NAND */ static int initr_nand(void) @@ -459,9 +444,10 @@ static int initr_env(void) if (should_load_env()) env_relocate(); else - set_default_env(NULL); + set_default_env(NULL, 0); #ifdef CONFIG_OF_CONTROL - env_set_addr("fdtcontroladdr", gd->fdt_blob); + env_set_hex("fdtcontroladdr", + (unsigned long)map_to_sysmem(gd->fdt_blob)); #endif /* Initialize from environment */ @@ -558,6 +544,7 @@ static int initr_scsi(void) { puts("SCSI: "); scsi_init(); + puts("\n"); return 0; } @@ -601,7 +588,7 @@ static int initr_pcmcia(void) } #endif -#if defined(CONFIG_IDE) +#if defined(CONFIG_IDE) && !defined(CONFIG_BLK) static int initr_ide(void) { puts("IDE: "); @@ -642,15 +629,6 @@ static int initr_bedbug(void) } #endif -#ifdef CONFIG_PS2KBD -static int initr_kbd(void) -{ - puts("PS/2: "); - kbd_init(); - return 0; -} -#endif - static int run_main_loop(void) { #ifdef CONFIG_SANDBOX @@ -663,10 +641,7 @@ static int run_main_loop(void) } /* - * Over time we hope to remove these functions with code fragments and - * stub funtcions, and instead call the relevant function directly. - * - * We also hope to remove most of the driver-related init and do it if/when + * We hope to remove most of the driver-related init and do it if/when * the driver is later used. * * TODO: perhaps reset the watchdog in the initcall function after each call? @@ -703,7 +678,11 @@ static init_fnc_t init_sequence_r[] = { #ifdef CONFIG_DM initr_dm, #endif -#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) +#if defined(CONFIG_WDT) + initr_watchdog, +#endif +#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \ + defined(CONFIG_SANDBOX) board_init, /* Setup chipselects */ #endif /* @@ -758,9 +737,6 @@ static init_fnc_t init_sequence_r[] = { /* initialize higher level parts of CPU like time base and timers */ cpu_init_r, #endif -#ifdef CONFIG_PPC - initr_spi, -#endif #ifdef CONFIG_CMD_NAND initr_nand, #endif @@ -840,7 +816,7 @@ static init_fnc_t init_sequence_r[] = { #if defined(CONFIG_CMD_PCMCIA) && !defined(CONFIG_IDE) initr_pcmcia, #endif -#if defined(CONFIG_IDE) +#if defined(CONFIG_IDE) && !defined(CONFIG_BLK) initr_ide, #endif #ifdef CONFIG_LAST_STAGE_INIT @@ -858,9 +834,6 @@ static init_fnc_t init_sequence_r[] = { #endif #if defined(CONFIG_PRAM) initr_mem, -#endif -#ifdef CONFIG_PS2KBD - initr_kbd, #endif run_main_loop, };