env: mmc: select GPT env partition by type guid
Since commit c0364ce1c6
("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>
This commit is contained in:
parent
0902bcdbb3
commit
80105d8fd5
19
env/mmc.c
vendored
19
env/mmc.c
vendored
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user