mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-23 13:56:20 +00:00
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>
This commit is contained in:
parent
8b85dfc675
commit
d03adb4a78
4 changed files with 12 additions and 12 deletions
|
@ -89,10 +89,10 @@ static int device_bind_common(struct udevice *parent, const struct driver *drv,
|
||||||
#if CONFIG_IS_ENABLED(OF_PRIOR_STAGE)
|
#if CONFIG_IS_ENABLED(OF_PRIOR_STAGE)
|
||||||
if (dev->req_seq == -1)
|
if (dev->req_seq == -1)
|
||||||
dev->req_seq =
|
dev->req_seq =
|
||||||
uclass_find_next_free_req_seq(drv->id);
|
uclass_find_next_free_req_seq(uc);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
dev->req_seq = uclass_find_next_free_req_seq(drv->id);
|
dev->req_seq = uclass_find_next_free_req_seq(uc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -272,17 +272,11 @@ int uclass_find_device_by_name(enum uclass_id id, const char *name,
|
||||||
return -ENODEV;
|
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;
|
struct udevice *dev;
|
||||||
int ret;
|
|
||||||
int max = -1;
|
int max = -1;
|
||||||
|
|
||||||
ret = uclass_get(id, &uc);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
list_for_each_entry(dev, &uc->dev_head, uclass_node) {
|
list_for_each_entry(dev, &uc->dev_head, uclass_node) {
|
||||||
if ((dev->req_seq != -1) && (dev->req_seq > max))
|
if ((dev->req_seq != -1) && (dev->req_seq > max))
|
||||||
max = dev->req_seq;
|
max = dev->req_seq;
|
||||||
|
|
|
@ -90,7 +90,9 @@ static int designware_i2c_pci_probe(struct udevice *dev)
|
||||||
|
|
||||||
static int designware_i2c_pci_bind(struct udevice *dev)
|
static int designware_i2c_pci_bind(struct udevice *dev)
|
||||||
{
|
{
|
||||||
|
struct uclass *uc;
|
||||||
char name[20];
|
char name[20];
|
||||||
|
int ret;
|
||||||
|
|
||||||
if (dev_of_valid(dev))
|
if (dev_of_valid(dev))
|
||||||
return 0;
|
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
|
* be possible. We cannot use static data in drivers since they may be
|
||||||
* used in SPL or before relocation.
|
* 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);
|
sprintf(name, "i2c_designware#%u", dev->req_seq);
|
||||||
device_set_name(dev, name);
|
device_set_name(dev, name);
|
||||||
|
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
* maximum req_seq of the uclass + 1.
|
* maximum req_seq of the uclass + 1.
|
||||||
* This allows assiging req_seq number in the binding order.
|
* 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
|
* @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
|
* uclass_get_device_tail() - handle the end of a get_device call
|
||||||
|
|
Loading…
Add table
Reference in a new issue