mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	bloblist: add API to check the register conventions
Add bloblist_check_reg_conv() to check whether the bloblist is compliant to the register conventions defined in Firmware Handoff specification. This API can be used for all Arm platforms. Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
This commit is contained in:
		| @@ -542,3 +542,14 @@ int bloblist_maybe_init(void) | |||||||
|  |  | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig) | ||||||
|  | { | ||||||
|  | 	if (rzero || rsig != (BLOBLIST_MAGIC | BLOBLIST_REGCONV_VER) || | ||||||
|  | 	    rfdt != (ulong)bloblist_find(BLOBLISTT_CONTROL_FDT, 0)) { | ||||||
|  | 		gd->bloblist = NULL;  /* Reset the gd bloblist pointer */ | ||||||
|  | 		return -EIO; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return 0; | ||||||
|  | } | ||||||
|   | |||||||
| @@ -78,6 +78,13 @@ enum { | |||||||
| 	BLOBLIST_VERSION	= 1, | 	BLOBLIST_VERSION	= 1, | ||||||
| 	BLOBLIST_MAGIC		= 0x4a0fb10b, | 	BLOBLIST_MAGIC		= 0x4a0fb10b, | ||||||
|  |  | ||||||
|  | 	/* | ||||||
|  | 	 * FIXME: | ||||||
|  | 	 * Register convention version should be placed into a higher byte | ||||||
|  | 	 * https://github.com/FirmwareHandoff/firmware_handoff/issues/32 | ||||||
|  | 	 */ | ||||||
|  | 	BLOBLIST_REGCONV_VER	= 1 << 24, | ||||||
|  |  | ||||||
| 	BLOBLIST_BLOB_ALIGN_LOG2 = 3, | 	BLOBLIST_BLOB_ALIGN_LOG2 = 3, | ||||||
| 	BLOBLIST_BLOB_ALIGN	 = 1 << BLOBLIST_BLOB_ALIGN_LOG2, | 	BLOBLIST_BLOB_ALIGN	 = 1 << BLOBLIST_BLOB_ALIGN_LOG2, | ||||||
|  |  | ||||||
| @@ -461,4 +468,17 @@ static inline int bloblist_maybe_init(void) | |||||||
| } | } | ||||||
| #endif /* BLOBLIST */ | #endif /* BLOBLIST */ | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * bloblist_check_reg_conv() - Check whether the bloblist is compliant to | ||||||
|  |  *			       the register conventions according to the | ||||||
|  |  *			       Firmware Handoff spec. | ||||||
|  |  * | ||||||
|  |  * @rfdt:  Register that holds the FDT base address. | ||||||
|  |  * @rzero: Register that must be zero. | ||||||
|  |  * @rsig:  Register that holds signature and register conventions version. | ||||||
|  |  * Return: 0 if OK, -EIO if the bloblist is not compliant to the register | ||||||
|  |  *	   conventions. | ||||||
|  |  */ | ||||||
|  | int bloblist_check_reg_conv(ulong rfdt, ulong rzero, ulong rsig); | ||||||
|  |  | ||||||
| #endif /* __BLOBLIST_H */ | #endif /* __BLOBLIST_H */ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user