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 14DECLARE_GLOBAL_DATA_PTR; 15 16void 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 29void spl_board_init(void) 30{ 31 board_init(); 32} 33#endif 34 35u32 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 70u32 spl_boot_mode(void) 71{ 72 return MMCSD_MODE_FS; 73} 74#endif 75 76#ifdef CONFIG_SPL_OS_BOOT 77int 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/(platform)/ps7_init_gpl.c, if it exists. 89 */ 90} 91