147f7bcaeSTom Rini /* 247f7bcaeSTom Rini * (C) Copyright 2012 347f7bcaeSTom Rini * Texas Instruments, <www.ti.com> 447f7bcaeSTom Rini * 547f7bcaeSTom Rini * See file CREDITS for list of people who contributed to this 647f7bcaeSTom Rini * project. 747f7bcaeSTom Rini * 847f7bcaeSTom Rini * This program is free software; you can redistribute it and/or 947f7bcaeSTom Rini * modify it under the terms of the GNU General Public License as 1047f7bcaeSTom Rini * published by the Free Software Foundation; either version 2 of 1147f7bcaeSTom Rini * the License, or (at your option) any later version. 1247f7bcaeSTom Rini * 1347f7bcaeSTom Rini * This program is distributed in the hope that it will be useful, 1447f7bcaeSTom Rini * but WITHOUT ANY WARRANTY; without even the implied warranty of 1547f7bcaeSTom Rini * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1647f7bcaeSTom Rini * GNU General Public License for more details. 1747f7bcaeSTom Rini * 1847f7bcaeSTom Rini * You should have received a copy of the GNU General Public License 1947f7bcaeSTom Rini * along with this program; if not, write to the Free Software 2047f7bcaeSTom Rini * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 2147f7bcaeSTom Rini * MA 02111-1307 USA 2247f7bcaeSTom Rini */ 2347f7bcaeSTom Rini #ifndef _SPL_H_ 2447f7bcaeSTom Rini #define _SPL_H_ 2547f7bcaeSTom Rini 2647f7bcaeSTom Rini /* Platform-specific defines */ 276507f133STom Rini #include <linux/compiler.h> 2847f7bcaeSTom Rini #include <asm/spl.h> 2947f7bcaeSTom Rini 3047f7bcaeSTom Rini /* Boot type */ 3147f7bcaeSTom Rini #define MMCSD_MODE_UNDEFINED 0 3247f7bcaeSTom Rini #define MMCSD_MODE_RAW 1 3347f7bcaeSTom Rini #define MMCSD_MODE_FAT 2 3447f7bcaeSTom Rini 3547f7bcaeSTom Rini struct spl_image_info { 3647f7bcaeSTom Rini const char *name; 3747f7bcaeSTom Rini u8 os; 3847f7bcaeSTom Rini u32 load_addr; 3947f7bcaeSTom Rini u32 entry_point; 4047f7bcaeSTom Rini u32 size; 41022b4975SStefan Roese u32 flags; 4247f7bcaeSTom Rini }; 4347f7bcaeSTom Rini 44022b4975SStefan Roese #define SPL_COPY_PAYLOAD_ONLY 1 45022b4975SStefan Roese 4647f7bcaeSTom Rini extern struct spl_image_info spl_image; 4747f7bcaeSTom Rini extern u32 *boot_params_ptr; 4847f7bcaeSTom Rini 4947f7bcaeSTom Rini /* SPL common functions */ 5047f7bcaeSTom Rini void preloader_console_init(void); 5147f7bcaeSTom Rini u32 spl_boot_device(void); 5247f7bcaeSTom Rini u32 spl_boot_mode(void); 5347f7bcaeSTom Rini void spl_parse_image_header(const struct image_header *header); 5447f7bcaeSTom Rini void spl_board_prepare_for_linux(void); 556507f133STom Rini void __noreturn jump_to_image_linux(void *arg); 5647f7bcaeSTom Rini int spl_start_uboot(void); 5747f7bcaeSTom Rini void spl_display_print(void); 5847f7bcaeSTom Rini 5947f7bcaeSTom Rini /* NAND SPL functions */ 6047f7bcaeSTom Rini void spl_nand_load_image(void); 6147f7bcaeSTom Rini 62*6000992eSEnric Balletbo i Serra /* OneNAND SPL functions */ 63*6000992eSEnric Balletbo i Serra void spl_onenand_load_image(void); 64*6000992eSEnric Balletbo i Serra 6533d34646SStefan Roese /* NOR SPL functions */ 6633d34646SStefan Roese void spl_nor_load_image(void); 6733d34646SStefan Roese 6847f7bcaeSTom Rini /* MMC SPL functions */ 6947f7bcaeSTom Rini void spl_mmc_load_image(void); 7047f7bcaeSTom Rini 7147f7bcaeSTom Rini /* YMODEM SPL functions */ 7247f7bcaeSTom Rini void spl_ymodem_load_image(void); 7347f7bcaeSTom Rini 7447f7bcaeSTom Rini /* SPI SPL functions */ 75a4cc1c48STom Rini void spl_spi_load_image(void); 7647f7bcaeSTom Rini 777ac2fe2dSIlya Yanok /* Ethernet SPL functions */ 787ac2fe2dSIlya Yanok void spl_net_load_image(const char *device); 797ac2fe2dSIlya Yanok 8047f7bcaeSTom Rini #ifdef CONFIG_SPL_BOARD_INIT 8147f7bcaeSTom Rini void spl_board_init(void); 8247f7bcaeSTom Rini #endif 8347f7bcaeSTom Rini #endif 84