summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/fs_loader.c6
-rw-r--r--include/fs_loader.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c
index 60296d55f23..87acd385e23 100644
--- a/drivers/misc/fs_loader.c
+++ b/drivers/misc/fs_loader.c
@@ -229,7 +229,8 @@ int request_firmware_into_buf(struct udevice *dev,
}
int request_firmware_into_buf_via_script(void **buf, size_t max_size,
- const char *script_name)
+ const char *script_name,
+ size_t *retsize)
{
ulong addr, size;
int ret;
@@ -269,6 +270,9 @@ int request_firmware_into_buf_via_script(void **buf, size_t max_size,
return -E2BIG;
}
+ if (retsize)
+ *retsize = size;
+
memcpy(*buf, (void *)addr, size);
return 0;
diff --git a/include/fs_loader.h b/include/fs_loader.h
index a433be1eb99..1cf6d6dd05f 100644
--- a/include/fs_loader.h
+++ b/include/fs_loader.h
@@ -71,6 +71,7 @@ int get_fs_loader(struct udevice **dev);
* @buf: Pointer to a pointer where the firmware buffer will be stored.
* @max_size: Maximum allowed size for the firmware to be loaded.
* @script_name: Name of the U-Boot script to execute for firmware loading.
+ * @retsize: Return the actual firmware data size (optional).
*
* Executes a U-Boot script (@script_name) that loads firmware into
* memory and sets the environment variables 'fw_addr' (address) and
@@ -87,5 +88,6 @@ int get_fs_loader(struct udevice **dev);
* Return: 0 on success, negative value on error.
*/
int request_firmware_into_buf_via_script(void **buf, size_t max_size,
- const char *script_name);
+ const char *script_name,
+ size_t *retsize);
#endif