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 <[email protected]> --- common/bloblist.c | 15 +++++++++++++++ include/bloblist.h | 12 ++++++++++++ 2 files changed, 27 insertions(+) diff --git a/common/bloblist.c b/common/bloblist.c index 625e480f6b..232ca4c6ce 100644 --- a/common/bloblist.c +++ b/common/bloblist.c @@ -542,3 +542,18 @@ int bloblist_maybe_init(void) return 0; } + +int bloblist_check_reg_conv(ulong rfdt, ulong rzero) +{ + ulong fdt; + + if (!IS_ENABLED(CONFIG_OF_BOARD)) + return 0; + + fdt = (ulong)bloblist_find(BLOBLISTT_CONTROL_FDT, 0); + + if (rfdt != fdt || rzero != 0) + return -EIO; + + return 0; +} diff --git a/include/bloblist.h b/include/bloblist.h index 84fc943819..b5d0f147f6 100644 --- a/include/bloblist.h +++ b/include/bloblist.h @@ -461,4 +461,16 @@ 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. + * Return: 0 if OK, -EIO if the bloblist is not compliant to the register + * conventions. + */ +int bloblist_check_reg_conv(ulong rfdt, ulong rzero); + #endif /* __BLOBLIST_H */ -- 2.25.1

