[U-Boot] [PATCH 1/3] dm: blk: Add a way to obtain a block device from its parent
Simon Glass
sjg at chromium.org
Fri Jun 9 03:06:05 UTC 2017
Hi Jaehoon,
On 6 June 2017 at 21:49, Jaehoon Chung <jh80.chung at 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 <sjg at 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.
>
> Best Regards,
> Jaehoon Chung
- Simon
More information about the U-Boot
mailing list