diff options
author | Simon Glass <sjg@chromium.org> | 2020-12-17 07:20:30 +0300 |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2020-12-19 06:32:21 +0300 |
commit | a133e2179a729036e7750b497c1c38f9f6a3a835 (patch) | |
tree | e8701370910c0a3c2db692051baef3c39455e3fa /drivers/core/uclass.c | |
parent | 991759196faa74b2e7df1cb8e87820f4ec7285f8 (diff) | |
download | u-boot-a133e2179a729036e7750b497c1c38f9f6a3a835.tar.xz |
dm: core: Update uclass_find_next_free_req_seq() for new scheme
This function current deals with req_seq which is deprecated. Update it to
use the new sequence numbers, putting them above existing aliases. Rename
the function to make this clear.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/core/uclass.c')
-rw-r--r-- | drivers/core/uclass.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/core/uclass.c b/drivers/core/uclass.c index 42c9ba5828..6409457fa9 100644 --- a/drivers/core/uclass.c +++ b/drivers/core/uclass.c @@ -272,18 +272,25 @@ int uclass_find_device_by_name(enum uclass_id id, const char *name, return -ENODEV; } -int uclass_find_next_free_req_seq(struct uclass *uc) +int uclass_find_next_free_seq(struct uclass *uc) { struct udevice *dev; int max = -1; + /* If using aliases, start with the highest alias value */ + if (CONFIG_IS_ENABLED(DM_SEQ_ALIAS) && + (uc->uc_drv->flags & DM_UC_FLAG_SEQ_ALIAS)) + max = dev_read_alias_highest_id(uc->uc_drv->name); + + /* Avoid conflict with existing devices */ list_for_each_entry(dev, &uc->dev_head, uclass_node) { - if ((dev->req_seq != -1) && (dev->req_seq > max)) - max = dev->req_seq; + if (dev->sqq > max) + max = dev->sqq; } - - if (max == -1) - return 0; + /* + * At this point, max will be -1 if there are no existing aliases or + * devices + */ return max + 1; } |