misc: fs_loader: allow returning actual firmware data size in request_firmware_into_buf_via_script()
It's important to return the actual firmware data size as some firmware files may have no checksum and need the size as the only way for firmware validation check. Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
+3
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user