#include <common.h>
#include <api.h>
+#include <cpu_func.h>
+#include <irq_func.h>
+#include <u-boot/crc.h>
/* TODO: can we just include all these headers whether needed or not? */
#if defined(CONFIG_CMD_BEDBUG)
#include <bedbug/type.h>
#include <command.h>
#include <console.h>
#include <dm.h>
-#include <environment.h>
+#include <env.h>
+#include <env_internal.h>
#include <fdtdec.h>
#include <ide.h>
#include <initcall.h>
#if defined(CONFIG_CMD_KGDB)
#include <kgdb.h>
#endif
+#include <irq_func.h>
#include <malloc.h>
#include <mapmem.h>
#ifdef CONFIG_BITBANGMII
#include <onenand_uboot.h>
#include <scsi.h>
#include <serial.h>
-#include <spi.h>
+#include <status_led.h>
#include <stdio_dev.h>
#include <timer.h>
#include <trace.h>
#include <linux/compiler.h>
#include <linux/err.h>
#include <efi_loader.h>
+#include <wdt.h>
+#if defined(CONFIG_GPIO_HOG)
+#include <asm/gpio.h>
+#endif
DECLARE_GLOBAL_DATA_PTR;
*/
fixup_cpu();
#endif
-#ifdef CONFIG_SYS_EXTRA_ENV_RELOC
+#ifdef CONFIG_SYS_RELOC_GD_ENV_ADDR
/*
- * 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
/*
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
gd->malloc_ptr / 1024);
#endif
/* The malloc area is immediately below the monitor copy in DRAM */
+ /*
+ * This value MUST match the value of gd->start_addr_sp in board_f.c:
+ * reserve_noncached().
+ */
malloc_start = gd->relocaddr - TOTAL_MALLOC_LEN;
mem_malloc_init((ulong)map_sysmem(malloc_start, TOTAL_MALLOC_LEN),
TOTAL_MALLOC_LEN);
}
#endif
-#if defined(CONFIG_PPC) && !defined(CONFIG_DM_SPI)
-static int initr_spi(void)
-{
- /* MPC8xx does this here */
-#ifdef CONFIG_MPC8XX_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)
if (should_load_env())
env_relocate();
else
- set_default_env(NULL);
+ env_set_default(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 */
}
#endif
-#if defined(CONFIG_CMD_PCMCIA) && !defined(CONFIG_IDE)
-static int initr_pcmcia(void)
-{
- puts("PCMCIA:");
- pcmcia_init();
- return 0;
-}
-#endif
-
#if defined(CONFIG_IDE) && !defined(CONFIG_BLK)
static int initr_ide(void)
{
}
/*
- * Over time we hope to remove these functions with code fragments and
- * stub functions, 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?
#ifdef CONFIG_SYS_NONCACHED_MEMORY
initr_noncached,
#endif
- bootstage_relocate,
#ifdef CONFIG_OF_LIVE
initr_of_live,
#endif
#ifdef CONFIG_DM
initr_dm,
#endif
-#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV)
+#if defined(CONFIG_ARM) || defined(CONFIG_NDS32) || defined(CONFIG_RISCV) || \
+ defined(CONFIG_SANDBOX)
board_init, /* Setup chipselects */
#endif
/*
stdio_init_tables,
initr_serial,
initr_announce,
+#if CONFIG_IS_ENABLED(WDT)
+ initr_watchdog,
+#endif
INIT_FUNC_WATCHDOG_RESET
#ifdef CONFIG_NEEDS_MANUAL_RELOC
initr_manual_reloc_cmdtable,
/* 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
#ifdef CONFIG_CMD_NET
initr_ethaddr,
#endif
+#if defined(CONFIG_GPIO_HOG)
+ gpio_hog_probe_all,
+#endif
#ifdef CONFIG_BOARD_LATE_INIT
board_late_init,
#endif
#ifdef CONFIG_POST
initr_post,
#endif
-#if defined(CONFIG_CMD_PCMCIA) && !defined(CONFIG_IDE)
- initr_pcmcia,
-#endif
#if defined(CONFIG_IDE) && !defined(CONFIG_BLK)
initr_ide,
#endif