1601fbec7SMasahiro Yamada /* 2601fbec7SMasahiro Yamada * Copyright (C) 2011 3601fbec7SMasahiro Yamada * Heiko Schocher, DENX Software Engineering, hs@denx.de. 4601fbec7SMasahiro Yamada * 5601fbec7SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 6601fbec7SMasahiro Yamada */ 7601fbec7SMasahiro Yamada #include <common.h> 8601fbec7SMasahiro Yamada #include <config.h> 9601fbec7SMasahiro Yamada #include <spl.h> 10601fbec7SMasahiro Yamada #include <asm/u-boot.h> 11601fbec7SMasahiro Yamada #include <asm/utils.h> 12601fbec7SMasahiro Yamada #include <nand.h> 13601fbec7SMasahiro Yamada #include <asm/arch/dm365_lowlevel.h> 14601fbec7SMasahiro Yamada #include <ns16550.h> 15601fbec7SMasahiro Yamada #include <malloc.h> 16601fbec7SMasahiro Yamada #include <spi_flash.h> 17601fbec7SMasahiro Yamada #include <mmc.h> 18601fbec7SMasahiro Yamada 19601fbec7SMasahiro Yamada DECLARE_GLOBAL_DATA_PTR; 20601fbec7SMasahiro Yamada 21601fbec7SMasahiro Yamada #ifndef CONFIG_SPL_LIBCOMMON_SUPPORT 22601fbec7SMasahiro Yamada void puts(const char *str) 23601fbec7SMasahiro Yamada { 24601fbec7SMasahiro Yamada while (*str) 25601fbec7SMasahiro Yamada putc(*str++); 26601fbec7SMasahiro Yamada } 27601fbec7SMasahiro Yamada 28601fbec7SMasahiro Yamada void putc(char c) 29601fbec7SMasahiro Yamada { 30601fbec7SMasahiro Yamada if (c == '\n') 31601fbec7SMasahiro Yamada NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), '\r'); 32601fbec7SMasahiro Yamada 33601fbec7SMasahiro Yamada NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), c); 34601fbec7SMasahiro Yamada } 35601fbec7SMasahiro Yamada #endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */ 36601fbec7SMasahiro Yamada 37601fbec7SMasahiro Yamada void spl_board_init(void) 38601fbec7SMasahiro Yamada { 39601fbec7SMasahiro Yamada #ifdef CONFIG_SOC_DM365 40601fbec7SMasahiro Yamada dm36x_lowlevel_init(0); 41601fbec7SMasahiro Yamada #endif 42601fbec7SMasahiro Yamada #ifdef CONFIG_SOC_DA8XX 43601fbec7SMasahiro Yamada arch_cpu_init(); 44601fbec7SMasahiro Yamada #endif 45601fbec7SMasahiro Yamada preloader_console_init(); 46601fbec7SMasahiro Yamada } 47601fbec7SMasahiro Yamada 482b1cdafaSMarek Vasut u32 spl_boot_mode(const u32 boot_device) 49601fbec7SMasahiro Yamada { 50601fbec7SMasahiro Yamada return MMCSD_MODE_RAW; 51601fbec7SMasahiro Yamada } 52601fbec7SMasahiro Yamada 53601fbec7SMasahiro Yamada u32 spl_boot_device(void) 54601fbec7SMasahiro Yamada { 55*c0fa385cSFabien Parent switch (davinci_syscfg_regs->bootcfg) { 56*c0fa385cSFabien Parent #ifdef CONFIG_SPL_NAND_SUPPORT 57*c0fa385cSFabien Parent case DAVINCI_NAND8_BOOT: 58*c0fa385cSFabien Parent case DAVINCI_NAND16_BOOT: 59601fbec7SMasahiro Yamada return BOOT_DEVICE_NAND; 60*c0fa385cSFabien Parent #endif 61*c0fa385cSFabien Parent 62*c0fa385cSFabien Parent #ifdef CONFIG_SPL_MMC_SUPPORT 63*c0fa385cSFabien Parent case DAVINCI_SD_OR_MMC_BOOT: 64*c0fa385cSFabien Parent case DAVINCI_MMC_ONLY_BOOT: 65601fbec7SMasahiro Yamada return BOOT_DEVICE_MMC1; 66*c0fa385cSFabien Parent #endif 67*c0fa385cSFabien Parent 68*c0fa385cSFabien Parent #ifdef CONFIG_SPL_SPI_FLASH_SUPPORT 69*c0fa385cSFabien Parent case DAVINCI_SPI0_FLASH_BOOT: 70*c0fa385cSFabien Parent case DAVINCI_SPI1_FLASH_BOOT: 71*c0fa385cSFabien Parent return BOOT_DEVICE_SPI; 72*c0fa385cSFabien Parent #endif 73*c0fa385cSFabien Parent 74*c0fa385cSFabien Parent default: 75601fbec7SMasahiro Yamada puts("Unknown boot device\n"); 76601fbec7SMasahiro Yamada hang(); 77*c0fa385cSFabien Parent } 78601fbec7SMasahiro Yamada } 79