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

Marek Vasut marex at denx.de
Wed Nov 1 09:26:20 UTC 2017


On 11/01/2017 10:18 AM, tien.fong.chee at intel.com wrote:
> From: Tien Fong Chee <tien.fong.chee at intel.com>
> 
> Generic firmware loader framework contains some common functionality
> which is factored out from splash loader. It is reusable by any
> specific driver file system firmware loader. Specific driver file system
> firmware loader handling can be defined with both weak function
> fsloader_preprocess and fs_loading.
> 
> Signed-off-by: Tien Fong Chee <tien.fong.chee at intel.com>
> ---
>  common/Makefile   |   1 +
>  common/load_fs.c  | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/load_fs.h |  38 ++++++++++
>  3 files changed, 256 insertions(+)
>  create mode 100644 common/load_fs.c
>  create mode 100644 include/load_fs.h
[...]

> +int flash_select_fs_dev(struct flash_location *location)

Why does everything have flash_ prefix ?

I also mentioned the API should copy the linux firmware loader API.

> +{
> +	int res;
> +
> +	switch (location->storage) {
> +	case FLASH_STORAGE_MMC:
> +		res = fs_set_blk_dev("mmc", location->devpart, FS_TYPE_ANY);
> +		break;
> +	case FLASH_STORAGE_USB:
> +		res = fs_set_blk_dev("usb", location->devpart, FS_TYPE_ANY);
> +		break;
> +	case FLASH_STORAGE_SATA:
> +		res = fs_set_blk_dev("sata", location->devpart, FS_TYPE_ANY);
> +		break;
> +	case FLASH_STORAGE_NAND:
> +		if (location->ubivol != NULL)
> +			res = fs_set_blk_dev("ubi", NULL, FS_TYPE_UBIFS);
> +		else
> +			res = -ENODEV;
> +		break;
> +	default:
> +		error("Error: unsupported location storage.\n");
> +		return -ENODEV;
> +	}
> +
> +	if (res)
> +		error("Error: could not access storage.\n");
> +
> +	return res;
> +}
> +
> +#ifndef CONFIG_SPL_BUILD
> +#ifdef CONFIG_USB_STORAGE

This looks wrong, the USB can be supported in SPL no problem. And this
USB init shouldn't be duplicated here IMO.

> +static int flash_init_usb(void)
> +{
> +	int err;
> +
> +	err = usb_init();
> +	if (err)
> +		return err;
> +
> +#ifndef CONFIG_DM_USB
> +	err = usb_stor_scan(1) < 0 ? -ENODEV : 0;
> +#endif
> +
> +	return err;
> +}
> +#else
> +static inline int flash_init_usb(void)

Don't use inline , the compiler can decide better.

[...]


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list