env: mmc: add CONFIG_ENV_MMC_USE_DT
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Thu, 10 Nov 2022 10:49:01 +0000 (11:49 +0100)
committerTom Rini <trini@konsulko.com>
Tue, 10 Jan 2023 17:37:09 +0000 (12:37 -0500)
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>
env/Kconfig
env/mmc.c

index f73f0b8..c409ea7 100644 (file)
@@ -244,6 +244,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
@@ -652,6 +659,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
index 661a268..1894b64 100644 (file)
--- a/env/mmc.c
+++ b/env/mmc.c
 
 #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;