1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 2601fbec7SMasahiro Yamada /* 3601fbec7SMasahiro Yamada * Copyright (C) 2011 4601fbec7SMasahiro Yamada * Heiko Schocher, DENX Software Engineering, hs@denx.de. 5601fbec7SMasahiro Yamada */ 6601fbec7SMasahiro Yamada #include <common.h> 7601fbec7SMasahiro Yamada #include <config.h> 8601fbec7SMasahiro Yamada #include <spl.h> 9601fbec7SMasahiro Yamada #include <asm/u-boot.h> 10601fbec7SMasahiro Yamada #include <asm/utils.h> 11601fbec7SMasahiro Yamada #include <nand.h> 12601fbec7SMasahiro Yamada #include <asm/arch/dm365_lowlevel.h> 13601fbec7SMasahiro Yamada #include <ns16550.h> 14601fbec7SMasahiro Yamada #include <malloc.h> 15601fbec7SMasahiro Yamada #include <spi_flash.h> 16601fbec7SMasahiro Yamada #include <mmc.h> 17601fbec7SMasahiro Yamada 18601fbec7SMasahiro Yamada #ifndef CONFIG_SPL_LIBCOMMON_SUPPORT puts(const char * str)19601fbec7SMasahiro Yamadavoid puts(const char *str) 20601fbec7SMasahiro Yamada { 21601fbec7SMasahiro Yamada while (*str) 22601fbec7SMasahiro Yamada putc(*str++); 23601fbec7SMasahiro Yamada } 24601fbec7SMasahiro Yamada putc(char c)25601fbec7SMasahiro Yamadavoid putc(char c) 26601fbec7SMasahiro Yamada { 27601fbec7SMasahiro Yamada if (c == '\n') 28601fbec7SMasahiro Yamada NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), '\r'); 29601fbec7SMasahiro Yamada 30601fbec7SMasahiro Yamada NS16550_putc((NS16550_t)(CONFIG_SYS_NS16550_COM1), c); 31601fbec7SMasahiro Yamada } 32601fbec7SMasahiro Yamada #endif /* CONFIG_SPL_LIBCOMMON_SUPPORT */ 33601fbec7SMasahiro Yamada spl_board_init(void)34601fbec7SMasahiro Yamadavoid spl_board_init(void) 35601fbec7SMasahiro Yamada { 36601fbec7SMasahiro Yamada #ifdef CONFIG_SOC_DM365 37601fbec7SMasahiro Yamada dm36x_lowlevel_init(0); 38601fbec7SMasahiro Yamada #endif 39601fbec7SMasahiro Yamada #ifdef CONFIG_SOC_DA8XX 40601fbec7SMasahiro Yamada arch_cpu_init(); 41601fbec7SMasahiro Yamada #endif 42601fbec7SMasahiro Yamada preloader_console_init(); 43601fbec7SMasahiro Yamada } 44601fbec7SMasahiro Yamada spl_boot_device(void)45601fbec7SMasahiro Yamadau32 spl_boot_device(void) 46601fbec7SMasahiro Yamada { 47c0fa385cSFabien Parent switch (davinci_syscfg_regs->bootcfg) { 48c0fa385cSFabien Parent #ifdef CONFIG_SPL_NAND_SUPPORT 49c0fa385cSFabien Parent case DAVINCI_NAND8_BOOT: 50c0fa385cSFabien Parent case DAVINCI_NAND16_BOOT: 51601fbec7SMasahiro Yamada return BOOT_DEVICE_NAND; 52c0fa385cSFabien Parent #endif 53c0fa385cSFabien Parent 54c0fa385cSFabien Parent #ifdef CONFIG_SPL_MMC_SUPPORT 55c0fa385cSFabien Parent case DAVINCI_SD_OR_MMC_BOOT: 56c0fa385cSFabien Parent case DAVINCI_MMC_ONLY_BOOT: 57601fbec7SMasahiro Yamada return BOOT_DEVICE_MMC1; 58c0fa385cSFabien Parent #endif 59c0fa385cSFabien Parent 60c0fa385cSFabien Parent #ifdef CONFIG_SPL_SPI_FLASH_SUPPORT 61c0fa385cSFabien Parent case DAVINCI_SPI0_FLASH_BOOT: 62c0fa385cSFabien Parent case DAVINCI_SPI1_FLASH_BOOT: 63c0fa385cSFabien Parent return BOOT_DEVICE_SPI; 64c0fa385cSFabien Parent #endif 65c0fa385cSFabien Parent 66c0fa385cSFabien Parent default: 67601fbec7SMasahiro Yamada puts("Unknown boot device\n"); 68601fbec7SMasahiro Yamada hang(); 69c0fa385cSFabien Parent } 70601fbec7SMasahiro Yamada } 71