Skip to content

Commit

Permalink
env: mmc: statically set the environment partition name
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Emmanuel Di Fede authored and trini committed Jul 14, 2023
1 parent b1d774b commit 9e70676
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 0 deletions.
2 changes: 2 additions & 0 deletions doc/device-tree-bindings/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
12 changes: 12 additions & 0 deletions env/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 5 additions & 0 deletions env/mmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 9e70676

Please sign in to comment.