u-boot/include/fw_loader.h
Marek Vasut 8aa57934e5 fw_loader: Split from fs_loader into separate library file
The script based firmware loader does not use anything from the
fs_loader implementation. Separate it into its own library source
file and convert the mediatek PHY to use this separate code. This
should reduce the amount of code that is pulled in alongside the
firmware loader, as the FS loader is no longer included.

Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
2025-10-09 13:50:40 -06:00

35 lines
1.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
/*
* Copyright (C) 2025 Lucien Jheng <lucienzx159@gmail.com>
*/
#ifndef _FW_LOADER_H_
#define _FW_LOADER_H_
/**
* request_firmware_into_buf_via_script() -
* Load firmware using a U-Boot script and copy to buffer
* @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
* 'fw_size' (size in bytes). On success, copies the firmware
* from the given address to user buffer @buf.
*
* The script must set these environment variables:
* fw_addr - Address where firmware is loaded in memory
* fw_size - Size of the firmware in bytes
*
* The script should be defined in the U-Boot environment, for example:
* env set script_name 'load mmc 0:1 ${loadaddr} firmware.bin &&
* env set fw_addr ${loadaddr} && env set fw_size ${filesize}
* 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,
size_t *retsize);
#endif