env: mmc: add CONFIG_ENV_MMC_USE_DT

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@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
This commit is contained in:
Patrick Delaunay 2022-11-10 11:49:01 +01:00 committed by Tom Rini
parent 8566050e24
commit d2103e20a9
2 changed files with 23 additions and 0 deletions

16
env/Kconfig vendored
View File

@ -244,6 +244,13 @@ config ENV_IS_IN_MMC
This value is also in units of bytes, but must also be aligned to This value is also in units of bytes, but must also be aligned to
an MMC sector boundary. 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 config ENV_IS_IN_NAND
bool "Environment in a NAND device" bool "Environment in a NAND device"
depends on !CHAIN_OF_TRUST depends on !CHAIN_OF_TRUST
@ -652,6 +659,15 @@ config SYS_MMC_ENV_PART
partition 0 or the first boot partition, which is 1 or some other defined partition 0 or the first boot partition, which is 1 or some other defined
partition. 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 config USE_DEFAULT_ENV_FILE
bool "Create default environment from file" bool "Create default environment from file"
help help

7
env/mmc.c vendored
View File

@ -26,6 +26,12 @@
#define ENV_MMC_INVALID_OFFSET ((s64)-1) #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 */ /* Default ENV offset when not defined in Device Tree */
#define ENV_MMC_OFFSET CONFIG_ENV_OFFSET #define ENV_MMC_OFFSET CONFIG_ENV_OFFSET
@ -34,6 +40,7 @@
#else #else
#define ENV_MMC_OFFSET_REDUND ENV_MMC_INVALID_OFFSET #define ENV_MMC_OFFSET_REDUND ENV_MMC_INVALID_OFFSET
#endif #endif
#endif
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;