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.delau...@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.chot...@foss.st.com> Thanks Patrice