1 /* 2 * Copyright 2014-2015 Freescale Semiconductor, Inc. 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #include <common.h> 8 #include <spl.h> 9 #include <asm/io.h> 10 #include <fsl_ifc.h> 11 #include <fsl_csu.h> 12 #include <i2c.h> 13 14 DECLARE_GLOBAL_DATA_PTR; 15 16 u32 spl_boot_device(void) 17 { 18 #ifdef CONFIG_SPL_MMC_SUPPORT 19 return BOOT_DEVICE_MMC1; 20 #endif 21 #ifdef CONFIG_SPL_NAND_SUPPORT 22 return BOOT_DEVICE_NAND; 23 #endif 24 return 0; 25 } 26 27 u32 spl_boot_mode(void) 28 { 29 switch (spl_boot_device()) { 30 case BOOT_DEVICE_MMC1: 31 #ifdef CONFIG_SPL_FAT_SUPPORT 32 return MMCSD_MODE_FAT; 33 #else 34 return MMCSD_MODE_RAW; 35 #endif 36 case BOOT_DEVICE_NAND: 37 return 0; 38 default: 39 puts("spl: error: unsupported device\n"); 40 hang(); 41 } 42 } 43 44 #ifdef CONFIG_SPL_BUILD 45 void board_init_f(ulong dummy) 46 { 47 /* Clear global data */ 48 memset((void *)gd, 0, sizeof(gd_t)); 49 #if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A) 50 arch_cpu_init(); 51 #endif 52 #ifdef CONFIG_FSL_IFC 53 init_early_memctl_regs(); 54 #endif 55 board_early_init_f(); 56 timer_init(); 57 #if defined(CONFIG_LS2080A) || defined(CONFIG_LS2085A) 58 env_init(); 59 #endif 60 get_clocks(); 61 62 preloader_console_init(); 63 64 #ifdef CONFIG_SPL_I2C_SUPPORT 65 i2c_init_all(); 66 #endif 67 dram_init(); 68 69 /* Clear the BSS */ 70 memset(__bss_start, 0, __bss_end - __bss_start); 71 72 #ifdef CONFIG_LAYERSCAPE_NS_ACCESS 73 enable_layerscape_ns_access(); 74 #endif 75 board_init_r(NULL, 0); 76 } 77 #endif 78