]> git.ipfire.org Git - people/ms/u-boot.git/blob - arch/arm/mach-zynq/spl.c
13025f034bf43df13f48af98624c7364b3e983f0
[people/ms/u-boot.git] / arch / arm / mach-zynq / spl.c
1 /*
2 * (C) Copyright 2014 Xilinx, Inc. Michal Simek
3 *
4 * SPDX-License-Identifier: GPL-2.0+
5 */
6 #include <common.h>
7 #include <spl.h>
8
9 #include <asm/io.h>
10 #include <asm/arch/hardware.h>
11 #include <asm/spl.h>
12 #include <asm/arch/sys_proto.h>
13
14 DECLARE_GLOBAL_DATA_PTR;
15
16 void board_init_f(ulong dummy)
17 {
18 ps7_init();
19
20 /* Clear the BSS. */
21 memset(__bss_start, 0, __bss_end - __bss_start);
22
23 preloader_console_init();
24 arch_cpu_init();
25 board_init_r(NULL, 0);
26 }
27
28 #ifdef CONFIG_SPL_BOARD_INIT
29 void spl_board_init(void)
30 {
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_MMC_SUPPORT
70 u32 spl_boot_mode(void)
71 {
72 return MMCSD_MODE_FS;
73 }
74 #endif
75
76 #ifdef CONFIG_SPL_OS_BOOT
77 int spl_start_uboot(void)
78 {
79 /* boot linux */
80 return 0;
81 }
82 #endif
83
84 __weak void ps7_init(void)
85 {
86 /*
87 * This function is overridden by the one in
88 * board/xilinx/zynq/ps7_init_gpl.c, if it exists.
89 */
90 }