1*47f7bcaeSTom Rini /* 2*47f7bcaeSTom Rini * (C) Copyright 2012 3*47f7bcaeSTom Rini * Texas Instruments, <www.ti.com> 4*47f7bcaeSTom Rini * 5*47f7bcaeSTom Rini * See file CREDITS for list of people who contributed to this 6*47f7bcaeSTom Rini * project. 7*47f7bcaeSTom Rini * 8*47f7bcaeSTom Rini * This program is free software; you can redistribute it and/or 9*47f7bcaeSTom Rini * modify it under the terms of the GNU General Public License as 10*47f7bcaeSTom Rini * published by the Free Software Foundation; either version 2 of 11*47f7bcaeSTom Rini * the License, or (at your option) any later version. 12*47f7bcaeSTom Rini * 13*47f7bcaeSTom Rini * This program is distributed in the hope that it will be useful, 14*47f7bcaeSTom Rini * but WITHOUT ANY WARRANTY; without even the implied warranty of 15*47f7bcaeSTom Rini * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*47f7bcaeSTom Rini * GNU General Public License for more details. 17*47f7bcaeSTom Rini * 18*47f7bcaeSTom Rini * You should have received a copy of the GNU General Public License 19*47f7bcaeSTom Rini * along with this program; if not, write to the Free Software 20*47f7bcaeSTom Rini * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21*47f7bcaeSTom Rini * MA 02111-1307 USA 22*47f7bcaeSTom Rini */ 23*47f7bcaeSTom Rini #ifndef _SPL_H_ 24*47f7bcaeSTom Rini #define _SPL_H_ 25*47f7bcaeSTom Rini 26*47f7bcaeSTom Rini /* Platform-specific defines */ 27*47f7bcaeSTom Rini #include <asm/spl.h> 28*47f7bcaeSTom Rini 29*47f7bcaeSTom Rini /* Boot type */ 30*47f7bcaeSTom Rini #define MMCSD_MODE_UNDEFINED 0 31*47f7bcaeSTom Rini #define MMCSD_MODE_RAW 1 32*47f7bcaeSTom Rini #define MMCSD_MODE_FAT 2 33*47f7bcaeSTom Rini 34*47f7bcaeSTom Rini struct spl_image_info { 35*47f7bcaeSTom Rini const char *name; 36*47f7bcaeSTom Rini u8 os; 37*47f7bcaeSTom Rini u32 load_addr; 38*47f7bcaeSTom Rini u32 entry_point; 39*47f7bcaeSTom Rini u32 size; 40*47f7bcaeSTom Rini }; 41*47f7bcaeSTom Rini 42*47f7bcaeSTom Rini extern struct spl_image_info spl_image; 43*47f7bcaeSTom Rini extern u32 *boot_params_ptr; 44*47f7bcaeSTom Rini 45*47f7bcaeSTom Rini /* SPL common functions */ 46*47f7bcaeSTom Rini void preloader_console_init(void); 47*47f7bcaeSTom Rini u32 spl_boot_device(void); 48*47f7bcaeSTom Rini u32 spl_boot_mode(void); 49*47f7bcaeSTom Rini void spl_parse_image_header(const struct image_header *header); 50*47f7bcaeSTom Rini void spl_board_prepare_for_linux(void); 51*47f7bcaeSTom Rini int spl_start_uboot(void); 52*47f7bcaeSTom Rini void spl_display_print(void); 53*47f7bcaeSTom Rini 54*47f7bcaeSTom Rini /* NAND SPL functions */ 55*47f7bcaeSTom Rini void spl_nand_load_image(void); 56*47f7bcaeSTom Rini 57*47f7bcaeSTom Rini /* MMC SPL functions */ 58*47f7bcaeSTom Rini void spl_mmc_load_image(void); 59*47f7bcaeSTom Rini 60*47f7bcaeSTom Rini /* YMODEM SPL functions */ 61*47f7bcaeSTom Rini void spl_ymodem_load_image(void); 62*47f7bcaeSTom Rini 63*47f7bcaeSTom Rini /* SPI SPL functions */ 64*47f7bcaeSTom Rini void spi_boot(void); 65*47f7bcaeSTom Rini 66*47f7bcaeSTom Rini #ifdef CONFIG_SPL_BOARD_INIT 67*47f7bcaeSTom Rini void spl_board_init(void); 68*47f7bcaeSTom Rini #endif 69*47f7bcaeSTom Rini #endif 70