// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2019 * Author(s): Giulio Benetti <giulio.benetti@benettiengineering.com> */ #include <common.h> #include <dm.h> #include <init.h> #include <log.h> #include <ram.h> #include <spl.h> #include <asm/global_data.h> #include <asm/io.h> #include <asm/armv7m.h> #include <serial.h> DECLARE_GLOBAL_DATA_PTR; int dram_init(void) { #ifndef CONFIG_SUPPORT_SPL int rv; struct udevice *dev; rv = uclass_get_device(UCLASS_RAM, 0, &dev); if (rv) { debug("DRAM init failed: %d\n", rv); return rv; } #endif return fdtdec_setup_mem_size_base(); } int dram_init_banksize(void) { return fdtdec_setup_memory_banksize(); } #ifdef CONFIG_SPL_BUILD #ifdef CONFIG_SPL_OS_BOOT int spl_start_uboot(void) { debug("SPL: booting kernel\n"); /* break into full u-boot on 'c' */ return serial_tstc() && serial_getc() == 'c'; } #endif int spl_dram_init(void) { struct udevice *dev; int rv; rv = uclass_get_device(UCLASS_RAM, 0, &dev); if (rv) debug("DRAM init failed: %d\n", rv); return rv; } void spl_board_init(void) { preloader_console_init(); spl_dram_init(); arch_cpu_init(); /* to configure mpu for sdram rw permissions */ } u32 spl_boot_device(void) { return BOOT_DEVICE_MMC1; } #endif int board_init(void) { gd->bd->bi_boot_params = gd->bd->bi_dram[0].start + 0x100; return 0; }