1 /* 2 * (C) Copyright ASPEED Technology Inc. 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 #include <common.h> 7 #include <debug_uart.h> 8 #include <spl.h> 9 #include <dm.h> 10 #include <mmc.h> 11 #include <xyzModem.h> 12 #include <asm/io.h> 13 #include <asm/arch/aspeed_verify.h> 14 15 DECLARE_GLOBAL_DATA_PTR; 16 17 #define AST_BOOTMODE_SPI 0 18 #define AST_BOOTMODE_EMMC 1 19 #define AST_BOOTMODE_UART 2 20 21 u32 aspeed_bootmode(void); 22 void aspeed_mmc_init(void); 23 24 void board_init_f(ulong dummy) 25 { 26 #ifndef CONFIG_SPL_TINY 27 spl_early_init(); 28 timer_init(); 29 preloader_console_init(); 30 dram_init(); 31 aspeed_mmc_init(); 32 #endif 33 } 34 35 #ifdef CONFIG_SPL_BOARD_INIT 36 void spl_board_init(void) 37 { 38 struct udevice *dev; 39 40 if (uclass_get_device_by_driver(UCLASS_MISC, 41 DM_GET_DRIVER(aspeed_hace), 42 &dev)) { 43 debug("Warning: HACE initialization failure\n"); 44 } 45 46 if (uclass_get_device_by_driver(UCLASS_MISC, 47 DM_GET_DRIVER(aspeed_arcy), 48 &dev)) { 49 debug("Warning: ARCY initialization failure\n"); 50 } 51 } 52 #endif 53 54 u32 spl_boot_device(void) 55 { 56 #ifdef CONFIG_ASPEED_LOADERS 57 switch (aspeed_bootmode()) { 58 case AST_BOOTMODE_EMMC: 59 return (IS_ENABLED(CONFIG_ASPEED_SECURE_BOOT))? 60 ASPEED_SECBOOT_DEVICE_MMC : ASPEED_BOOT_DEVICE_MMC; 61 case AST_BOOTMODE_SPI: 62 return (IS_ENABLED(CONFIG_ASPEED_SECURE_BOOT))? 63 ASPEED_SECBOOT_DEVICE_RAM : ASPEED_BOOT_DEVICE_RAM; 64 case AST_BOOTMODE_UART: 65 return (IS_ENABLED(CONFIG_ASPEED_SECURE_BOOT))? 66 ASPEED_SECBOOT_DEVICE_UART : ASPEED_BOOT_DEVICE_UART; 67 default: 68 break; 69 } 70 #else 71 switch (aspeed_bootmode()) { 72 case AST_BOOTMODE_EMMC: 73 return BOOT_DEVICE_MMC1; 74 case AST_BOOTMODE_SPI: 75 return BOOT_DEVICE_RAM; 76 case AST_BOOTMODE_UART: 77 return BOOT_DEVICE_UART; 78 default: 79 break; 80 } 81 #endif 82 83 return BOOT_DEVICE_NONE; 84 } 85 86 #ifdef CONFIG_SPL_OS_BOOT 87 int spl_start_uboot(void) 88 { 89 /* boot linux */ 90 return 0; 91 } 92 #endif 93 94 int board_fit_config_name_match(const char *name) 95 { 96 /* we always use the default configuration */ 97 debug("%s: %s\n", __func__, name); 98 return 0; 99 } 100 101 struct image_header *spl_get_load_buffer(ssize_t offset, size_t size) 102 { 103 return (struct image_header *)(CONFIG_SYS_LOAD_ADDR); 104 } 105