mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 18:35:42 +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; | ||||
| } | ||||
|  | ||||
| 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_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	 = 1 << BLOBLIST_BLOB_ALIGN_LOG2, | ||||
|  | ||||
| @@ -461,4 +468,17 @@ static inline int bloblist_maybe_init(void) | ||||
| } | ||||
| #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 */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user