From: Simon Glass Date: Sun, 29 Nov 2020 00:50:03 +0000 (-0700) Subject: dm: Remove uses of device_bind_offset() X-Git-Url: http://git.dujemihanovic.xyz/%22http:/www.sics.se/static/git-logo.png?a=commitdiff_plain;h=a2703ce10cfcbe6a82ec8ed9ec10df2aeea08e64;p=u-boot.git dm: Remove uses of device_bind_offset() This function is not needed since the standard device_bind() can be used instead. Signed-off-by: Simon Glass --- diff --git a/arch/x86/cpu/apollolake/spl.c b/arch/x86/cpu/apollolake/spl.c index 1f75e1894b..089b37c59f 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 9563285674..afd67b290d 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 1fa9bec6fe..928ad13641 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 b64bc838a3..8b41e34844 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 4f9fedd612..d6054c4a6d 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 f18f0c8152..b6b0e9acbd 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 a518a395ca..bcc322c3b0 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 0056171fc5..3877ee659a 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 df77a0d5e8..c1a78a2918 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 54928a607c..5f5f3f3622 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 45a1ccf58d..c35e4c42a0 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 fc730b79d6..6de7a416f0 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 4fb17984ab..0adeef9ec6 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 12ecad7a6e..4df5eef1b1 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 93b31d2083..2cef5df3dc 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 9bbc7698a5..37ce52ce7b 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 7bbeb413ba..17d7603ebd 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 a6f78d9670..d431102462 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 636210f73e..6f4f8510f7 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 4d58a436fe..7f278e8c7d 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: