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

Simon Goldschmidt sgoldschmidt at de.pepperl-fuchs.com
Tue Jan 23 07:58:29 UTC 2018


On 27.12.2017 06:04, tien.fong.chee at intel.com wrote:
> From: Tien Fong Chee <tien.fong.chee at 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 at 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



More information about the U-Boot mailing list