diff options
author | Patrick Delaunay <patrick.delaunay@foss.st.com> | 2022-11-10 11:49:03 +0100 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-01-10 12:37:09 -0500 |
commit | 80105d8fd525406a8792db2cb4f1b2002349cfb7 (patch) | |
tree | a946cd12b56663c438e5f1f80c3e42d43a9b1e30 /env | |
parent | 0902bcdbb38a0341be47a03c74e3d75bfbf6f296 (diff) | |
download | u-boot-80105d8fd525406a8792db2cb4f1b2002349cfb7.zip u-boot-80105d8fd525406a8792db2cb4f1b2002349cfb7.tar.gz u-boot-80105d8fd525406a8792db2cb4f1b2002349cfb7.tar.bz2 |
env: mmc: select GPT env partition by type guid
Since commit c0364ce1c695 ("doc/README.gpt: define partition type GUID for
U-Boot environment"), a specific type GUID can be used to indicate
the U-Boot environment partition on the device with GPT partition table.
This patch uses this type GUID to found the env partition as fallback
when the partition name property "u-boot,mmc-env-partition" is not present
in config node or if the indicated partition name is not found.
The mmc_offset_try_partition() function is reused, it selects the first
partition with the correct type GUID when the parameter 'str' is NULL.
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
Diffstat (limited to 'env')
-rw-r--r-- | env/mmc.c | 19 |
1 files changed, 18 insertions, 1 deletions
@@ -74,8 +74,18 @@ static inline int mmc_offset_try_partition(const char *str, int copy, s64 *val) if (ret < 0) return ret; - if (!strncmp((const char *)info.name, str, sizeof(info.name))) + if (str && !strncmp((const char *)info.name, str, sizeof(info.name))) break; +#ifdef CONFIG_PARTITION_TYPE_GUID + if (!str) { + const efi_guid_t env_guid = PARTITION_U_BOOT_ENVIRONMENT; + efi_guid_t type_guid; + + uuid_str_to_bin(info.type_guid, type_guid.b, UUID_STR_FORMAT_GUID); + if (!memcmp(&env_guid, &type_guid, sizeof(efi_guid_t))) + break; + } +#endif } /* round up to info.blksz */ @@ -112,6 +122,13 @@ static inline s64 mmc_offset(int copy) return val; } + /* try the GPT partition with "U-Boot ENV" TYPE GUID */ + if (IS_ENABLED(CONFIG_PARTITION_TYPE_GUID)) { + err = mmc_offset_try_partition(NULL, copy, &val); + if (!err) + return val; + } + defvalue = ENV_MMC_OFFSET; propname = dt_prop.offset; |