183d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 20107f240SMasahiro Yamada /* 33e1b61deSMichal Simek * (C) Copyright 2014 - 2017 Xilinx, Inc. Michal Simek 40107f240SMasahiro Yamada */ 50107f240SMasahiro Yamada #include <common.h> 6c54c0a4cSSimon Glass #include <debug_uart.h> 70107f240SMasahiro Yamada #include <spl.h> 80107f240SMasahiro Yamada 90107f240SMasahiro Yamada #include <asm/io.h> 100107f240SMasahiro Yamada #include <asm/spl.h> 11bd44758aSSimon Glass #include <asm/arch/hardware.h> 120107f240SMasahiro Yamada #include <asm/arch/sys_proto.h> 13f0b619ecSMichal Simek #include <asm/arch/ps7_init_gpl.h> 140107f240SMasahiro Yamada board_init_f(ulong dummy)150107f240SMasahiro Yamadavoid board_init_f(ulong dummy) 160107f240SMasahiro Yamada { 170107f240SMasahiro Yamada ps7_init(); 180107f240SMasahiro Yamada 190107f240SMasahiro Yamada arch_cpu_init(); 2057213c5fSMichal Simek 2157213c5fSMichal Simek #ifdef CONFIG_DEBUG_UART 2257213c5fSMichal Simek /* Uart debug for sure */ 2357213c5fSMichal Simek debug_uart_init(); 2457213c5fSMichal Simek puts("Debug uart enabled\n"); /* or printch() */ 2557213c5fSMichal Simek #endif 260107f240SMasahiro Yamada } 270107f240SMasahiro Yamada 280107f240SMasahiro Yamada #ifdef CONFIG_SPL_BOARD_INIT spl_board_init(void)290107f240SMasahiro Yamadavoid spl_board_init(void) 300107f240SMasahiro Yamada { 315fa030b9SSimon Glass preloader_console_init(); 32*577012daSLuis Araneda #if defined(CONFIG_ARCH_EARLY_INIT_R) && defined(CONFIG_SPL_FPGA_SUPPORT) 33*577012daSLuis Araneda arch_early_init_r(); 34*577012daSLuis Araneda #endif 350107f240SMasahiro Yamada board_init(); 360107f240SMasahiro Yamada } 370107f240SMasahiro Yamada #endif 380107f240SMasahiro Yamada spl_boot_device(void)390107f240SMasahiro Yamadau32 spl_boot_device(void) 400107f240SMasahiro Yamada { 410107f240SMasahiro Yamada u32 mode; 420107f240SMasahiro Yamada 430107f240SMasahiro Yamada switch ((zynq_slcr_get_boot_mode()) & ZYNQ_BM_MASK) { 440107f240SMasahiro Yamada #ifdef CONFIG_SPL_SPI_SUPPORT 450107f240SMasahiro Yamada case ZYNQ_BM_QSPI: 460107f240SMasahiro Yamada puts("qspi boot\n"); 470107f240SMasahiro Yamada mode = BOOT_DEVICE_SPI; 480107f240SMasahiro Yamada break; 490107f240SMasahiro Yamada #endif 500107f240SMasahiro Yamada case ZYNQ_BM_NAND: 510107f240SMasahiro Yamada mode = BOOT_DEVICE_NAND; 520107f240SMasahiro Yamada break; 530107f240SMasahiro Yamada case ZYNQ_BM_NOR: 540107f240SMasahiro Yamada mode = BOOT_DEVICE_NOR; 550107f240SMasahiro Yamada break; 560107f240SMasahiro Yamada #ifdef CONFIG_SPL_MMC_SUPPORT 570107f240SMasahiro Yamada case ZYNQ_BM_SD: 580107f240SMasahiro Yamada puts("mmc boot\n"); 590107f240SMasahiro Yamada mode = BOOT_DEVICE_MMC1; 600107f240SMasahiro Yamada break; 610107f240SMasahiro Yamada #endif 620107f240SMasahiro Yamada case ZYNQ_BM_JTAG: 630107f240SMasahiro Yamada mode = BOOT_DEVICE_RAM; 640107f240SMasahiro Yamada break; 650107f240SMasahiro Yamada default: 660107f240SMasahiro Yamada puts("Unsupported boot mode selected\n"); 670107f240SMasahiro Yamada hang(); 680107f240SMasahiro Yamada } 690107f240SMasahiro Yamada 700107f240SMasahiro Yamada return mode; 710107f240SMasahiro Yamada } 720107f240SMasahiro Yamada 730107f240SMasahiro Yamada #ifdef CONFIG_SPL_OS_BOOT spl_start_uboot(void)740107f240SMasahiro Yamadaint spl_start_uboot(void) 750107f240SMasahiro Yamada { 760107f240SMasahiro Yamada /* boot linux */ 770107f240SMasahiro Yamada return 0; 780107f240SMasahiro Yamada } 790107f240SMasahiro Yamada #endif 800107f240SMasahiro Yamada spl_board_prepare_for_boot(void)81f44e603fSMichal Simekvoid spl_board_prepare_for_boot(void) 82f44e603fSMichal Simek { 83f44e603fSMichal Simek ps7_post_config(); 84f44e603fSMichal Simek debug("SPL bye\n"); 85f44e603fSMichal Simek } 86f44e603fSMichal Simek 879a23f458SMichal Simek #ifdef CONFIG_SPL_LOAD_FIT board_fit_config_name_match(const char * name)889a23f458SMichal Simekint board_fit_config_name_match(const char *name) 899a23f458SMichal Simek { 909a23f458SMichal Simek /* Just empty function now - can't decide what to choose */ 919a23f458SMichal Simek debug("%s: %s\n", __func__, name); 929a23f458SMichal Simek 939a23f458SMichal Simek return 0; 949a23f458SMichal Simek } 959a23f458SMichal Simek #endif 96