[PATCH] ARM: imx8m: support env in fat and ext4

Oleksandr Suvorov cryosay at gmail.com
Thu Oct 21 10:38:04 CEST 2021


On Wed, Oct 20, 2021 at 10:17 PM Ricardo Salveti <ricardo at foundries.io> wrote:
>
> Change boot device logic to also allow environment stored in fat and in
> ext4 when booting from SD or from eMMC.
>
> As the boot device check for SD and for eMMC was depending on
> ENV_IS_IN_MMC being defined, change the ifdef blocks at env_get_location
> to use IS_ENABLED instead for all modes, returning NOWHERE when no valid
> mode is found.
>
> Signed-off-by: Ricardo Salveti <ricardo at foundries.io>

Reviewed-by: Oleksandr Suvorov <oleksandr.suvorov at foundries.io>

> ---
>  arch/arm/mach-imx/imx8m/soc.c | 35 +++++++++++++++--------------------
>  1 file changed, 15 insertions(+), 20 deletions(-)
>
> diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c
> index f2ddc834d4b..a3ce517a104 100644
> --- a/arch/arm/mach-imx/imx8m/soc.c
> +++ b/arch/arm/mach-imx/imx8m/soc.c
> @@ -1306,40 +1306,35 @@ void do_error(struct pt_regs *pt_regs, unsigned int esr)
>  enum env_location env_get_location(enum env_operation op, int prio)
>  {
>         enum boot_device dev = get_boot_device();
> -       enum env_location env_loc = ENVL_UNKNOWN;
>
>         if (prio)
> -               return env_loc;
> +               return ENVL_UNKNOWN;
>
>         switch (dev) {
> -#ifdef CONFIG_ENV_IS_IN_SPI_FLASH
>         case QSPI_BOOT:
> -               env_loc = ENVL_SPI_FLASH;
> -               break;
> -#endif
> -#ifdef CONFIG_ENV_IS_IN_NAND
> +               if (IS_ENABLED(CONFIG_ENV_IS_IN_SPI_FLASH))
> +                       return ENVL_SPI_FLASH;
> +               return ENVL_NOWHERE;
>         case NAND_BOOT:
> -               env_loc = ENVL_NAND;
> -               break;
> -#endif
> -#ifdef CONFIG_ENV_IS_IN_MMC
> +               if (IS_ENABLED(CONFIG_ENV_IS_IN_NAND))
> +                       return ENVL_NAND;
> +               return ENVL_NOWHERE;
>         case SD1_BOOT:
>         case SD2_BOOT:
>         case SD3_BOOT:
>         case MMC1_BOOT:
>         case MMC2_BOOT:
>         case MMC3_BOOT:
> -               env_loc =  ENVL_MMC;
> -               break;
> -#endif
> +               if (IS_ENABLED(CONFIG_ENV_IS_IN_MMC))
> +                       return ENVL_MMC;
> +               else if (IS_ENABLED(CONFIG_ENV_IS_IN_EXT4))
> +                       return ENVL_EXT4;
> +               else if (IS_ENABLED(CONFIG_ENV_IS_IN_FAT))
> +                       return ENVL_FAT;
> +               return ENVL_NOWHERE;
>         default:
> -#if defined(CONFIG_ENV_IS_NOWHERE)
> -               env_loc = ENVL_NOWHERE;
> -#endif
> -               break;
> +               return ENVL_NOWHERE;
>         }
> -
> -       return env_loc;
>  }
>
>  #ifndef ENV_IS_EMBEDDED
> --
> 2.33.0
>


-- 
Best regards
Oleksandr

Oleksandr Suvorov
cryosay at gmail.com


More information about the U-Boot mailing list