spl: Convert boot_device into a struct
At present some spl_xxx_load_image() functions take a parameter and some don't. Of those that do, most take an integer but one takes a string. Convert this parameter into a struct so that we can pass all functions the same thing. This will allow us to use a common function signature. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
		
							parent
							
								
									a807ab3303
								
							
						
					
					
						commit
						ecdfd69a4b
					
				|  | @ -133,7 +133,7 @@ static int gpio_init(void) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int spl_board_load_image(void) | ||||
| int spl_board_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	debug("Returning to FEL sp=%x, lr=%x\n", fel_stash.sp, fel_stash.lr); | ||||
| 	return_to_fel(fel_stash.sp, fel_stash.lr); | ||||
|  |  | |||
|  | @ -65,7 +65,7 @@ int uniphier_rom_get_mmc_funcptr(int (**send_cmd)(u32, u32), | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| int spl_board_load_image(void) | ||||
| int spl_board_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int (*send_cmd)(u32 cmd, u32 arg); | ||||
| 	int (*card_blockaddr)(u32 rca); | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ void spl_board_announce_boot_device(void) | |||
| 	printf("%s\n", fname); | ||||
| } | ||||
| 
 | ||||
| int spl_board_load_image(void) | ||||
| int spl_board_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	char fname[256]; | ||||
| 	int ret; | ||||
|  |  | |||
|  | @ -185,7 +185,7 @@ static ulong spl_ram_load_read(struct spl_load_info *load, ulong sector, | |||
| 	return count; | ||||
| } | ||||
| 
 | ||||
| static int spl_ram_load_image(void) | ||||
| static int spl_ram_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	struct image_header *header; | ||||
| 
 | ||||
|  | @ -349,71 +349,76 @@ static inline void announce_boot_device(u32 boot_device) { } | |||
| 
 | ||||
| static int spl_load_image(u32 boot_device) | ||||
| { | ||||
| 	struct spl_boot_device bootdev; | ||||
| 
 | ||||
| 	bootdev.boot_device = boot_device; | ||||
| 	bootdev.boot_device_name = NULL; | ||||
| 
 | ||||
| 	switch (boot_device) { | ||||
| #ifdef CONFIG_SPL_RAM_DEVICE | ||||
| 	case BOOT_DEVICE_RAM: | ||||
| 		return spl_ram_load_image(); | ||||
| 		return spl_ram_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_MMC_SUPPORT | ||||
| 	case BOOT_DEVICE_MMC1: | ||||
| 	case BOOT_DEVICE_MMC2: | ||||
| 	case BOOT_DEVICE_MMC2_2: | ||||
| 		return spl_mmc_load_image(boot_device); | ||||
| 		return spl_mmc_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_UBI | ||||
| 	case BOOT_DEVICE_NAND: | ||||
| 	case BOOT_DEVICE_ONENAND: | ||||
| 		return spl_ubi_load_image(boot_device); | ||||
| 		return spl_ubi_load_image(&bootdev); | ||||
| #else | ||||
| #ifdef CONFIG_SPL_NAND_SUPPORT | ||||
| 	case BOOT_DEVICE_NAND: | ||||
| 		return spl_nand_load_image(); | ||||
| 		return spl_nand_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_ONENAND_SUPPORT | ||||
| 	case BOOT_DEVICE_ONENAND: | ||||
| 		return spl_onenand_load_image(); | ||||
| 		return spl_onenand_load_image(&bootdev); | ||||
| #endif | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_NOR_SUPPORT | ||||
| 	case BOOT_DEVICE_NOR: | ||||
| 		return spl_nor_load_image(); | ||||
| 		return spl_nor_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_YMODEM_SUPPORT | ||||
| 	case BOOT_DEVICE_UART: | ||||
| 		return spl_ymodem_load_image(); | ||||
| 		return spl_ymodem_load_image(&bootdev); | ||||
| #endif | ||||
| #if defined(CONFIG_SPL_SPI_SUPPORT) || defined(CONFIG_SPL_SPI_FLASH_SUPPORT) | ||||
| 	case BOOT_DEVICE_SPI: | ||||
| 		return spl_spi_load_image(); | ||||
| 		return spl_spi_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_ETH_SUPPORT | ||||
| 	case BOOT_DEVICE_CPGMAC: | ||||
| #ifdef CONFIG_SPL_ETH_DEVICE | ||||
| 		return spl_net_load_image(CONFIG_SPL_ETH_DEVICE); | ||||
| #else | ||||
| 		return spl_net_load_image(NULL); | ||||
| 		bootdev.boot_device_name = CONFIG_SPL_ETH_DEVICE; | ||||
| #endif | ||||
| 		return spl_net_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_USBETH_SUPPORT | ||||
| 	case BOOT_DEVICE_USBETH: | ||||
| 		return spl_net_load_image("usb_ether"); | ||||
| 		bootdev.boot_device_name = "usb_ether"; | ||||
| 		return spl_net_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_USB_SUPPORT | ||||
| 	case BOOT_DEVICE_USB: | ||||
| 		return spl_usb_load_image(); | ||||
| 		return spl_usb_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_DFU_SUPPORT | ||||
| 	case BOOT_DEVICE_DFU: | ||||
| 		spl_dfu_cmd(0, "dfu_alt_info_ram", "ram", "0"); | ||||
| 		return spl_ram_load_image(); | ||||
| 		return spl_ram_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_SATA_SUPPORT | ||||
| 	case BOOT_DEVICE_SATA: | ||||
| 		return spl_sata_load_image(); | ||||
| 		return spl_sata_load_image(&bootdev); | ||||
| #endif | ||||
| #ifdef CONFIG_SPL_BOARD_LOAD_IMAGE | ||||
| 	case BOOT_DEVICE_BOARD: | ||||
| 		return spl_board_load_image(); | ||||
| 		return spl_board_load_image(&bootdev); | ||||
| #endif | ||||
| 	default: | ||||
| #if defined(CONFIG_SPL_SERIAL_SUPPORT) && defined(CONFIG_SPL_LIBCOMMON_SUPPORT) | ||||
|  |  | |||
|  | @ -267,14 +267,14 @@ int spl_mmc_do_fs_boot(struct mmc *mmc) | |||
| } | ||||
| #endif | ||||
| 
 | ||||
| int spl_mmc_load_image(u32 boot_device) | ||||
| int spl_mmc_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	struct mmc *mmc = NULL; | ||||
| 	u32 boot_mode; | ||||
| 	int err = 0; | ||||
| 	__maybe_unused int part; | ||||
| 
 | ||||
| 	err = spl_mmc_find_device(&mmc, boot_device); | ||||
| 	err = spl_mmc_find_device(&mmc, bootdev->boot_device); | ||||
| 	if (err) | ||||
| 		return err; | ||||
| 
 | ||||
|  | @ -286,7 +286,7 @@ int spl_mmc_load_image(u32 boot_device) | |||
| 		return err; | ||||
| 	} | ||||
| 
 | ||||
| 	boot_mode = spl_boot_mode(boot_device); | ||||
| 	boot_mode = spl_boot_mode(bootdev->boot_device); | ||||
| 	err = -EINVAL; | ||||
| 	switch (boot_mode) { | ||||
| 	case MMCSD_MODE_EMMCBOOT: | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ | |||
| #include <fdt.h> | ||||
| 
 | ||||
| #if defined(CONFIG_SPL_NAND_RAW_ONLY) | ||||
| int spl_nand_load_image(void) | ||||
| int spl_nand_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	nand_init(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ | |||
| 
 | ||||
| DECLARE_GLOBAL_DATA_PTR; | ||||
| 
 | ||||
| int spl_net_load_image(const char *device) | ||||
| int spl_net_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int rv; | ||||
| 
 | ||||
|  | @ -27,8 +27,8 @@ int spl_net_load_image(const char *device) | |||
| 		printf("No Ethernet devices found\n"); | ||||
| 		return -ENODEV; | ||||
| 	} | ||||
| 	if (device) | ||||
| 		setenv("ethact", device); | ||||
| 	if (bootdev->boot_device_name) | ||||
| 		setenv("ethact", bootdev->boot_device_name); | ||||
| 	rv = net_loop(BOOTP); | ||||
| 	if (rv < 0) { | ||||
| 		printf("Problem booting with BOOTP\n"); | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ | |||
| #include <common.h> | ||||
| #include <spl.h> | ||||
| 
 | ||||
| int spl_nor_load_image(void) | ||||
| int spl_nor_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int ret; | ||||
| 	/*
 | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ | |||
| #include <asm/io.h> | ||||
| #include <onenand_uboot.h> | ||||
| 
 | ||||
| int spl_onenand_load_image(void) | ||||
| int spl_onenand_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	struct image_header *header; | ||||
| 	int ret; | ||||
|  |  | |||
|  | @ -20,7 +20,7 @@ | |||
| 
 | ||||
| DECLARE_GLOBAL_DATA_PTR; | ||||
| 
 | ||||
| int spl_sata_load_image(void) | ||||
| int spl_sata_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int err; | ||||
| 	struct blk_desc *stor_dev; | ||||
|  |  | |||
|  | @ -12,14 +12,14 @@ | |||
| #include <ubispl.h> | ||||
| #include <spl.h> | ||||
| 
 | ||||
| int spl_ubi_load_image(u32 boot_device) | ||||
| int spl_ubi_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	struct image_header *header; | ||||
| 	struct ubispl_info info; | ||||
| 	struct ubispl_load volumes[2]; | ||||
| 	int ret = 1; | ||||
| 
 | ||||
| 	switch (boot_device) { | ||||
| 	switch (bootdev->boot_device) { | ||||
| #ifdef CONFIG_SPL_NAND_SUPPORT | ||||
| 	case BOOT_DEVICE_NAND: | ||||
| 		nand_init(); | ||||
|  | @ -71,7 +71,7 @@ int spl_ubi_load_image(u32 boot_device) | |||
| 		spl_parse_image_header(&spl_image, header); | ||||
| out: | ||||
| #ifdef CONFIG_SPL_NAND_SUPPORT | ||||
| 	if (boot_device == BOOT_DEVICE_NAND) | ||||
| 	if (bootdev->boot_device == BOOT_DEVICE_NAND) | ||||
| 		nand_deselect(); | ||||
| #endif | ||||
| 	return ret; | ||||
|  |  | |||
|  | @ -22,7 +22,7 @@ DECLARE_GLOBAL_DATA_PTR; | |||
| static int usb_stor_curr_dev = -1; /* current device */ | ||||
| #endif | ||||
| 
 | ||||
| int spl_usb_load_image(void) | ||||
| int spl_usb_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int err; | ||||
| 	struct blk_desc *stor_dev; | ||||
|  |  | |||
|  | @ -68,7 +68,7 @@ static ulong ymodem_read_fit(struct spl_load_info *load, ulong offset, | |||
| 	return size; | ||||
| } | ||||
| 
 | ||||
| int spl_ymodem_load_image(void) | ||||
| int spl_ymodem_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int size = 0; | ||||
| 	int err; | ||||
|  |  | |||
|  | @ -65,7 +65,7 @@ static ulong spl_spi_fit_read(struct spl_load_info *load, ulong sector, | |||
|  * configured and available since this code loads the main U-Boot image | ||||
|  * from SPI into SDRAM and starts it from there. | ||||
|  */ | ||||
| int spl_spi_load_image(void) | ||||
| int spl_spi_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int err = 0; | ||||
| 	struct spi_flash *flash; | ||||
|  |  | |||
|  | @ -262,7 +262,7 @@ static void spi0_read_data(void *buf, u32 addr, u32 len) | |||
| 
 | ||||
| /*****************************************************************************/ | ||||
| 
 | ||||
| int spl_spi_load_image(void) | ||||
| int spl_spi_load_image(struct spl_boot_device *bootdev) | ||||
| { | ||||
| 	int err; | ||||
| 	struct image_header *header; | ||||
|  |  | |||
|  | @ -131,35 +131,53 @@ int spl_start_uboot(void); | |||
|  */ | ||||
| void spl_display_print(void); | ||||
| 
 | ||||
| /**
 | ||||
|  * struct spl_boot_device - Describes a boot device used by SPL | ||||
|  * | ||||
|  * @boot_device: A number indicating the BOOT_DEVICE type. There are various | ||||
|  * BOOT_DEVICE... #defines and enums in U-Boot and they are not consistently | ||||
|  * numbered. | ||||
|  * @boot_device_name: Named boot device, or NULL if none. | ||||
|  * | ||||
|  * Note: Additional fields can be added here, bearing in mind that SPL is | ||||
|  * size-sensitive and common fields will be present on all boards. This | ||||
|  * struct can also be used to return additional information about the load | ||||
|  * process if that becomes useful. | ||||
|  */ | ||||
| struct spl_boot_device { | ||||
| 	uint boot_device; | ||||
| 	const char *boot_device_name; | ||||
| }; | ||||
| 
 | ||||
| /* NAND SPL functions */ | ||||
| int spl_nand_load_image(void); | ||||
| int spl_nand_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* OneNAND SPL functions */ | ||||
| int spl_onenand_load_image(void); | ||||
| int spl_onenand_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* NOR SPL functions */ | ||||
| int spl_nor_load_image(void); | ||||
| int spl_nor_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* UBI SPL functions */ | ||||
| int spl_ubi_load_image(u32 boot_device); | ||||
| int spl_ubi_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* MMC SPL functions */ | ||||
| int spl_mmc_load_image(u32 boot_device); | ||||
| int spl_mmc_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* YMODEM SPL functions */ | ||||
| int spl_ymodem_load_image(void); | ||||
| int spl_ymodem_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* SPI SPL functions */ | ||||
| int spl_spi_load_image(void); | ||||
| int spl_spi_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* Ethernet SPL functions */ | ||||
| int spl_net_load_image(const char *device); | ||||
| int spl_net_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* USB SPL functions */ | ||||
| int spl_usb_load_image(void); | ||||
| int spl_usb_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* SATA SPL functions */ | ||||
| int spl_sata_load_image(void); | ||||
| int spl_sata_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| /* SPL FAT image functions */ | ||||
| int spl_load_image_fat(struct blk_desc *block_dev, int partition, | ||||
|  | @ -214,6 +232,6 @@ int spl_dfu_cmd(int usbctrl, char *dfu_alt_info, char *interface, char *devstr); | |||
|  * | ||||
|  * @return 0 on success, negative errno value on failure. | ||||
|  */ | ||||
| int spl_board_load_image(void); | ||||
| int spl_board_load_image(struct spl_boot_device *bootdev); | ||||
| 
 | ||||
| #endif | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue