dm: core: Add uclass_first/next_device_check()

Sometimes it is useful to iterate through all devices in a uclass and
skip over those which do not work correctly (e.g fail to probe). Add two
new functions to provide this feature.

The caller must check the return value each time to make sure that the
device is valid. But the device pointer is always returned.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2017-04-23 20:10:45 -06:00
parent 9856157259
commit 95ce385a4a
3 changed files with 138 additions and 0 deletions

View File

@@ -492,6 +492,33 @@ int uclass_next_device(struct udevice **devp)
return uclass_get_device_tail(dev, ret, devp);
}
int uclass_first_device_check(enum uclass_id id, struct udevice **devp)
{
int ret;
*devp = NULL;
ret = uclass_find_first_device(id, devp);
if (ret)
return ret;
if (!*devp)
return 0;
return device_probe(*devp);
}
int uclass_next_device_check(struct udevice **devp)
{
int ret;
ret = uclass_find_next_device(devp);
if (ret)
return ret;
if (!*devp)
return 0;
return device_probe(*devp);
}
int uclass_bind_device(struct udevice *dev)
{
struct uclass *uc;