aboutsummaryrefslogtreecommitdiff
path: root/drivers/core
diff options
context:
space:
mode:
authorSimon Glass2020-12-16 21:20:08 -0700
committerSimon Glass2020-12-18 20:32:21 -0700
commitd03adb4a78d18b5506350b3ac72ab2f18f1ed160 (patch)
treee5d27de4a64912a3152d490d33638d60b07d7a36 /drivers/core
parent8b85dfc675f12de8d04126c07f3c796965b990c2 (diff)
dm: core: Update uclass_find_next_free_req_seq() args
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>
Diffstat (limited to 'drivers/core')
-rw-r--r--drivers/core/device.c4
-rw-r--r--drivers/core/uclass.c8
2 files changed, 3 insertions, 9 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index fce990994ca..22d80694cd8 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -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);
}
}
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c
index e2372c65d29..96b7d16f3fc 100644
--- a/drivers/core/uclass.c
+++ b/drivers/core/uclass.c
@@ -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;