mirror of
https://xff.cz/git/u-boot/
synced 2025-09-19 09:32:07 +02: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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user