On 27/01/2018 22:55, Lukasz Majewski wrote: > 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 <lu...@denx.de> > > --- > Comments regarding cleanup (to help maintainers assessment if those changes > break anything): > > Implementations necessary to stay as is: > ---------------------------------------- > - SW fix for broken ROM boot code > arch/arm/mach-uniphier/mmc-boot-mode.c > > - Omap specific adjustments: > arch/arm/mach-omap2/boot-common.c > > Below archs had a bit off-standard approach, but were eligible for using > the __weak function: > -------------------- > - at91 -> check if proper configs flags in the weak function are set: > arch/arm/mach-at91/spl.c > > - zyncmp -> the BOOT_DEVICE_RAM return of spl_boot_mode seems like an error > (will hang in spl_mmc_load_image() anyway) > arch/arm/cpu/armv8/zynqmp/spl.c > > - fsl -> here we had a return of BOOT_DEVICE_NAND, but the spl_boot_mode is > eMMC/SD card specific > (will hang in spl_mmc_load_image() anyway) > > arch/arm/cpu/armv8/fsl-layerscape/spl.c > arch/arm/cpu/armv7/ls102xa/spl.c > arch/arm/cpu/arm1136/mx35/generic.c > > Test HW: > > iMX6Q - display5 board > > --- > arch/arm/cpu/arm1136/mx35/generic.c | 21 --------------------- > arch/arm/cpu/armv7/ls102xa/spl.c | 17 ----------------- > arch/arm/cpu/armv8/fsl-layerscape/spl.c | 17 ----------------- > arch/arm/cpu/armv8/zynqmp/spl.c | 14 -------------- > arch/arm/mach-at91/spl.c | 15 --------------- > arch/arm/mach-davinci/spl.c | 5 ----- > arch/arm/mach-imx/spl.c | 23 ----------------------- > arch/arm/mach-mvebu/spl.c | 7 ------- > arch/arm/mach-rockchip/rk3188-board-spl.c | 5 ----- > arch/arm/mach-rockchip/rk3288-board-spl.c | 5 ----- > arch/arm/mach-rockchip/rk3368-board-spl.c | 5 ----- > arch/arm/mach-rockchip/rk3399-board-spl.c | 5 ----- > arch/arm/mach-socfpga/spl.c | 11 ----------- > arch/arm/mach-sunxi/board.c | 6 ------ > arch/arm/mach-zynq/spl.c | 7 ------- > common/spl/spl_mmc.c | 11 +++++++++++ > 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 41b0070a5e..970ac9b59b 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(); > - } > -} > - > __weak void psu_init(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 6c16872f59..08a7e0071f 100644 > --- a/arch/arm/mach-imx/spl.c > +++ b/arch/arm/mach-imx/spl.c > @@ -130,29 +130,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 1672fa05c2..32db076409 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) > { >
Reviewed-by: Stefano Babic <sba...@denx.de> Best regards, Stefano Babic -- ===================================================================== DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de ===================================================================== _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot