]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
env: mmc: statically set the environment partition name
authorEmmanuel Di Fede <emmanuel.difede@cysec.com>
Wed, 14 Jun 2023 10:05:28 +0000 (12:05 +0200)
committerTom Rini <trini@konsulko.com>
Fri, 14 Jul 2023 19:21:07 +0000 (15:21 -0400)
The new opt-out setting, CONFIG_ENV_MMC_PARTITION, statically sets
the MMC environment partition name. Prior to this patch, the only way
to declare this partition name was by creating a
'u-boot,mmc-env-partition' parameter in the device-tree's /config node.

This setting provides additional flexibility, particularly in cases
where accessing the device-tree is not straightforward (e.g. QEMU).

If undeclared, the device-tree's setting will be used.

Signed-off-by: Emmanuel Di Fede <emmanuel.difede@cysec.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Cc: Patrick Delaunay <patrick.delaunay@foss.st.com>
doc/device-tree-bindings/config.txt
env/Kconfig
env/mmc.c

index 3151778b2c9ce9e1894c05b387d20d99717debe6..f50c68bbdc326294b45c8c38c10ce001dd41e15e 100644 (file)
@@ -76,6 +76,8 @@ u-boot,mmc-env-partition (int)
        precedence. In that case, only if the partition is not found,
        mmc-env-offset* will be tried.
 
+       Note that CONFIG_ENV_MMC_PARTITION overrides this device-tree setting.
+
 u-boot,no-apm-finalize (bool)
        For x86 devices running on coreboot, this tells U-Boot not to lock
        down the Intel Management Engine (ME) registers. This allows U-Boot to
index 7342397e169d7dc7532e9cbf3843e2dd30fcad96..13e32104b4c11a849bdec688930e7fb495a81a7b 100644 (file)
@@ -662,6 +662,18 @@ config SYS_MMC_ENV_PART
          partition 0 or the first boot partition, which is 1 or some other defined
          partition.
 
+config USE_ENV_MMC_PARTITION
+       bool "use the mmc environment partition name"
+       depends on ENV_IS_IN_MMC
+
+config ENV_MMC_PARTITION
+       string "mmc environment partition name"
+       depends on USE_ENV_MMC_PARTITION
+       help
+         MMC partition name used to save environment variables.
+         If this variable is unset, u-boot will try to get the env partition name
+         from the device-tree's /config node.
+
 config ENV_MMC_USE_DT
        bool "Read partition name and offset in DT"
        depends on ENV_IS_IN_MMC && OF_CONTROL
index 7a5836ad66c693e300b71e0bc13d502a71e4cd76..cb14bbb58f1393af5524b6de5077d73cecdf2c06 100644 (file)
--- a/env/mmc.c
+++ b/env/mmc.c
@@ -114,8 +114,13 @@ static inline s64 mmc_offset(struct mmc *mmc, int copy)
        if (IS_ENABLED(CONFIG_SYS_MMC_ENV_PART))
                hwpart = mmc_get_env_part(mmc);
 
+#if defined(CONFIG_ENV_MMC_PARTITION)
+       str = CONFIG_ENV_MMC_PARTITION;
+#else
        /* look for the partition in mmc CONFIG_SYS_MMC_ENV_DEV */
        str = ofnode_conf_read_str(dt_prop.partition);
+#endif
+
        if (str) {
                /* try to place the environment at end of the partition */
                err = mmc_offset_try_partition(str, copy, &val);