Message ID | 1530865596-10567-1-git-send-email-tien.fong.chee@intel.com |
---|---|
State | Accepted |
Delegated to: | Tom Rini |
Headers | show |
Series | Generic file system firmware loader DM | expand |
Hi Tien, On 6 July 2018 at 02:26, <tien.fong.chee@intel.com> wrote: > From: Tien Fong Chee <tien.fong.chee@intel.com> > > Add a function to find the block device descriptor of the parent > device. > > Signed-off-by: Tien Fong Chee <tien.fong.chee@intel.com> > --- > drivers/block/blk-uclass.c | 23 +++++++++++++++++++++++ > include/blk.h | 9 +++++++++ > 2 files changed, 32 insertions(+) > > diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c > index 9e0c823..facf527 100644 > --- a/drivers/block/blk-uclass.c > +++ b/drivers/block/blk-uclass.c > @@ -132,6 +132,29 @@ struct blk_desc *blk_get_devnum_by_typename(const char *if_typename, int devnum) > } > > /** > + * blk_get_by_device() - Get the block device descriptor for the given device > + * @dev: Instance of a storage device > + * > + * Return: With block device descriptor on success , NULL if there is no such > + * block device. > + */ > +struct blk_desc *blk_get_by_device(struct udevice *dev) > +{ > + struct udevice *child_dev, *next; > + > + device_foreach_child_safe(child_dev, next, dev) { > + if (device_get_uclass_id(child_dev) != UCLASS_BLK) > + continue; > + > + return dev_get_uclass_platdata(child_dev); > + } > + > + debug("%s: No block device found\n", __func__); > + > + return NULL; > +} Is this different from blk_get_from_parent() ? [..] Regards, Simon
On Wed, 2018-07-11 at 08:02 -0600, Simon Glass wrote: > Hi Tien, > > On 6 July 2018 at 02:26, <tien.fong.chee@intel.com> wrote: > > > > From: Tien Fong Chee <tien.fong.chee@intel.com> > > > > Add a function to find the block device descriptor of the parent > > device. > > > > Signed-off-by: Tien Fong Chee <tien.fong.chee@intel.com> > > --- > > drivers/block/blk-uclass.c | 23 +++++++++++++++++++++++ > > include/blk.h | 9 +++++++++ > > 2 files changed, 32 insertions(+) > > > > diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk- > > uclass.c > > index 9e0c823..facf527 100644 > > --- a/drivers/block/blk-uclass.c > > +++ b/drivers/block/blk-uclass.c > > @@ -132,6 +132,29 @@ struct blk_desc > > *blk_get_devnum_by_typename(const char *if_typename, int devnum) > > } > > > > /** > > + * blk_get_by_device() - Get the block device descriptor for the > > given device > > + * @dev: Instance of a storage device > > + * > > + * Return: With block device descriptor on success , NULL if there > > is no such > > + * block device. > > + */ > > +struct blk_desc *blk_get_by_device(struct udevice *dev) > > +{ > > + struct udevice *child_dev, *next; > > + > > + device_foreach_child_safe(child_dev, next, dev) { > > + if (device_get_uclass_id(child_dev) != UCLASS_BLK) > > + continue; > > + > > + return dev_get_uclass_platdata(child_dev); > > + } > > + > > + debug("%s: No block device found\n", __func__); > > + > > + return NULL; > > +} > Is this different from blk_get_from_parent() ? This new function would return block description. blk_get_from_parents() would return child device. > > [..] > > Regards, > Simon
Hi Tien Fong, On 11 July 2018 at 08:23, Chee, Tien Fong <tien.fong.chee@intel.com> wrote: > On Wed, 2018-07-11 at 08:02 -0600, Simon Glass wrote: >> Hi Tien, >> >> On 6 July 2018 at 02:26, <tien.fong.chee@intel.com> wrote: >> > >> > From: Tien Fong Chee <tien.fong.chee@intel.com> >> > >> > Add a function to find the block device descriptor of the parent >> > device. >> > >> > Signed-off-by: Tien Fong Chee <tien.fong.chee@intel.com> >> > --- >> > drivers/block/blk-uclass.c | 23 +++++++++++++++++++++++ >> > include/blk.h | 9 +++++++++ >> > 2 files changed, 32 insertions(+) >> > >> > diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk- >> > uclass.c >> > index 9e0c823..facf527 100644 >> > --- a/drivers/block/blk-uclass.c >> > +++ b/drivers/block/blk-uclass.c >> > @@ -132,6 +132,29 @@ struct blk_desc >> > *blk_get_devnum_by_typename(const char *if_typename, int devnum) >> > } >> > >> > /** >> > + * blk_get_by_device() - Get the block device descriptor for the >> > given device >> > + * @dev: Instance of a storage device >> > + * >> > + * Return: With block device descriptor on success , NULL if there >> > is no such >> > + * block device. >> > + */ >> > +struct blk_desc *blk_get_by_device(struct udevice *dev) >> > +{ >> > + struct udevice *child_dev, *next; >> > + >> > + device_foreach_child_safe(child_dev, next, dev) { >> > + if (device_get_uclass_id(child_dev) != UCLASS_BLK) >> > + continue; >> > + >> > + return dev_get_uclass_platdata(child_dev); >> > + } >> > + >> > + debug("%s: No block device found\n", __func__); >> > + >> > + return NULL; >> > +} >> Is this different from blk_get_from_parent() ? > This new function would return block description. > blk_get_from_parents() would return child device. OK, but please implement your function by calling blk_get_from_parent(). There is no need to duplicate the logic. Also how about calling it blk_get_desc_from_parent() ? Regards, Simon
On Wed, 2018-07-11 at 14:13 -0600, Simon Glass wrote: > Hi Tien Fong, > > On 11 July 2018 at 08:23, Chee, Tien Fong <tien.fong.chee@intel.com> > wrote: > > > > On Wed, 2018-07-11 at 08:02 -0600, Simon Glass wrote: > > > > > > Hi Tien, > > > > > > On 6 July 2018 at 02:26, <tien.fong.chee@intel.com> wrote: > > > > > > > > > > > > From: Tien Fong Chee <tien.fong.chee@intel.com> > > > > > > > > Add a function to find the block device descriptor of the > > > > parent > > > > device. > > > > > > > > Signed-off-by: Tien Fong Chee <tien.fong.chee@intel.com> > > > > --- > > > > drivers/block/blk-uclass.c | 23 +++++++++++++++++++++++ > > > > include/blk.h | 9 +++++++++ > > > > 2 files changed, 32 insertions(+) > > > > > > > > diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk- > > > > uclass.c > > > > index 9e0c823..facf527 100644 > > > > --- a/drivers/block/blk-uclass.c > > > > +++ b/drivers/block/blk-uclass.c > > > > @@ -132,6 +132,29 @@ struct blk_desc > > > > *blk_get_devnum_by_typename(const char *if_typename, int > > > > devnum) > > > > } > > > > > > > > /** > > > > + * blk_get_by_device() - Get the block device descriptor for > > > > the > > > > given device > > > > + * @dev: Instance of a storage device > > > > + * > > > > + * Return: With block device descriptor on success , NULL if > > > > there > > > > is no such > > > > + * block device. > > > > + */ > > > > +struct blk_desc *blk_get_by_device(struct udevice *dev) > > > > +{ > > > > + struct udevice *child_dev, *next; > > > > + > > > > + device_foreach_child_safe(child_dev, next, dev) { > > > > + if (device_get_uclass_id(child_dev) != > > > > UCLASS_BLK) > > > > + continue; > > > > + > > > > + return dev_get_uclass_platdata(child_dev); > > > > + } > > > > + > > > > + debug("%s: No block device found\n", __func__); > > > > + > > > > + return NULL; > > > > +} > > > Is this different from blk_get_from_parent() ? > > This new function would return block description. > > blk_get_from_parents() would return child device. > OK, but please implement your function by calling > blk_get_from_parent(). There is no need to duplicate the logic. > > Also how about calling it blk_get_desc_from_parent() ? Okay. > > Regards, > Simon
On Fri, Jul 06, 2018 at 04:26:36PM +0800, tien.fong.chee@intel.com wrote: > From: Tien Fong Chee <tien.fong.chee@intel.com> > > Add a function to find the block device descriptor of the parent > device. > > Signed-off-by: Tien Fong Chee <tien.fong.chee@intel.com> Applied to u-boot/master, thanks!
diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c index 9e0c823..facf527 100644 --- a/drivers/block/blk-uclass.c +++ b/drivers/block/blk-uclass.c @@ -132,6 +132,29 @@ struct blk_desc *blk_get_devnum_by_typename(const char *if_typename, int devnum) } /** + * blk_get_by_device() - Get the block device descriptor for the given device + * @dev: Instance of a storage device + * + * Return: With block device descriptor on success , NULL if there is no such + * block device. + */ +struct blk_desc *blk_get_by_device(struct udevice *dev) +{ + struct udevice *child_dev, *next; + + device_foreach_child_safe(child_dev, next, dev) { + if (device_get_uclass_id(child_dev) != UCLASS_BLK) + continue; + + return dev_get_uclass_platdata(child_dev); + } + + debug("%s: No block device found\n", __func__); + + return NULL; +} + +/** * get_desc() - Get the block device descriptor for the given device number * * @if_type: Interface type diff --git a/include/blk.h b/include/blk.h index 86f6d50..8ba9ab9 100644 --- a/include/blk.h +++ b/include/blk.h @@ -541,6 +541,15 @@ struct blk_desc *blk_get_devnum_by_typename(const char *if_typename, int devnum); /** + * blk_get_by_device() - Get the block device descriptor for the given device + * @dev: Instance of a storage device + * + * Return: With block device descriptor on success , NULL if there is no such + * block device. + */ +struct blk_desc *blk_get_by_device(struct udevice *dev); + +/** * blk_dselect_hwpart() - select a hardware partition * * This selects a hardware partition (such as is supported by MMC). The block