[PATCH 04/11] dm: Remove uses of device_bind_offset()
Simon Glass
sjg at chromium.org
Sun Nov 29 01:50:03 CET 2020
This function is not needed since the standard device_bind() can be used
instead.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
arch/x86/cpu/apollolake/spl.c | 2 +-
drivers/clk/at91/compat.c | 20 ++++++++------------
drivers/clk/clk.c | 2 +-
drivers/gpio/mt7621_gpio.c | 4 ++--
drivers/gpio/s5p_gpio.c | 4 ++--
drivers/gpio/sunxi_gpio.c | 4 ++--
drivers/gpio/tegra186_gpio.c | 4 ++--
drivers/gpio/tegra_gpio.c | 6 +++---
drivers/net/mvpp2.c | 4 ++--
drivers/pinctrl/broadcom/pinctrl-bcm283x.c | 5 ++---
drivers/pinctrl/meson/pinctrl-meson.c | 4 +++-
drivers/pinctrl/mscc/pinctrl-jr2.c | 4 ++--
drivers/pinctrl/mscc/pinctrl-luton.c | 4 ++--
drivers/pinctrl/mscc/pinctrl-ocelot.c | 4 ++--
drivers/pinctrl/mscc/pinctrl-serval.c | 4 ++--
drivers/pinctrl/mscc/pinctrl-servalt.c | 4 ++--
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c | 8 ++++----
drivers/power/regulator/Kconfig | 2 +-
include/dm/device-internal.h | 4 ++--
include/power/regulator.h | 2 +-
20 files changed, 46 insertions(+), 49 deletions(-)
diff --git a/arch/x86/cpu/apollolake/spl.c b/arch/x86/cpu/apollolake/spl.c
index 1f75e1894b7..089b37c59f8 100644
--- a/arch/x86/cpu/apollolake/spl.c
+++ b/arch/x86/cpu/apollolake/spl.c
@@ -86,7 +86,7 @@ static int apl_flash_probe(struct udevice *dev)
/*
* Manually set the parent of the SPI flash to SPI, since dtoc doesn't. We also
* need to allocate the parent_platdata since by the time this function is
- * called device_bind_offset() has already gone past that step.
+ * called device_bind() has already gone past that step.
*/
static int apl_flash_bind(struct udevice *dev)
{
diff --git a/drivers/clk/at91/compat.c b/drivers/clk/at91/compat.c
index 9563285674b..afd67b290d8 100644
--- a/drivers/clk/at91/compat.c
+++ b/drivers/clk/at91/compat.c
@@ -62,34 +62,30 @@ static int at91_pmc_core_probe(struct udevice *dev)
*/
int at91_clk_sub_device_bind(struct udevice *dev, const char *drv_name)
{
- const void *fdt = gd->fdt_blob;
- int offset = dev_of_offset(dev);
+ ofnode parent = dev_ofnode(dev);
+ ofnode node;
bool pre_reloc_only = !(gd->flags & GD_FLG_RELOC);
const char *name;
int ret;
- for (offset = fdt_first_subnode(fdt, offset);
- offset > 0;
- offset = fdt_next_subnode(fdt, offset)) {
- if (pre_reloc_only &&
- !ofnode_pre_reloc(offset_to_ofnode(offset)))
+ ofnode_for_each_subnode(node, parent) {
+ if (pre_reloc_only && !ofnode_pre_reloc(node))
continue;
/*
* If this node has "compatible" property, this is not
* a clock sub-node, but a normal device. skip.
*/
- fdt_get_property(fdt, offset, "compatible", &ret);
- if (ret >= 0)
+ if (ofnode_read_prop(node, "compatible", NULL))
continue;
if (ret != -FDT_ERR_NOTFOUND)
return ret;
- name = fdt_get_name(fdt, offset, NULL);
+ name = ofnode_get_name(node);
if (!name)
return -EINVAL;
- ret = device_bind_driver_to_node(dev, drv_name, name,
- offset_to_ofnode(offset), NULL);
+ ret = device_bind_driver_to_node(dev, drv_name, name, node,
+ NULL);
if (ret)
return ret;
}
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 1fa9bec6fea..928ad13641a 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -36,7 +36,7 @@ int clk_register(struct clk *clk, const char *drv_name,
return -ENOENT;
}
- ret = device_bind_offset(parent, drv, name, NULL, -1, &clk->dev);
+ ret = device_bind(parent, drv, name, NULL, ofnode_null(), &clk->dev);
if (ret) {
printf("%s: CLK: %s driver bind error [%d]!\n", __func__, name,
ret);
diff --git a/drivers/gpio/mt7621_gpio.c b/drivers/gpio/mt7621_gpio.c
index b64bc838a31..8b41e34844e 100644
--- a/drivers/gpio/mt7621_gpio.c
+++ b/drivers/gpio/mt7621_gpio.c
@@ -157,8 +157,8 @@ static int gpio_mediatek_bind(struct udevice *parent)
plat->gpio_count = MTK_BANK_WIDTH;
plat->bank = bank;
- ret = device_bind_offset(parent, parent->driver,
- plat->bank_name, plat, -1, &dev);
+ ret = device_bind(parent, parent->driver, plat->bank_name, plat,
+ ofnode_null(), &dev);
if (ret)
return ret;
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index 4f9fedd6129..d6054c4a6dd 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -332,8 +332,8 @@ static int gpio_exynos_bind(struct udevice *parent)
return -ENOMEM;
plat->bank_name = fdt_get_name(blob, node, NULL);
- ret = device_bind_offset(parent, parent->driver,
- plat->bank_name, plat, -1, &dev);
+ ret = device_bind(parent, parent->driver, plat->bank_name, plat,
+ ofnode_null(), &dev);
if (ret)
return ret;
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
index f18f0c8152c..b6b0e9acbdb 100644
--- a/drivers/gpio/sunxi_gpio.c
+++ b/drivers/gpio/sunxi_gpio.c
@@ -305,8 +305,8 @@ static int gpio_sunxi_bind(struct udevice *parent)
plat->bank_name = gpio_bank_name(soc_data->start + bank);
plat->gpio_count = SUNXI_GPIOS_PER_BANK;
- ret = device_bind_offset(parent, parent->driver,
- plat->bank_name, plat, -1, &dev);
+ ret = device_bind(parent, parent->driver, plat->bank_name, plat,
+ ofnode_null(), &dev);
if (ret)
return ret;
dev_set_of_offset(dev, dev_of_offset(parent));
diff --git a/drivers/gpio/tegra186_gpio.c b/drivers/gpio/tegra186_gpio.c
index a518a395cab..bcc322c3b02 100644
--- a/drivers/gpio/tegra186_gpio.c
+++ b/drivers/gpio/tegra186_gpio.c
@@ -190,8 +190,8 @@ static int tegra186_gpio_bind(struct udevice *parent)
plat->name = ctlr_data->ports[port].name;
plat->regs = &(regs[ctlr_data->ports[port].offset / 4]);
- ret = device_bind_offset(parent, parent->driver, plat->name,
- plat, -1, &dev);
+ ret = device_bind(parent, parent->driver, plat->name, plat,
+ ofnode_null(), &dev);
if (ret)
return ret;
dev_set_of_offset(dev, dev_of_offset(parent));
diff --git a/drivers/gpio/tegra_gpio.c b/drivers/gpio/tegra_gpio.c
index 0056171fc51..3877ee659af 100644
--- a/drivers/gpio/tegra_gpio.c
+++ b/drivers/gpio/tegra_gpio.c
@@ -360,9 +360,9 @@ static int gpio_tegra_bind(struct udevice *parent)
plat->base_gpio = TEGRA_GPIOS_PER_PORT * base_port;
plat->port_name = gpio_port_name(base_port);
- ret = device_bind_offset(parent, parent->driver,
- plat->port_name, plat, -1,
- &dev);
+ ret = device_bind(parent, parent->driver,
+ plat->port_name, plat, ofnode_null(),
+ &dev);
if (ret)
return ret;
dev_set_of_offset(dev, dev_of_offset(parent));
diff --git a/drivers/net/mvpp2.c b/drivers/net/mvpp2.c
index df77a0d5e8e..c1a78a2918e 100644
--- a/drivers/net/mvpp2.c
+++ b/drivers/net/mvpp2.c
@@ -5477,8 +5477,8 @@ static int mvpp2_base_bind(struct udevice *parent)
sprintf(name, "mvpp2-%d", id);
/* Create child device UCLASS_ETH and bind it */
- device_bind_offset(parent, &mvpp2_driver, name, plat, subnode, &dev);
- dev_set_of_offset(dev, subnode);
+ device_bind(parent, &mvpp2_driver, name, plat,
+ offset_to_ofnode(subnode), &dev);
}
return 0;
diff --git a/drivers/pinctrl/broadcom/pinctrl-bcm283x.c b/drivers/pinctrl/broadcom/pinctrl-bcm283x.c
index 54928a607cb..5f5f3f3622f 100644
--- a/drivers/pinctrl/broadcom/pinctrl-bcm283x.c
+++ b/drivers/pinctrl/broadcom/pinctrl-bcm283x.c
@@ -125,9 +125,8 @@ int bcm283x_pinctl_probe(struct udevice *dev)
struct udevice *pdev;
/* Create GPIO device as well */
- ret = device_bind_offset(dev, lists_driver_lookup_name("gpio_bcm2835"),
- "gpio_bcm2835", NULL, dev_of_offset(dev),
- &pdev);
+ ret = device_bind(dev, lists_driver_lookup_name("gpio_bcm2835"),
+ "gpio_bcm2835", NULL, dev_ofnode(dev), &pdev);
if (ret) {
/*
* While we really want the pinctrl driver to work to make
diff --git a/drivers/pinctrl/meson/pinctrl-meson.c b/drivers/pinctrl/meson/pinctrl-meson.c
index 45a1ccf58d6..c35e4c42a09 100644
--- a/drivers/pinctrl/meson/pinctrl-meson.c
+++ b/drivers/pinctrl/meson/pinctrl-meson.c
@@ -347,6 +347,7 @@ int meson_pinctrl_probe(struct udevice *dev)
int na, ns;
char *name;
+ /* FIXME: Should use livetree */
na = fdt_address_cells(gd->fdt_blob, dev_of_offset(dev->parent));
if (na < 1) {
debug("bad #address-cells\n");
@@ -419,7 +420,8 @@ int meson_pinctrl_probe(struct udevice *dev)
sprintf(name, "meson-gpio");
/* Create child device UCLASS_GPIO and bind it */
- device_bind_offset(dev, priv->data->gpio_driver, name, NULL, gpio, &gpio_dev);
+ device_bind(dev, priv->data->gpio_driver, name, NULL,
+ offset_to_ofnode(gpio), &gpio_dev);
dev_set_of_offset(gpio_dev, gpio);
return 0;
diff --git a/drivers/pinctrl/mscc/pinctrl-jr2.c b/drivers/pinctrl/mscc/pinctrl-jr2.c
index fc730b79d6a..6de7a416f0e 100644
--- a/drivers/pinctrl/mscc/pinctrl-jr2.c
+++ b/drivers/pinctrl/mscc/pinctrl-jr2.c
@@ -299,8 +299,8 @@ static int jr2_pinctrl_probe(struct udevice *dev)
if (ret)
return ret;
- ret = device_bind_offset(dev, &jr2_gpio_driver, "jr2-gpio", NULL,
- dev_of_offset(dev), NULL);
+ ret = device_bind(dev, &jr2_gpio_driver, "jr2-gpio", NULL,
+ dev_ofnode(dev), NULL);
if (ret)
return ret;
diff --git a/drivers/pinctrl/mscc/pinctrl-luton.c b/drivers/pinctrl/mscc/pinctrl-luton.c
index 4fb17984abe..0adeef9ec67 100644
--- a/drivers/pinctrl/mscc/pinctrl-luton.c
+++ b/drivers/pinctrl/mscc/pinctrl-luton.c
@@ -165,8 +165,8 @@ int luton_pinctrl_probe(struct udevice *dev)
if (ret)
return ret;
- ret = device_bind_offset(dev, &luton_gpio_driver, "luton-gpio", NULL,
- dev_of_offset(dev), NULL);
+ ret = device_bind(dev, &luton_gpio_driver, "luton-gpio", NULL,
+ dev_ofnode(dev), NULL);
return 0;
}
diff --git a/drivers/pinctrl/mscc/pinctrl-ocelot.c b/drivers/pinctrl/mscc/pinctrl-ocelot.c
index 12ecad7a6e9..4df5eef1b10 100644
--- a/drivers/pinctrl/mscc/pinctrl-ocelot.c
+++ b/drivers/pinctrl/mscc/pinctrl-ocelot.c
@@ -181,8 +181,8 @@ int ocelot_pinctrl_probe(struct udevice *dev)
if (ret)
return ret;
- ret = device_bind_offset(dev, &ocelot_gpio_driver, "ocelot-gpio", NULL,
- dev_of_offset(dev), NULL);
+ ret = device_bind(dev, &ocelot_gpio_driver, "ocelot-gpio", NULL,
+ dev_ofnode(dev), NULL);
return ret;
}
diff --git a/drivers/pinctrl/mscc/pinctrl-serval.c b/drivers/pinctrl/mscc/pinctrl-serval.c
index 93b31d20833..2cef5df3dc2 100644
--- a/drivers/pinctrl/mscc/pinctrl-serval.c
+++ b/drivers/pinctrl/mscc/pinctrl-serval.c
@@ -209,8 +209,8 @@ static int serval_pinctrl_probe(struct udevice *dev)
if (ret)
return ret;
- ret = device_bind_offset(dev, &serval_gpio_driver, "serval-gpio", NULL,
- dev_of_offset(dev), NULL);
+ ret = device_bind(dev, &serval_gpio_driver, "serval-gpio", NULL,
+ dev_ofnode(dev), NULL);
if (ret)
return ret;
diff --git a/drivers/pinctrl/mscc/pinctrl-servalt.c b/drivers/pinctrl/mscc/pinctrl-servalt.c
index 9bbc7698a52..37ce52ce7b8 100644
--- a/drivers/pinctrl/mscc/pinctrl-servalt.c
+++ b/drivers/pinctrl/mscc/pinctrl-servalt.c
@@ -245,8 +245,8 @@ static int servalt_pinctrl_probe(struct udevice *dev)
if (ret)
return ret;
- ret = device_bind_offset(dev, &servalt_gpio_driver, "servalt-gpio", NULL,
- dev_of_offset(dev), NULL);
+ ret = device_bind(dev, &servalt_gpio_driver, "servalt-gpio", NULL,
+ dev_ofnode(dev), NULL);
if (ret)
return ret;
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
index 7bbeb413ba5..17d7603ebdb 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
@@ -547,13 +547,14 @@ static int armada_37xx_gpiochip_register(struct udevice *parent,
int subnode;
char *name;
- /* Lookup GPIO driver */
+ /* FIXME: Should not need to lookup GPIO uclass */
drv = lists_uclass_lookup(UCLASS_GPIO);
if (!drv) {
puts("Cannot find GPIO driver\n");
return -ENOENT;
}
+ /* FIXME: Use livtree and check the result of device_bind() below */
fdt_for_each_subnode(subnode, blob, node) {
if (fdtdec_get_bool(blob, subnode, "gpio-controller")) {
ret = 0;
@@ -567,9 +568,8 @@ static int armada_37xx_gpiochip_register(struct udevice *parent,
sprintf(name, "armada-37xx-gpio");
/* Create child device UCLASS_GPIO and bind it */
- device_bind_offset(parent, &armada_37xx_gpio_driver, name, NULL,
- subnode, &dev);
- dev_set_of_offset(dev, subnode);
+ device_bind(parent, &armada_37xx_gpio_driver, name, NULL,
+ offset_to_ofnode(subnode), &dev);
return 0;
}
diff --git a/drivers/power/regulator/Kconfig b/drivers/power/regulator/Kconfig
index a6f78d96706..d431102462a 100644
--- a/drivers/power/regulator/Kconfig
+++ b/drivers/power/regulator/Kconfig
@@ -11,7 +11,7 @@ config DM_REGULATOR
- 'include/power/regulator.h'
- 'drivers/power/pmic/pmic-uclass.c'
- 'drivers/power/pmic/regulator-uclass.c'
- It's important to call the device_bind_offset() with the proper node offset,
+ It's important to call the device_bind() with the proper node offset,
when binding the regulator devices. The pmic_bind_childs() can be used
for this purpose if PMIC I/O driver is implemented or dm_scan_fdt_dev()
otherwise. Detailed information can be found in the header file.
diff --git a/include/dm/device-internal.h b/include/dm/device-internal.h
index 636210f73ed..6f4f8510f7e 100644
--- a/include/dm/device-internal.h
+++ b/include/dm/device-internal.h
@@ -37,8 +37,8 @@ struct udevice;
* @return 0 if OK, -ve on error
*/
int device_bind_offset(struct udevice *parent, const struct driver *drv,
- const char *name, void *platdata, int of_offset,
- struct udevice **devp);
+ const char *name, void *platdata, int of_offset,
+ struct udevice **devp);
int device_bind(struct udevice *parent, const struct driver *drv,
const char *name, void *platdata, ofnode node,
diff --git a/include/power/regulator.h b/include/power/regulator.h
index 4d58a436fea..7f278e8c7dc 100644
--- a/include/power/regulator.h
+++ b/include/power/regulator.h
@@ -48,7 +48,7 @@
* If regulator-name property is not provided, node name will be chosen.
*
* Regulator bind:
- * For each regulator device, the device_bind_offset() should be called with passed
+ * For each regulator device, the device_bind() should be called with passed
* device tree offset. This is required for this uclass's '.post_bind' method,
* which does the scan on the device node, for the 'regulator-name' constraint.
* If the parent is not a PMIC device, and the child is not bind by function:
--
2.29.2.454.gaff20da3a2-goog
More information about the U-Boot
mailing list