[Uboot-stm32] [PATCH 4/8] env: mmc: add CONFIG_ENV_MMC_USE_DT

Patrice CHOTARD patrice.chotard at foss.st.com
Tue Dec 6 09:11:29 CET 2022



On 11/10/22 11:49, Patrick Delaunay wrote:
> Add a new config CONFIG_ENV_MMC_USE_DT to force configuration of the
> U-Boot environment offset with device tree config node.
> 
> This patch avoids issues when several CONFIG_ENV_IS_IN_XXX are activated,
> the defconfig file uses the same value for CONFIG_ENV_OFFSET or
> CONFIG_ENV_OFFSET_REDUND for the several ENV backends (SPI_FLASH, EEPROM
> NAND, SATA, MMC).
> 
> After this patch a bad offset value is not possible when the selected
> partition in device tree is not found.
> 
> Signed-off-by: Patrick Delaunay <patrick.delaunay at foss.st.com>
> ---
> 
>  env/Kconfig | 16 ++++++++++++++++
>  env/mmc.c   |  7 +++++++
>  2 files changed, 23 insertions(+)
> 
> diff --git a/env/Kconfig b/env/Kconfig
> index 24111dfaf47b..f8ee99052b97 100644
> --- a/env/Kconfig
> +++ b/env/Kconfig
> @@ -242,6 +242,13 @@ config ENV_IS_IN_MMC
>  	  This value is also in units of bytes, but must also be aligned to
>  	  an MMC sector boundary.
>  
> +	  CONFIG_ENV_MMC_USE_DT (optional):
> +
> +	  These define forces the configuration by the config node in device
> +	  tree with partition name: "u-boot,mmc-env-partition" or with
> +	  offset: "u-boot,mmc-env-offset", "u-boot,mmc-env-offset-redundant".
> +	  CONFIG_ENV_OFFSET and CONFIG_ENV_OFFSET_REDUND are not used.
> +
>  config ENV_IS_IN_NAND
>  	bool "Environment in a NAND device"
>  	depends on !CHAIN_OF_TRUST
> @@ -650,6 +657,15 @@ config SYS_MMC_ENV_PART
>  	  partition 0 or the first boot partition, which is 1 or some other defined
>  	  partition.
>  
> +config ENV_MMC_USE_DT
> +	bool "Read partition name and offset in DT"
> +	depends on ENV_IS_IN_MMC && OF_CONTROL
> +	help
> +	  Only use the device tree to get the environment location in MMC
> +	  device, with partition name or with offset.
> +	  The 2 defines CONFIG_ENV_OFFSET, CONFIG_ENV_OFFSET_REDUND
> +	  are not used as fallback.
> +
>  config USE_DEFAULT_ENV_FILE
>  	bool "Create default environment from file"
>  	help
> diff --git a/env/mmc.c b/env/mmc.c
> index 661a268ea07d..1894b6483220 100644
> --- a/env/mmc.c
> +++ b/env/mmc.c
> @@ -26,6 +26,12 @@
>  
>  #define ENV_MMC_INVALID_OFFSET ((s64)-1)
>  
> +#if defined(CONFIG_ENV_MMC_USE_DT)
> +/* ENV offset is invalid when not defined in Device Tree */
> +#define ENV_MMC_OFFSET		ENV_MMC_INVALID_OFFSET
> +#define ENV_MMC_OFFSET_REDUND	ENV_MMC_INVALID_OFFSET
> +
> +#else
>  /* Default ENV offset when not defined in Device Tree */
>  #define ENV_MMC_OFFSET		CONFIG_ENV_OFFSET
>  
> @@ -34,6 +40,7 @@
>  #else
>  #define ENV_MMC_OFFSET_REDUND	ENV_MMC_INVALID_OFFSET
>  #endif
> +#endif
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  

Reviewed-by: Patrice Chotard <patrice.chotard at foss.st.com>

Thanks
Patrice


More information about the U-Boot mailing list