xref: /openbmc/u-boot/arch/arm/mach-davinci/spl.c (revision 601fbec7)
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