提交 7ec03893 编写于 作者: S Simon Glass 提交者: Tom Rini

spl: Convert spl_net_load_image() to use linker list

Add a linker list declaration for this method and remove the explicit
switch() code. We need two variants - one for BOOT_DEVICE_CPGMAC and one for
BOOT_DEVICE_USBETH.
Signed-off-by: NSimon Glass <sjg@chromium.org>
Reviewed-by: NTom Rini <trini@konsulko.com>
上级 ea022a37
...@@ -384,19 +384,6 @@ static int spl_load_image(u32 boot_device) ...@@ -384,19 +384,6 @@ static int spl_load_image(u32 boot_device)
return loader->load_image(&bootdev); return loader->load_image(&bootdev);
switch (boot_device) { switch (boot_device) {
#ifdef CONFIG_SPL_ETH_SUPPORT
case BOOT_DEVICE_CPGMAC:
#ifdef CONFIG_SPL_ETH_DEVICE
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:
bootdev.boot_device_name = "usb_ether";
return spl_net_load_image(&bootdev);
#endif
#endif
#ifdef CONFIG_SPL_BOARD_LOAD_IMAGE #ifdef CONFIG_SPL_BOARD_LOAD_IMAGE
case BOOT_DEVICE_BOARD: case BOOT_DEVICE_BOARD:
return spl_board_load_image(&bootdev); return spl_board_load_image(&bootdev);
......
...@@ -14,7 +14,8 @@ ...@@ -14,7 +14,8 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
int spl_net_load_image(struct spl_boot_device *bootdev) #if defined(CONFIG_SPL_ETH_SUPPORT) || defined(CONFIG_SPL_USBETH_SUPPORT)
static int spl_net_load_image(struct spl_boot_device *bootdev)
{ {
int rv; int rv;
...@@ -37,3 +38,26 @@ int spl_net_load_image(struct spl_boot_device *bootdev) ...@@ -37,3 +38,26 @@ int spl_net_load_image(struct spl_boot_device *bootdev)
return spl_parse_image_header(&spl_image, return spl_parse_image_header(&spl_image,
(struct image_header *)load_addr); (struct image_header *)load_addr);
} }
#endif
#ifdef CONFIG_SPL_ETH_SUPPORT
int spl_net_load_image_cpgmac(struct spl_boot_device *bootdev)
{
#ifdef CONFIG_SPL_ETH_DEVICE
bootdev->boot_device_name = CONFIG_SPL_ETH_DEVICE;
#endif
return spl_net_load_image(bootdev);
}
SPL_LOAD_IMAGE_METHOD(0, BOOT_DEVICE_CPGMAC, spl_net_load_image_cpgmac);
#endif
#ifdef CONFIG_SPL_USBETH_SUPPORT
int spl_net_load_image_usb(struct spl_boot_device *bootdev)
{
bootdev->boot_device_name = "usb_ether";
return spl_net_load_image(bootdev);
}
SPL_LOAD_IMAGE_METHOD(0, BOOT_DEVICE_USBETH, spl_net_load_image_usb);
#endif
...@@ -181,9 +181,6 @@ struct spl_image_loader { ...@@ -181,9 +181,6 @@ struct spl_image_loader {
.load_image = __method, \ .load_image = __method, \
} }
/* Ethernet SPL functions */
int spl_net_load_image(struct spl_boot_device *bootdev);
/* SPL FAT image functions */ /* SPL FAT image functions */
int spl_load_image_fat(struct blk_desc *block_dev, int partition, int spl_load_image_fat(struct blk_desc *block_dev, int partition,
const char *filename); const char *filename);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册