
Hi Tien Fong,
On 2 July 2018 at 01:26, Chee, Tien Fong tien.fong.chee@intel.com wrote:
On Fri, 2018-06-29 at 21:19 -0700, Simon Glass wrote:
Hi Tien Fong,
On 28 June 2018 at 01:58, Chee, Tien Fong tien.fong.chee@intel.com wrote:
On Thu, 2018-06-28 at 01:04 -0700, Chee, Tien Fong wrote:
On Wed, 2018-06-27 at 14:03 -0700, Simon Glass wrote:
Hi Tien Fong,
On 27 June 2018 at 01:32, Chee, Tien Fong <tien.fong.chee@intel .com
wrote:
On Mon, 2018-06-25 at 21:58 -0600, Simon Glass wrote: > > > > Hi, > > On 25 June 2018 at 07:28, tien.fong.chee@intel.com > wrote: > > > > > > > > > > From: Tien Fong Chee tien.fong.chee@intel.com > > > > Add a document to describe file system firmware loader > > binding > > information. > > > > Signed-off-by: Tien Fong Chee tien.fong.chee@intel.com > > --- > > doc/device-tree-bindings/chosen.txt | 22 > > ++++++++++++ > > doc/device-tree-bindings/misc/fs_loader.txt | 52 > > +++++++++++++++++++++++++++++ > > 2 files changed, 74 insertions(+) > > create mode 100644 doc/device-tree- > > bindings/misc/fs_loader.txt > > > > diff --git a/doc/device-tree-bindings/chosen.txt > > b/doc/device- > > tree- > > bindings/chosen.txt > > index c96b8f7..738673c 100644 > > --- a/doc/device-tree-bindings/chosen.txt > > +++ b/doc/device-tree-bindings/chosen.txt > > @@ -73,3 +73,25 @@ Example > > u-boot,spl-boot-order = "same-as-spl", > > &sdmmc, > > "/sd > > hci@fe330000"; > > }; > > }; > > + > > +firmware-loader property > > +------------------------ > > +Multiple file system firmware loader nodes could be > > defined > > in > > device trees for > > +multiple storage type and their default partition, then > > a > > property > > +"firmware-loader" can be used to pass default firmware > > loader > > +node(default storage type) to the firmware loader > > driver. > > + > > +Example > > +------- > > +/ { > > + chosen { > > + firmware-loader = &fs_loader0; > > + }; > > + > > + fs_loader0: fs_loader@0 { > This should be : > > > > > > > > > > > + fs_loader0: fs-loader@0 { > since hyphen is used for node and property names. > Underscore is > used > for phandles (so you have that correct). > Okay. > > > > > > > > > > > > > + u-boot,dm-pre-reloc; > > + compatible = "fs_loader"; > How about u-boot,fs-loader since this is U-Boot specific I > think. > > > > > > > > > > > > + storage_device = "mmc"; > storage-device > Okay > > > > > > > > > > > > > + devpart = "0:1"; > I think you should use a phandle to the node containing the > mmc > device to use. > > storage-device = <&mmc_3 1>; > > for example (meaning use that MMC, partition 1. > How to get device number based on node of a storage? This could make design more complicated because this driver is designed to support both fdt and without fdt(U-boot env and hard coding in driver).
I think it is fine to support the environment as a way of providing this info, but there is no need to support non-DM. Everything should be converting to DM now.
Ok,i would keep the DM and environment support.
We have:
uclass_get_device_by_phandle_id() device_get_global_by_of_offset()
I think we need to create a function called
device_get_global_by_phandle_id()
which can be used to obtain the device based on a phandle.
I means the device number in the struct blk_desc, block device. I don't know how the device number is built up during driver model init. Is there a function to retrive the device number?
After roughly checking the blk-uclass.c, i think we can get the device number for blok device and also mainstain the consistent interface with UBI(non block device), we need two parameters in FDT,
- storage-interface:
block device - "ide" "scsi" "atapi" "usb" "doc" "mmc" "sd" "sata" "host" "nvme" "efi"
Do you need this? Can it not be obtained from uclass_get_name() using the phandle (below)?
The purpose of above parameter is used to differentiate the block devices and non block devices(like UBI). This function would be called if it is block device.
Did you see the strings in the uclass drivers? E.g.:
UCLASS_DRIVER(mmc) = { .id = UCLASS_MMC, .name = "mmc", .flags = DM_UC_FLAG_SEQ_ALIAS, .per_device_auto_alloc_size = sizeof(struct mmc_uclass_priv), };
Is the name is standard defined as above block devices string?
I don't understand this. The same is defined for all uclasses that can have a block device as a child.
non block device "ubi"
- phandle for physical storage node(parent node) which contain the
uclass support as listed below for block devices: UCLASS_IDE UCLASS_SCSI UCLASS_INVALID UCLASS_MASS_STORAGE UCLASS_INVALID UCLASS_MMC UCLASS_INVALID UCLASS_AHCI UCLASS_ROOT UCLASS_NVME UCLASS_EFI Above nodes must contain the child node UCLASS_BLK(this node contains device number)
No node required for UBI interface.
I can create a new function, which is specific for getting the device number from the parent node(block device) which contains the child node UCLASS_BLK. May be that function can be put into fs.c.
I'm not sure would this work as expected, any ideas/thoughts on my proposal?
Sounds right to me.
Is that possible one parent device(like MMC) contains multiple child devices in UCLASS_BLK?
No, only one is supported.
Regards, Simon