1*601fbec7SMasahiro Yamada /* 2*601fbec7SMasahiro Yamada * Copyright (C) 2011 3*601fbec7SMasahiro Yamada * Heiko Schocher, DENX Software Engineering, hs@denx.de. 4*601fbec7SMasahiro Yamada * 5*601fbec7SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 6*601fbec7SMasahiro Yamada */ 7*601fbec7SMasahiro Yamada #include <common.h> 8*601fbec7SMasahiro Yamada #include <config.h> 9*601fbec7SMasahiro Yamada #include <spl.h> 10*601fbec7SMasahiro Yamada #include <asm/u-boot.h> 11*601fbec7SMasahiro Yamada #include <asm/utils.h> 12*601fbec7SMasahiro Yamada #include <nand.h> 13*601fbec7SMasahiro Yamada #include <asm/arch/dm365_lowlevel.h> 14*601fbec7SMasahiro Yamada #include <ns16550.h> 15*601fbec7SMasahiro Yamada #include <malloc.h> 16*601fbec7SMasahiro Yamada #include <spi_flash.h> 17*601fbec7SMasahiro Yamada #include <mmc.h> 18*601fbec7SMasahiro Yamada 19*601fbec7SMasahiro Yamada DECLARE_GLOBAL_DATA_PTR; 20*601fbec7SMasahiro Yamada 21*601fbec7SMasahiro Yamada #ifndef CONFIG_SPL_LIBCOMMON_SUPPORT 22*601fbec7SMasahiro Yamada void puts(const char *str) 23*601fbec7SMasahiro Yamada { 24*601fbec7SMasahiro Yamada while (*str) 25*601fbec7SMasahiro Yamada putc(*str++); 26*601fbec7SMasahiro Yamada } 27*601fbec7SMasahiro Yamada 28*601fbec7SMasahiro Yamada void putc(char c) 29*601fbec7SMasahiro Yamada { 30*601fbec7SMasahiro Yamada if (c == '\n') 31*601fbec7SMasahiro Yamada NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), '\r'); 32*601fbec7SMasahiro Yamada 33*601fbec7SMasahiro Yamada NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), c); 34*601fbec7SMasahiro Yamada } 35*601fbec7SMasahiro Yamada #endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */ 36*601fbec7SMasahiro Yamada 37*601fbec7SMasahiro Yamada void spl_board_init(void) 38*601fbec7SMasahiro Yamada { 39*601fbec7SMasahiro Yamada #ifdef CONFIG_SOC_DM365 40*601fbec7SMasahiro Yamada dm36x_lowlevel_init(0); 41*601fbec7SMasahiro Yamada #endif 42*601fbec7SMasahiro Yamada #ifdef CONFIG_SOC_DA8XX 43*601fbec7SMasahiro Yamada arch_cpu_init(); 44*601fbec7SMasahiro Yamada #endif 45*601fbec7SMasahiro Yamada preloader_console_init(); 46*601fbec7SMasahiro Yamada } 47*601fbec7SMasahiro Yamada 48*601fbec7SMasahiro Yamada u32 spl_boot_mode(void) 49*601fbec7SMasahiro Yamada { 50*601fbec7SMasahiro Yamada return MMCSD_MODE_RAW; 51*601fbec7SMasahiro Yamada } 52*601fbec7SMasahiro Yamada 53*601fbec7SMasahiro Yamada u32 spl_boot_device(void) 54*601fbec7SMasahiro Yamada { 55*601fbec7SMasahiro Yamada #ifdef CONFIG_SPL_NAND_SIMPLE 56*601fbec7SMasahiro Yamada return BOOT_DEVICE_NAND; 57*601fbec7SMasahiro Yamada #elif defined(CONFIG_SPL_SPI_LOAD) 58*601fbec7SMasahiro Yamada return BOOT_DEVICE_SPI; 59*601fbec7SMasahiro Yamada #elif defined(CONFIG_SPL_MMC_LOAD) 60*601fbec7SMasahiro Yamada return BOOT_DEVICE_MMC1; 61*601fbec7SMasahiro Yamada #else 62*601fbec7SMasahiro Yamada puts("Unknown boot device\n"); 63*601fbec7SMasahiro Yamada hang(); 64*601fbec7SMasahiro Yamada #endif 65*601fbec7SMasahiro Yamada } 66