On 1/5/23 23:28, Marek Vasut wrote:
> Pass both eMMC HW partition and software partition numbers to
> spl_mmc_get_uboot_raw_sector() so the function can better decide
> which offset within the partition to load payload from.
> 
> Signed-off-by: Fedor Ross <fedor.r...@ifm.com>
> Signed-off-by: Marek Vasut <ma...@denx.de>


Applied to u-boot-mmc/master.

Best Regards,
Jaehoon Chung

> ---
> Cc: Jaehoon Chung <jh80.ch...@samsung.com>
> Cc: Peng Fan <peng....@nxp.com>
> ---
>  arch/arm/mach-imx/image-container.c |  2 ++
>  arch/arm/mach-sunxi/board.c         |  2 ++
>  common/spl/spl_mmc.c                | 15 +++++++++------
>  3 files changed, 13 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/image-container.c 
> b/arch/arm/mach-imx/image-container.c
> index 0e767864822..4518ea1f479 100644
> --- a/arch/arm/mach-imx/image-container.c
> +++ b/arch/arm/mach-imx/image-container.c
> @@ -215,6 +215,8 @@ unsigned long spl_spi_get_uboot_offs(struct spi_flash 
> *flash)
>  
>  #ifdef CONFIG_SPL_MMC
>  unsigned long spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
> +                                        unsigned long hw_part,
> +                                        unsigned long raw_part,
>                                          unsigned long raw_sect)
>  {
>       int end;
> diff --git a/arch/arm/mach-sunxi/board.c b/arch/arm/mach-sunxi/board.c
> index 0c4b6dd1ca3..5a79e14535a 100644
> --- a/arch/arm/mach-sunxi/board.c
> +++ b/arch/arm/mach-sunxi/board.c
> @@ -325,6 +325,8 @@ uint32_t sunxi_get_spl_size(void)
>   * immediately follow the SPL if that is bigger than that.
>   */
>  unsigned long spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
> +                                        unsigned long hw_part,
> +                                        unsigned long raw_part,
>                                          unsigned long raw_sect)
>  {
>       unsigned long spl_size = sunxi_get_spl_size();
> diff --git a/common/spl/spl_mmc.c b/common/spl/spl_mmc.c
> index e4135b20487..8a0c7331267 100644
> --- a/common/spl/spl_mmc.c
> +++ b/common/spl/spl_mmc.c
> @@ -370,6 +370,8 @@ int __weak spl_mmc_boot_partition(const u32 boot_device)
>  #endif
>  
>  unsigned long __weak spl_mmc_get_uboot_raw_sector(struct mmc *mmc,
> +                                               unsigned long hw_part,
> +                                               unsigned long raw_part,
>                                                 unsigned long raw_sect)
>  {
>       return raw_sect;
> @@ -418,7 +420,7 @@ int spl_mmc_load(struct spl_image_info *spl_image,
>       static struct mmc *mmc;
>       u32 boot_mode;
>       int err = 0;
> -     __maybe_unused int part = 0;
> +     __maybe_unused int hw_part = 0;
>       int mmc_dev;
>  
>       /* Perform peripheral init only once for an mmc device */
> @@ -442,12 +444,12 @@ int spl_mmc_load(struct spl_image_info *spl_image,
>       err = -EINVAL;
>       switch (boot_mode) {
>       case MMCSD_MODE_EMMCBOOT:
> -             part = spl_mmc_emmc_boot_partition(mmc);
> +             hw_part = spl_mmc_emmc_boot_partition(mmc);
>  
>               if (CONFIG_IS_ENABLED(MMC_TINY))
> -                     err = mmc_switch_part(mmc, part);
> +                     err = mmc_switch_part(mmc, hw_part);
>               else
> -                     err = blk_dselect_hwpart(mmc_get_blk_desc(mmc), part);
> +                     err = blk_dselect_hwpart(mmc_get_blk_desc(mmc), 
> hw_part);
>  
>               if (err) {
>  #ifdef CONFIG_SPL_LIBCOMMON_SUPPORT
> @@ -465,7 +467,8 @@ int spl_mmc_load(struct spl_image_info *spl_image,
>                               return err;
>               }
>  
> -             raw_sect = spl_mmc_get_uboot_raw_sector(mmc, raw_sect);
> +             raw_sect = spl_mmc_get_uboot_raw_sector(mmc, hw_part,
> +                                                     raw_part, raw_sect);
>  
>  #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
>               err = mmc_load_image_raw_partition(spl_image, bootdev,
> @@ -476,7 +479,7 @@ int spl_mmc_load(struct spl_image_info *spl_image,
>  #endif
>  #ifdef CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
>               err = mmc_load_image_raw_sector(spl_image, bootdev, mmc,
> -                             raw_sect + spl_mmc_raw_uboot_offset(part));
> +                             raw_sect + spl_mmc_raw_uboot_offset(hw_part));
>               if (!err)
>                       return err;
>  #endif

Reply via email to