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 /* Set global data pointer */ 48 gd = &gdata; 49 /* Clear global data */ 50 memset((void *)gd, 0, sizeof(gd_t)); 51 #ifdef CONFIG_LS2085A 52 arch_cpu_init(); 53 #endif 54 #ifdef CONFIG_FSL_IFC 55 init_early_memctl_regs(); 56 #endif 57 board_early_init_f(); 58 timer_init(); 59 #ifdef CONFIG_LS2085A 60 env_init(); 61 #endif 62 get_clocks(); 63 64 preloader_console_init(); 65 66 #ifdef CONFIG_SPL_I2C_SUPPORT 67 i2c_init_all(); 68 #endif 69 dram_init(); 70 71 /* Clear the BSS */ 72 memset(__bss_start, 0, __bss_end - __bss_start); 73 74 #ifdef CONFIG_LAYERSCAPE_NS_ACCESS 75 enable_layerscape_ns_access(); 76 #endif 77 board_init_r(NULL, 0); 78 } 79 #endif 80