summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-12-16 21:20:11 -0700
committerSimon Glass <sjg@chromium.org>2020-12-18 20:32:21 -0700
commitba0e7daeefa1ae9821c9fb3103ea7c3ddd2dd2f8 (patch)
tree63baed314a0498dd96ef5d0355f47d90878e7ad2
parent1c55b229232c87751fbe3d2b378b496352960816 (diff)
downloadu-boot-ba0e7daeefa1ae9821c9fb3103ea7c3ddd2dd2f8.tar.gz
u-boot-ba0e7daeefa1ae9821c9fb3103ea7c3ddd2dd2f8.tar.xz
u-boot-ba0e7daeefa1ae9821c9fb3103ea7c3ddd2dd2f8.zip
dm: core: Switch binding to use new sequence numbers
Update the core logic to use the new approach. For now the old code is left as is. Update one test so it still passes. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--drivers/core/device.c5
-rw-r--r--test/dm/bus.c3
2 files changed, 3 insertions, 5 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 8d1287f9a1..1e681333d3 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -661,12 +661,9 @@ int device_find_child_by_seq(const struct udevice *parent, int seq_or_req_seq,
struct udevice *dev;
*devp = NULL;
- if (seq_or_req_seq == -1)
- return -ENODEV;
list_for_each_entry(dev, &parent->child_head, sibling_node) {
- if ((find_req_seq ? dev->req_seq : dev_seq(dev)) ==
- seq_or_req_seq) {
+ if (dev->sqq == seq_or_req_seq) {
*devp = dev;
return 0;
}
diff --git a/test/dm/bus.c b/test/dm/bus.c
index 9e81b1da1f..77555e5293 100644
--- a/test/dm/bus.c
+++ b/test/dm/bus.c
@@ -159,9 +159,10 @@ static int dm_test_bus_children_funcs(struct unit_test_state *uts)
ut_asserteq(-ENODEV, device_find_child_by_seq(bus, -1, true, &dev));
ut_assertok(device_find_child_by_seq(bus, 0, true, &dev));
ut_assert(!(dev->flags & DM_FLAG_ACTIVATED));
- ut_asserteq(-ENODEV, device_find_child_by_seq(bus, 0, false, &dev));
+ ut_asserteq(0, device_find_child_by_seq(bus, 0, false, &dev));
ut_assertok(device_get_child_by_seq(bus, 0, &dev));
ut_assert(dev->flags & DM_FLAG_ACTIVATED);
+ ut_asserteq(0, device_find_child_by_seq(bus, 0, false, &dev));
/* There is no device with sequence number 2 */
ut_asserteq(-ENODEV, device_find_child_by_seq(bus, 2, false, &dev));