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
					
				|  | @ -74,8 +74,18 @@ static inline int mmc_offset_try_partition(const char *str, int copy, s64 *val) | ||||||
| 		if (ret < 0) | 		if (ret < 0) | ||||||
| 			return ret; | 			return ret; | ||||||
| 
 | 
 | ||||||
| 		if (!strncmp((const char *)info.name, str, sizeof(info.name))) | 		if (str && !strncmp((const char *)info.name, str, sizeof(info.name))) | ||||||
| 			break; | 			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 */ | 	/* round up to info.blksz */ | ||||||
|  | @ -112,6 +122,13 @@ static inline s64 mmc_offset(int copy) | ||||||
| 			return val; | 			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; | 	defvalue = ENV_MMC_OFFSET; | ||||||
| 	propname = dt_prop.offset; | 	propname = dt_prop.offset; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue