mirror of
https://xff.cz/git/u-boot/
synced 2025-09-03 09:42:22 +02: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