There is no point in trying to match the alias order for bootdevs, since
build_order() either sorts them by priority, uses the boot_targets
environment variable or the bootdev-order property.

Just use the iterator instead, to simplify the code.

Signed-off-by: Simon Glass <s...@chromium.org>
---

(no changes since v1)

 boot/bootdev-uclass.c | 16 +++++-----------
 1 file changed, 5 insertions(+), 11 deletions(-)

diff --git a/boot/bootdev-uclass.c b/boot/bootdev-uclass.c
index 696efb4b19e..cffa01824c0 100644
--- a/boot/bootdev-uclass.c
+++ b/boot/bootdev-uclass.c
@@ -544,8 +544,8 @@ static int build_order(struct udevice *bootstd, struct 
udevice **order,
 int bootdev_setup_iter_order(struct bootflow_iter *iter, struct udevice **devp)
 {
        struct udevice *bootstd, *dev = *devp, **order;
-       int upto, i;
-       int count;
+       struct uclass *uc;
+       int count, upto;
        int ret;
 
        ret = uclass_first_device_err(UCLASS_BOOTSTD, &bootstd);
@@ -568,15 +568,9 @@ int bootdev_setup_iter_order(struct bootflow_iter *iter, 
struct udevice **devp)
        if (!order)
                return log_msg_ret("order", -ENOMEM);
 
-       /*
-        * Get a list of bootdevs, in seq order (i.e. using aliases). There may
-        * be gaps so try to count up high enough to find them all.
-        */
-       for (i = 0, upto = 0; upto < count && i < 20 + count * 2; i++) {
-               ret = uclass_find_device_by_seq(UCLASS_BOOTDEV, i, &dev);
-               if (!ret)
-                       order[upto++] = dev;
-       }
+       /* Get the list of bootdevs */
+       uclass_id_foreach_dev(UCLASS_BOOTDEV, dev, uc)
+               order[upto++] = dev;
        log_debug("Found %d bootdevs\n", count);
        if (upto != count)
                log_debug("Expected %d bootdevs, found %d using aliases\n",
-- 
2.39.0.246.g2a6d74b583-goog

Reply via email to