xref: /openbmc/u-boot/arch/arm/mach-zynq/spl.c (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * (C) Copyright 2014 - 2017 Xilinx, Inc. Michal Simek
4  */
5 #include <common.h>
6 #include <debug_uart.h>
7 #include <spl.h>
8 
9 #include <asm/io.h>
10 #include <asm/spl.h>
11 #include <asm/arch/hardware.h>
12 #include <asm/arch/sys_proto.h>
13 #include <asm/arch/ps7_init_gpl.h>
14 
15 void board_init_f(ulong dummy)
16 {
17 	ps7_init();
18 
19 	arch_cpu_init();
20 	/*
21 	 * The debug UART can be used from this point:
22 	 * debug_uart_init();
23 	 * printch('x');
24 	 */
25 }
26 
27 #ifdef CONFIG_SPL_BOARD_INIT
28 void spl_board_init(void)
29 {
30 	preloader_console_init();
31 	board_init();
32 }
33 #endif
34 
35 u32 spl_boot_device(void)
36 {
37 	u32 mode;
38 
39 	switch ((zynq_slcr_get_boot_mode()) & ZYNQ_BM_MASK) {
40 #ifdef CONFIG_SPL_SPI_SUPPORT
41 	case ZYNQ_BM_QSPI:
42 		puts("qspi boot\n");
43 		mode = BOOT_DEVICE_SPI;
44 		break;
45 #endif
46 	case ZYNQ_BM_NAND:
47 		mode = BOOT_DEVICE_NAND;
48 		break;
49 	case ZYNQ_BM_NOR:
50 		mode = BOOT_DEVICE_NOR;
51 		break;
52 #ifdef CONFIG_SPL_MMC_SUPPORT
53 	case ZYNQ_BM_SD:
54 		puts("mmc boot\n");
55 		mode = BOOT_DEVICE_MMC1;
56 		break;
57 #endif
58 	case ZYNQ_BM_JTAG:
59 		mode = BOOT_DEVICE_RAM;
60 		break;
61 	default:
62 		puts("Unsupported boot mode selected\n");
63 		hang();
64 	}
65 
66 	return mode;
67 }
68 
69 #ifdef CONFIG_SPL_OS_BOOT
70 int spl_start_uboot(void)
71 {
72 	/* boot linux */
73 	return 0;
74 }
75 #endif
76 
77 void spl_board_prepare_for_boot(void)
78 {
79 	ps7_post_config();
80 	debug("SPL bye\n");
81 }
82 
83 #ifdef CONFIG_SPL_LOAD_FIT
84 int board_fit_config_name_match(const char *name)
85 {
86 	/* Just empty function now - can't decide what to choose */
87 	debug("%s: %s\n", __func__, name);
88 
89 	return 0;
90 }
91 #endif
92