[U-Boot] [PATCH v6 2/2] common: Generic firmware loader for file system

Simon Goldschmidt
2018-01-23T07:58:29Z

On 27.12.2017 06:04, tien.fong.chee at intel.com wrote:
> From: Tien Fong Chee <tien.fong.chee@intel.com>
>
> This is file system generic loader which can be used to load
> the file image from the storage into target such as memory.
> The consumer driver would then use this loader to program whatever,
> ie. the FPGA device.
>
> Signed-off-by: Tien Fong Chee <tien.fong.chee@intel.com>
> ---
> common/Makefile | 1 +
> common/fs_loader.c | 309 +++++++++++++++++++++++++++++++++++++++++++++
> doc/README.firmware_loader | 76 +++++++++++
> include/fs_loader.h | 28 ++++
> 4 files changed, 414 insertions(+)
> create mode 100644 common/fs_loader.c
> create mode 100644 doc/README.firmware_loader
> create mode 100644 include/fs_loader.h
>
> diff --git a/common/Makefile b/common/Makefile
> index cec506f..2934221 100644
> --- a/common/Makefile
> +++ b/common/Makefile
> @@ -130,3 +130,4 @@ obj-$(CONFIG_CMD_DFU) += dfu.o

<snip>

> diff --git a/include/fs_loader.h b/include/fs_loader.h
> new file mode 100644
> index 0000000..83a8b80
> --- /dev/null
> +++ b/include/fs_loader.h
> @@ -0,0 +1,28 @@
> +/*
> + * Copyright (C) 2017 Intel Corporation <www.intel.com>
> + *
> + * SPDX-License-Identifier: GPL-2.0
> + */
> +#ifndef _FS_LOADER_H_
> +#define _FS_LOADER_H_
> +
> +#include <linux/types.h>
> +
> +struct firmware {
> + size_t size; /* Size of a file */
> + const u8 *data; /* Buffer for file */
> + void *priv; /* Firmware loader private fields */
> +};
> +
> +struct device_location {
> + char *name; /* Such as mmc, usb,and sata. */

Would it make sense to use 'enum if_type' from blk.h here instead of a
"magic" name? Or are the constants passed here "well-known" enough to
hide them?

Regards,
Simon

> + char *devpart; /* Use the load command dev:part conventions */
> + char *mtdpart; /* MTD partition for ubi part */
> + char *ubivol; /* UBI volume-name for ubifsmount */
> +};
> +
> +int request_firmware_into_buf(struct firmware **firmware_p,
> + const char *name,
> + struct device_location *location,
> + void *buf, size_t size, u32 offset);
> +#endif