public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Chee, Tien Fong <tien.fong.chee@intel.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/2] common: Generic file system firmware loader
Date: Thu, 2 Nov 2017 08:20:43 +0000	[thread overview]
Message-ID: <1509610841.2368.18.camel@intel.com> (raw)
In-Reply-To: <05168571-9b72-0ff5-e1c7-07c47b2222a6@denx.de>

On Rab, 2017-11-01 at 10:26 +0100, Marek Vasut wrote:
> On 11/01/2017 10:18 AM, tien.fong.chee at intel.com wrote:
> > 
> > From: Tien Fong Chee <tien.fong.chee@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@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 can remove the flash_ prefix, this generic FS loader should support
for all filesystem instead of flash.

> I also mentioned the API should copy the linux firmware loader API.
> 
If i'm not mistaken, you are referring firmware loader API in this
link https://github.com/torvalds/linux/blob/f007cad159e99fa2acd3b2e9364
fbb32ad28b971/drivers/base/firmware_class.c#L1264.

Actually we have almost same framework in filesystem loader portion,
just different implementation, and Linux firmware loader is more
specific to Linux environment such as hard code path searching in RFS.
The generic FS loader in this patch is much more flexible, let user to
define their own prefer implementation.
 Linux FS firmware loader  <--->   U-Boot FS firmware loader
--------------------------       ---------------------------
1) request_firmware			flash_load_fs
2) _request_firmware_prepare          weak fsloader_preprocess
3) fw_get_filesystem_firmware          weak fs_loading                
         
> > +	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
Technically, USB can be supported in SPL, but the build for USB in SPL
is not supported yet.
> USB init shouldn't be duplicated here IMO.
> 
This is just for the case USB init is not yet started, but loader is
called 1st.
> > 
> > +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.
> 
Okay.
> [...]
> 
> 

  reply	other threads:[~2017-11-02  8:20 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-01  9:18 [U-Boot] [PATCH 0/2] Creating generic file system firmware loader tien.fong.chee at intel.com
2017-11-01  9:18 ` [U-Boot] [PATCH 1/2] common: Generic " tien.fong.chee at intel.com
2017-11-01  9:26   ` Marek Vasut
2017-11-02  8:20     ` Chee, Tien Fong [this message]
2017-11-05 16:43       ` Marek Vasut
2017-11-06  4:15         ` Chee, Tien Fong
2017-11-06 10:56           ` Marek Vasut
2017-11-07  9:03             ` Chee, Tien Fong
2017-11-07  9:34               ` Marek Vasut
2017-11-09  6:04                 ` Chee, Tien Fong
2017-11-09  7:05                   ` Marek Vasut
2017-11-09  7:09                     ` Chee, Tien Fong
2017-11-09 10:00                     ` Lukasz Majewski
2017-11-09 10:31                       ` Marek Vasut
2017-11-10  9:05                         ` Chee, Tien Fong
2017-11-10 10:04                           ` Marek Vasut
2017-11-13  4:31                             ` Chee, Tien Fong
2017-11-16  8:09                             ` Chee, Tien Fong
2017-11-16  8:11                               ` Marek Vasut
2017-11-01  9:18 ` [U-Boot] [PATCH 2/2] common: Convert splash FS loader to use generic FS " tien.fong.chee at intel.com

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1509610841.2368.18.camel@intel.com \
    --to=tien.fong.chee@intel.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox