[U-Boot] [PATCH 1/3] dm: blk: Add a way to obtain a block device from its parent
Jaehoon Chung
jh80.chung at samsung.com
Fri Jun 9 03:38:19 UTC 2017
On 06/09/2017 12:06 PM, Simon Glass wrote:
> 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.
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
>
>
>
More information about the U-Boot
mailing list