bloblist: add API for applying blobs with specified tag

Add an API to search for the blobs with specified tag and use the
hook function to apply the blob data.
Add a helper function to return the inline header size as according
to recent spec[1] updates, the actual data can be following an inline
header instead of following the TE header immediately.

[1] Firmware Handoff spec:
https://github.com/FirmwareHandoff/firmware_handoff

Signed-off-by: Raymond Mao <raymond.mao@linaro.org>
Reviewed-by: Tom Rini <trini@konsulko.com>
Tested-by: Michal Simek <michal.simek@amd.com>
This commit is contained in:
Raymond Mao
2025-07-18 07:16:17 -07:00
committed by Tom Rini
parent 63cc797a7e
commit 25baace942
2 changed files with 72 additions and 0 deletions

View File

@@ -73,6 +73,7 @@
#define __BLOBLIST_H
#include <mapmem.h>
#include <linux/errno.h>
enum {
BLOBLIST_VERSION = 1,
@@ -279,6 +280,26 @@ static inline void *bloblist_get_blob(uint tag, int *sizep)
}
#endif
#if CONFIG_IS_ENABLED(BLOBLIST)
/**
* bloblist_apply_blobs() - Apply the data of blobs by tag
*
* Scan the bloblist, find the blobs with the matching tag and apply the data
* of blobs
*
* @tag: Tag to search for (enum bloblist_tag_t)
* @func: Function to apply the data of blobs
* Return: 0 if OK, otherwise error.
*/
int bloblist_apply_blobs(uint tag, int (*func)(void **data, int size));
#else
static inline int bloblist_apply_blobs(uint tag,
int (*func)(void **data, int size))
{
return -EPERM;
}
#endif
/**
* bloblist_find() - Find a blob
*