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

Reply via email to