]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: core: Update uclass_find_next_free_req_seq() args
authorSimon Glass <sjg@chromium.org>
Thu, 17 Dec 2020 04:20:08 +0000 (21:20 -0700)
committerSimon Glass <sjg@chromium.org>
Sat, 19 Dec 2020 03:32:21 +0000 (20:32 -0700)
At present this is passed a uclass ID and it has to do a lookup. The
callers all have the uclass pointer, except for the I2C uclass where the
code will soon be deleted.

Update the argument to a uclass * instead of an ID since it is more
efficient.

Signed-off-by: Simon Glass <sjg@chromium.org>
drivers/core/device.c
drivers/core/uclass.c
drivers/i2c/designware_i2c_pci.c
include/dm/uclass-internal.h

index fce990994cade8de71b29f559c5ac17d87f5d319..22d80694cd8e81f9cd40279247a3c3e8d9c041ed 100644 (file)
@@ -89,10 +89,10 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
 #if CONFIG_IS_ENABLED(OF_PRIOR_STAGE)
                        if (dev->req_seq == -1)
                                dev->req_seq =
-                                       uclass_find_next_free_req_seq(drv->id);
+                                       uclass_find_next_free_req_seq(uc);
 #endif
                } else {
-                       dev->req_seq = uclass_find_next_free_req_seq(drv->id);
+                       dev->req_seq = uclass_find_next_free_req_seq(uc);
                }
        }
 
index e2372c65d290d74590d530e9c67c4ead200f9ee1..96b7d16f3fc17cbf9d2d475fc739ad4df38d4a23 100644 (file)
@@ -272,17 +272,11 @@ int uclass_find_device_by_name(enum uclass_id id, const char *name,
        return -ENODEV;
 }
 
-int uclass_find_next_free_req_seq(enum uclass_id id)
+int uclass_find_next_free_req_seq(struct uclass *uc)
 {
-       struct uclass *uc;
        struct udevice *dev;
-       int ret;
        int max = -1;
 
-       ret = uclass_get(id, &uc);
-       if (ret)
-               return ret;
-
        list_for_each_entry(dev, &uc->dev_head, uclass_node) {
                if ((dev->req_seq != -1) && (dev->req_seq > max))
                        max = dev->req_seq;
index 8d7b1fe6df321fb9ddb08db984f8a0c4658bbc96..3c15320674b9396a0fa2c06499c61a801c10d636 100644 (file)
@@ -90,7 +90,9 @@ static int designware_i2c_pci_probe(struct udevice *dev)
 
 static int designware_i2c_pci_bind(struct udevice *dev)
 {
+       struct uclass *uc;
        char name[20];
+       int ret;
 
        if (dev_of_valid(dev))
                return 0;
@@ -108,7 +110,11 @@ static int designware_i2c_pci_bind(struct udevice *dev)
         * be possible. We cannot use static data in drivers since they may be
         * used in SPL or before relocation.
         */
-       dev->req_seq = uclass_find_next_free_req_seq(UCLASS_I2C);
+       ret = uclass_get(UCLASS_I2C, &uc);
+       if (ret)
+               return ret;
+
+       dev->req_seq = uclass_find_next_free_req_seq(uc);
        sprintf(name, "i2c_designware#%u", dev->req_seq);
        device_set_name(dev, name);
 
index 6e3f15c2b0804c07f91b03e6f20f77e9b6527596..2c21871e0fd502eb71358086961018f3e01407e4 100644 (file)
  * maximum req_seq of the uclass + 1.
  * This allows assiging req_seq number in the binding order.
  *
- * @id:                Id number of the uclass
+ * @uc:                uclass to check
  * @return     The next free req_seq number
  */
-int uclass_find_next_free_req_seq(enum uclass_id id);
+int uclass_find_next_free_req_seq(struct uclass *uc);
 
 /**
  * uclass_get_device_tail() - handle the end of a get_device call