The change to refactor these functions created a regression.

commit c1d6f91952d0761f61b0f0f96e4c7aa32eee2788
Author: Przemyslaw Marczak <p.marc...@samsung.com>
Date:   Wed Apr 15 13:07:17 2015 +0200
dm: core: add internal functions for getting the device without probe

With this change, the dm unit tests started failing with a probe error
-22 in the dm_test_children test.

Test: dm_test_children
test/dm/core.c:544, dm_test_children(): 0 == ret: Expected 0, got -22

This restores the original behavior which would avoid a probe on invalid
device pointers.

Signed-off-by: Joe Hershberger <joe.hershber...@ni.com>
---

 drivers/core/uclass.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index 04e939d..898c1fc 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -174,7 +174,7 @@ int uclass_find_first_device(enum uclass_id id, struct 
udevice **devp)
        if (ret)
                return ret;
        if (list_empty(&uc->dev_head))
-               return 0;
+               return -ENODEV;
 
        *devp = list_first_entry(&uc->dev_head, struct udevice, uclass_node);
 
@@ -187,7 +187,7 @@ int uclass_find_next_device(struct udevice **devp)
 
        *devp = NULL;
        if (list_is_last(&dev->uclass_node, &dev->uclass->dev_head))
-               return 0;
+               return -ENODEV;
 
        *devp = list_entry(dev->uclass_node.next, struct udevice, uclass_node);
 
@@ -342,6 +342,8 @@ int uclass_first_device(enum uclass_id id, struct udevice 
**devp)
 
        *devp = NULL;
        ret = uclass_find_first_device(id, &dev);
+       if (ret == -ENODEV)
+               return 0;
        return uclass_get_device_tail(dev, ret, devp);
 }
 
@@ -352,6 +354,8 @@ int uclass_next_device(struct udevice **devp)
 
        *devp = NULL;
        ret = uclass_find_next_device(&dev);
+       if (ret == -ENODEV)
+               return 0;
        return uclass_get_device_tail(dev, ret, devp);
 }
 
-- 
1.7.11.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to