summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Majewski <lukma@denx.de>2018-02-03 08:29:52 +0100
committerTom Rini <trini@konsulko.com>2018-02-07 22:06:18 -0500
commitd695d6627803dbb78a226e04b0436a01633a9936 (patch)
treecc469594d3654709f309c935c0292a12be0e32fa
parent492322992be31f535dd825b3f0475f05df21256b (diff)
downloadu-boot-d695d6627803dbb78a226e04b0436a01633a9936.tar.gz
spl: eMMC/SD: Provide one __weak spl_boot_mode() function
The goal of this patch is to clean up the code related to choosing SPL MMC boot mode. The spl_boot_mode() now is called only in spl_mmc_load_image() function, which is only compiled in if CONFIG_SPL_MMC_SUPPORT is enabled. To achieve the goal, all per mach/arch implementations eligible for unification has been replaced with one __weak implementation. Signed-off-by: Lukasz Majewski <lukma@denx.de> Reviewed-by: Marek Vasut <marex@denx.de> Reviewed-by: Stefano Babic <sbabic@denx.de> Acked-by: Michal Simek <michal.simek@xilinx.com> (For ZynqMP) Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
-rw-r--r--arch/arm/cpu/arm1136/mx35/generic.c21
-rw-r--r--arch/arm/cpu/armv7/ls102xa/spl.c17
-rw-r--r--arch/arm/cpu/armv8/fsl-layerscape/spl.c17
-rw-r--r--arch/arm/cpu/armv8/zynqmp/spl.c14
-rw-r--r--arch/arm/mach-at91/spl.c15
-rw-r--r--arch/arm/mach-davinci/spl.c5
-rw-r--r--arch/arm/mach-imx/spl.c23
-rw-r--r--arch/arm/mach-mvebu/spl.c7
-rw-r--r--arch/arm/mach-rockchip/rk3188-board-spl.c5
-rw-r--r--arch/arm/mach-rockchip/rk3288-board-spl.c5
-rw-r--r--arch/arm/mach-rockchip/rk3368-board-spl.c5
-rw-r--r--arch/arm/mach-rockchip/rk3399-board-spl.c5
-rw-r--r--arch/arm/mach-socfpga/spl.c11
-rw-r--r--arch/arm/mach-sunxi/board.c6
-rw-r--r--arch/arm/mach-zynq/spl.c7
-rw-r--r--common/spl/spl_mmc.c11
16 files changed, 11 insertions, 163 deletions
diff --git a/arch/arm/cpu/arm1136/mx35/generic.c b/arch/arm/cpu/arm1136/mx35/generic.c
index 5297d62d00..4dcfc72656 100644
--- a/arch/arm/cpu/arm1136/mx35/generic.c
+++ b/arch/arm/cpu/arm1136/mx35/generic.c
@@ -524,24 +524,3 @@ u32 spl_boot_device(void)
return BOOT_DEVICE_NONE;
}
-
-#ifdef CONFIG_SPL_BUILD
-u32 spl_boot_mode(const u32 boot_device)
-{
- switch (spl_boot_device()) {
- case BOOT_DEVICE_MMC1:
-#ifdef CONFIG_SPL_FAT_SUPPORT
- return MMCSD_MODE_FS;
-#else
- return MMCSD_MODE_RAW;
-#endif
- break;
- case BOOT_DEVICE_NAND:
- return 0;
- break;
- default:
- puts("spl: ERROR: unsupported device\n");
- hang();
- }
-}
-#endif
diff --git a/arch/arm/cpu/armv7/ls102xa/spl.c b/arch/arm/cpu/armv7/ls102xa/spl.c
index 1246eed2ca..1e4a1641cb 100644
--- a/arch/arm/cpu/armv7/ls102xa/spl.c
+++ b/arch/arm/cpu/armv7/ls102xa/spl.c
@@ -14,20 +14,3 @@ u32 spl_boot_device(void)
#endif
return BOOT_DEVICE_NAND;
}
-
-u32 spl_boot_mode(const u32 boot_device)
-{
- switch (spl_boot_device()) {
- case BOOT_DEVICE_MMC1:
-#ifdef CONFIG_SPL_FAT_SUPPORT
- return MMCSD_MODE_FS;
-#else
- return MMCSD_MODE_RAW;
-#endif
- case BOOT_DEVICE_NAND:
- return 0;
- default:
- puts("spl: error: unsupported device\n");
- hang();
- }
-}
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/spl.c b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
index 4093d15e56..3a74040b97 100644
--- a/arch/arm/cpu/armv8/fsl-layerscape/spl.c
+++ b/arch/arm/cpu/armv8/fsl-layerscape/spl.c
@@ -26,23 +26,6 @@ u32 spl_boot_device(void)
return 0;
}
-u32 spl_boot_mode(const u32 boot_device)
-{
- switch (spl_boot_device()) {
- case BOOT_DEVICE_MMC1:
-#ifdef CONFIG_SPL_FAT_SUPPORT
- return MMCSD_MODE_FS;
-#else
- return MMCSD_MODE_RAW;
-#endif
- case BOOT_DEVICE_NAND:
- return 0;
- default:
- puts("spl: error: unsupported device\n");
- hang();
- }
-}
-
#ifdef CONFIG_SPL_BUILD
void spl_board_init(void)
diff --git a/arch/arm/cpu/armv8/zynqmp/spl.c b/arch/arm/cpu/armv8/zynqmp/spl.c
index bc7313a88b..0bfa5c1c4d 100644
--- a/arch/arm/cpu/armv8/zynqmp/spl.c
+++ b/arch/arm/cpu/armv8/zynqmp/spl.c
@@ -115,20 +115,6 @@ u32 spl_boot_device(void)
return 0;
}
-u32 spl_boot_mode(const u32 boot_device)
-{
- switch (boot_device) {
- case BOOT_DEVICE_RAM:
- return 0;
- case BOOT_DEVICE_MMC1:
- case BOOT_DEVICE_MMC2:
- return MMCSD_MODE_FS;
- default:
- puts("spl: error: unsupported device\n");
- hang();
- }
-}
-
#ifdef CONFIG_SPL_OS_BOOT
int spl_start_uboot(void)
{
diff --git a/arch/arm/mach-at91/spl.c b/arch/arm/mach-at91/spl.c
index 7e7e24bbe6..91add921c6 100644
--- a/arch/arm/mach-at91/spl.c
+++ b/arch/arm/mach-at91/spl.c
@@ -87,18 +87,3 @@ u32 spl_boot_device(void)
return BOOT_DEVICE_NONE;
}
#endif
-
-u32 spl_boot_mode(const u32 boot_device)
-{
- switch (boot_device) {
-#if defined(CONFIG_SYS_USE_MMC) || defined(CONFIG_SD_BOOT)
- case BOOT_DEVICE_MMC1:
- case BOOT_DEVICE_MMC2:
- return MMCSD_MODE_FS;
- break;
-#endif
- case BOOT_DEVICE_NONE:
- default:
- hang();
- }
-}
diff --git a/arch/arm/mach-davinci/spl.c b/arch/arm/mach-davinci/spl.c
index 564c2008e0..4c74db9ed0 100644
--- a/arch/arm/mach-davinci/spl.c
+++ b/arch/arm/mach-davinci/spl.c
@@ -45,11 +45,6 @@ void spl_board_init(void)
preloader_console_init();
}
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_RAW;
-}
-
u32 spl_boot_device(void)
{
switch (davinci_syscfg_regs->bootcfg) {
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c
index b2521b2101..a9079fceac 100644
--- a/arch/arm/mach-imx/spl.c
+++ b/arch/arm/mach-imx/spl.c
@@ -132,29 +132,6 @@ int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name)
}
#endif
-#if defined(CONFIG_SPL_MMC_SUPPORT)
-/* called from spl_mmc to see type of boot mode for storage (RAW or FAT) */
-u32 spl_boot_mode(const u32 boot_device)
-{
- switch (spl_boot_device()) {
- /* for MMC return either RAW or FAT mode */
- case BOOT_DEVICE_MMC1:
- case BOOT_DEVICE_MMC2:
-#if defined(CONFIG_SPL_FAT_SUPPORT)
- return MMCSD_MODE_FS;
-#elif defined(CONFIG_SUPPORT_EMMC_BOOT)
- return MMCSD_MODE_EMMCBOOT;
-#else
- return MMCSD_MODE_RAW;
-#endif
- break;
- default:
- puts("spl: ERROR: unsupported device\n");
- hang();
- }
-}
-#endif
-
#if defined(CONFIG_SECURE_BOOT)
/*
diff --git a/arch/arm/mach-mvebu/spl.c b/arch/arm/mach-mvebu/spl.c
index d16a62d2dd..a5086f16fb 100644
--- a/arch/arm/mach-mvebu/spl.c
+++ b/arch/arm/mach-mvebu/spl.c
@@ -70,13 +70,6 @@ u32 spl_boot_device(void)
return get_boot_device();
}
-#ifdef CONFIG_SPL_MMC_SUPPORT
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_RAW;
-}
-#endif
-
void board_init_f(ulong dummy)
{
int ret;
diff --git a/arch/arm/mach-rockchip/rk3188-board-spl.c b/arch/arm/mach-rockchip/rk3188-board-spl.c
index 8e3b8ae3ba..74771d3a0b 100644
--- a/arch/arm/mach-rockchip/rk3188-board-spl.c
+++ b/arch/arm/mach-rockchip/rk3188-board-spl.c
@@ -72,11 +72,6 @@ fallback:
return BOOT_DEVICE_MMC1;
}
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_RAW;
-}
-
static int setup_arm_clock(void)
{
struct udevice *dev;
diff --git a/arch/arm/mach-rockchip/rk3288-board-spl.c b/arch/arm/mach-rockchip/rk3288-board-spl.c
index f64a54843f..f3ea624277 100644
--- a/arch/arm/mach-rockchip/rk3288-board-spl.c
+++ b/arch/arm/mach-rockchip/rk3288-board-spl.c
@@ -78,11 +78,6 @@ fallback:
return BOOT_DEVICE_MMC1;
}
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_RAW;
-}
-
#ifdef CONFIG_SPL_MMC_SUPPORT
static int configure_emmc(struct udevice *pinctrl)
{
diff --git a/arch/arm/mach-rockchip/rk3368-board-spl.c b/arch/arm/mach-rockchip/rk3368-board-spl.c
index 72d2c97d36..8055ae538f 100644
--- a/arch/arm/mach-rockchip/rk3368-board-spl.c
+++ b/arch/arm/mach-rockchip/rk3368-board-spl.c
@@ -57,11 +57,6 @@ void board_init_f(ulong dummy)
}
}
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_RAW;
-}
-
u32 spl_boot_device(void)
{
return BOOT_DEVICE_MMC1;
diff --git a/arch/arm/mach-rockchip/rk3399-board-spl.c b/arch/arm/mach-rockchip/rk3399-board-spl.c
index b96903e70f..d35990efd6 100644
--- a/arch/arm/mach-rockchip/rk3399-board-spl.c
+++ b/arch/arm/mach-rockchip/rk3399-board-spl.c
@@ -60,11 +60,6 @@ u32 spl_boot_device(void)
return boot_device;
}
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_RAW;
-}
-
#define TIMER_CHN10_BASE 0xff8680a0
#define TIMER_END_COUNT_L 0x00
#define TIMER_END_COUNT_H 0x04
diff --git a/arch/arm/mach-socfpga/spl.c b/arch/arm/mach-socfpga/spl.c
index 71bae827a1..9bf3b9a446 100644
--- a/arch/arm/mach-socfpga/spl.c
+++ b/arch/arm/mach-socfpga/spl.c
@@ -66,17 +66,6 @@ u32 spl_boot_device(void)
}
}
-#ifdef CONFIG_SPL_MMC_SUPPORT
-u32 spl_boot_mode(const u32 boot_device)
-{
-#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
- return MMCSD_MODE_FS;
-#else
- return MMCSD_MODE_RAW;
-#endif
-}
-#endif
-
#if defined(CONFIG_TARGET_SOCFPGA_GEN5)
static void socfpga_nic301_slave_ns(void)
{
diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
index 0c60ee04da..1753faec1d 100644
--- a/arch/arm/mach-sunxi/board.c
+++ b/arch/arm/mach-sunxi/board.c
@@ -260,12 +260,6 @@ u32 spl_boot_device(void)
return sunxi_get_boot_device();
}
-/* No confirmation data available in SPL yet. Hardcode bootmode */
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_RAW;
-}
-
void board_init_f(ulong dummy)
{
spl_init();
diff --git a/arch/arm/mach-zynq/spl.c b/arch/arm/mach-zynq/spl.c
index b7e6d98f08..0a303f41eb 100644
--- a/arch/arm/mach-zynq/spl.c
+++ b/arch/arm/mach-zynq/spl.c
@@ -69,13 +69,6 @@ u32 spl_boot_device(void)
return mode;
}
-#ifdef CONFIG_SPL_MMC_SUPPORT
-u32 spl_boot_mode(const u32 boot_device)
-{
- return MMCSD_MODE_FS;
-}
-#endif
-
#ifdef CONFIG_SPL_OS_BOOT
int spl_start_uboot(void)
{
diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
index b57e0b04e4..351f4edd41 100644
--- a/common/spl/spl_mmc.c
+++ b/common/spl/spl_mmc.c
@@ -281,6 +281,17 @@ static int spl_mmc_do_fs_boot(struct spl_image_info *spl_image, struct mmc *mmc)
}
#endif
+u32 __weak spl_boot_mode(const u32 boot_device)
+{
+#if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
+ return MMCSD_MODE_FS;
+#elif defined(CONFIG_SUPPORT_EMMC_BOOT)
+ return MMCSD_MODE_EMMCBOOT;
+#else
+ return MMCSD_MODE_RAW;
+#endif
+}
+
int spl_mmc_load_image(struct spl_image_info *spl_image,
struct spl_boot_device *bootdev)
{