xref: /rk3399_rockchip-uboot/include/spl.h (revision 6000992e265f507a18b0dcbcf2a89179822b42c4)
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