[U-Boot] [PATCH v3 3/9] dm: uclass: Add uclass_foreach_dev_probe

Patrice CHOTARD patrice.chotard at st.com
Fri Oct 12 07:51:31 UTC 2018


Hi Bin

On 10/11/2018 11:06 AM, Bin Meng wrote:
> Hi Patrice,
> 
> On Tue, Oct 9, 2018 at 9:41 PM Patrice Chotard <patrice.chotard at st.com> wrote:
>>
>> Add uclass_foreach_dev_probe() which iterates through
>> devices of a given uclass. Devices are probed if necessary
>> and are ready to use.
>>
>> Signed-off-by: Patrice Chotard <patrice.chotard at st.com>
>> Reviewed-by: Simon Glass <sjg at chromium.org>
>> ---
>>
>> Changes in v3: None
>> Changes in v2: None
>>
>>  include/dm/uclass.h | 16 ++++++++++++++++
>>  1 file changed, 16 insertions(+)
>>
>> diff --git a/include/dm/uclass.h b/include/dm/uclass.h
>> index 6e7c1cd3e8bc..10ccfdce951e 100644
>> --- a/include/dm/uclass.h
>> +++ b/include/dm/uclass.h
>> @@ -376,4 +376,20 @@ int uclass_resolve_seq(struct udevice *dev);
>>  #define uclass_foreach_dev_safe(pos, next, uc) \
>>         list_for_each_entry_safe(pos, next, &uc->dev_head, uclass_node)
>>
>> +/**
>> + * uclass_foreach_dev_probe() - Helper function to iteration through devices
>> + * of given uclass
>> + *
>> + * This creates a for() loop which works through the available devices in
>> + * a uclass in order from start to end. Devices are probed if necessary,
>> + * and ready for use.
>> + *
>> + * @id: Uclass ID
>> + * @dev: struct udevice * to hold the current device. Set to NULL when there
>> + * are no more devices.
>> + */
>> +#define uclass_foreach_dev_probe(id, dev)      \
>> +       for (uclass_first_device(id, &dev); dev; \
>> +            uclass_next_device(&dev))
> 
> Shouldn't we check the return value of uclass_first_device() and
> uclass_next_device()?

It's not necessary to check the return value of uclass_first_device(id,
&dev) because in any error case, dev is NULL, which is the loop output
condition. This is only for the first iteration.

For the other iteration, dev comes from uclass_next_device(&dev),
similarly to uclass_first_device(), in any error case dev is NULL.

Thanks

Patrice


> 
>> +
>>  #endif
> 
> Regards,
> Bin
> 


More information about the U-Boot mailing list