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