On 06/09/2017 12:06 PM, Simon Glass wrote: > Hi Jaehoon, > > On 6 June 2017 at 21:49, Jaehoon Chung <jh80.ch...@samsung.com> wrote: >> Hi Simon, >> >> On 05/28/2017 02:37 AM, Simon Glass wrote: >>> Many devices support a child block device (e.g. MMC, USB). Add a >>> convenient way to get this device given the parent device. >>> >>> Signed-off-by: Simon Glass <s...@chromium.org> >>> --- >>> >>> drivers/block/blk-uclass.c | 26 ++++++++++++++++++++++++++ >>> include/blk.h | 7 +++++++ >>> test/dm/blk.c | 18 ++++++++++++++++++ >>> 3 files changed, 51 insertions(+) >>> >>> diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c >>> index 6145675271..23f131b7ad 100644 >>> --- a/drivers/block/blk-uclass.c >>> +++ b/drivers/block/blk-uclass.c >>> @@ -453,6 +453,32 @@ int blk_prepare_device(struct udevice *dev) >>> return 0; >>> } >>> >>> +int blk_get_from_parent(struct udevice *parent, struct udevice **devp) >>> +{ >>> + struct udevice *dev; >>> + enum uclass_id id; >>> + int ret; >>> + >>> + device_find_first_child(parent, &dev); >>> + if (!dev) { >>> + debug("%s: No block device found for parent '%s'\n", __func__, >>> + parent->name); >>> + return -ENODEV; >>> + } >>> + id = device_get_uclass_id(dev); >>> + if (id != UCLASS_BLK) { >>> + debug("%s: Incorrect uclass %s for block device '%s'\n", >>> + __func__, uclass_get_name(id), dev->name); >>> + return -ENOTBLK; >>> + } >>> + ret = device_probe(dev); >>> + if (ret) >>> + return ret; >>> + *devp = dev; >>> + >>> + return 0; >>> +} >>> + >>> int blk_find_max_devnum(enum if_type if_type) >>> { >>> struct udevice *dev; >>> diff --git a/include/blk.h b/include/blk.h >>> index a128ee4841..4d60987f61 100644 >>> --- a/include/blk.h >>> +++ b/include/blk.h >>> @@ -616,4 +616,11 @@ ulong blk_write_devnum(enum if_type if_type, int >>> devnum, lbaint_t start, >>> */ >>> int blk_select_hwpart_devnum(enum if_type if_type, int devnum, int hwpart); >>> >>> +/** >>> + * blk_get_from_parent() - obtain a block device by looking up its parent >>> + * >>> + * All devices with >>> + */ >>> +int blk_get_from_parent(struct udevice *parent, struct udevice **devp); >> >> Don't need to consider whether CONFIG_BLK is defined or not? >> blk_get_from_parent() is declared in blk-uclass.c > > Well in that case this function will not be called, so I think it is OK.
include/blk.h:624:32: warning: 'struct udevice' declared inside parameter list will not be visible outside of this definition or declaration int blk_get_from_parent(struct udevice *parent, struct udevice **devp); Plz, check this.. :) Best Regards, Jaehoon Chung > >> >> Best Regards, >> Jaehoon Chung > > - Simon > > > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot