]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dm: Remove uses of device_bind_offset()
authorSimon Glass <sjg@chromium.org>
Sun, 29 Nov 2020 00:50:03 +0000 (17:50 -0700)
committerSimon Glass <sjg@chromium.org>
Sun, 13 Dec 2020 14:58:18 +0000 (07:58 -0700)
This function is not needed since the standard device_bind() can be used
instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
20 files changed:
arch/x86/cpu/apollolake/spl.c
drivers/clk/at91/compat.c
drivers/clk/clk.c
drivers/gpio/mt7621_gpio.c
drivers/gpio/s5p_gpio.c
drivers/gpio/sunxi_gpio.c
drivers/gpio/tegra186_gpio.c
drivers/gpio/tegra_gpio.c
drivers/net/mvpp2.c
drivers/pinctrl/broadcom/pinctrl-bcm283x.c
drivers/pinctrl/meson/pinctrl-meson.c
drivers/pinctrl/mscc/pinctrl-jr2.c
drivers/pinctrl/mscc/pinctrl-luton.c
drivers/pinctrl/mscc/pinctrl-ocelot.c
drivers/pinctrl/mscc/pinctrl-serval.c
drivers/pinctrl/mscc/pinctrl-servalt.c
drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
drivers/power/regulator/Kconfig
include/dm/device-internal.h
include/power/regulator.h

index 1f75e1894b7a0bf106887a737945d00797823964..089b37c59f8f3f6f17b1e74c707f026c7bb55260 100644 (file)
@@ -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)
 {
index 9563285674b33593f77567f92e9547d89eab9047..afd67b290d8a58715c3d741ea4c20d840c0f65ee 100644 (file)
@@ -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;
        }
index 1fa9bec6fea3ce9495bb3defa0bc52c02cabafa6..928ad13641a263bc0c0f28821edc9c39ca8a284a 100644 (file)
@@ -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);
index b64bc838a31ffc0fc5619ce309914a8aed2f44f4..8b41e34844ea69fd7fdae8d0a44082b6ed0750c6 100644 (file)
@@ -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;
 
index 4f9fedd61294fcf5522ec5746f9ac531acf9a14b..d6054c4a6ddfc0c56652b234886fa5fea639bc75 100644 (file)
@@ -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;
 
index f18f0c8152cf7e2917f0bfd89ba29c9b0de2605f..b6b0e9acbdba16516b72bcdad4779882e9a12a3d 100644 (file)
@@ -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));
index a518a395cabd380d200e8f62d6d73d8564c6ed01..bcc322c3b02a91b0d1b72ef835760a252debe093 100644 (file)
@@ -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));
index 0056171fc518c2d1aa14a913b5a65b3b40f57647..3877ee659af566c3d1f5f8770da4326ce6b90ca0 100644 (file)
@@ -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));
index df77a0d5e8ea04f79082e7ec871e0d7771d31d23..c1a78a2918ea7ab0bbfa76064e51da851b10dcfb 100644 (file)
@@ -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;
index 54928a607cb2fab13e2f6d83d69e26903d0a107c..5f5f3f3622fba0779648423e47d0e87775ca618f 100644 (file)
@@ -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
index 45a1ccf58d623f84ae6a5b8a1a8fd81243757b63..c35e4c42a09662dbdfa4797159cae98f54d4c056 100644 (file)
@@ -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;
index fc730b79d6adefd73d6f7b1c170a41d9e74bb2b2..6de7a416f0e16fb5d6105776e20d5fa1b333ce22 100644 (file)
@@ -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;
index 4fb17984abe63b564ee371bcf2d263437d12f224..0adeef9ec6722e365c0daacb6a8f254d60bfb354 100644 (file)
@@ -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;
 }
index 12ecad7a6e97ee5f4a54939612c251e50894725a..4df5eef1b101f0b1010f764b66c2a3d0bc4a00d6 100644 (file)
@@ -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;
 }
index 93b31d208330687f0ea14df189579289fa95c392..2cef5df3dc2edfb2950a97b011d10a9ca8e58708 100644 (file)
@@ -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;
index 9bbc7698a52d652ea9235a8860d7774c253067d6..37ce52ce7b8282afe269f827ae54273bb5ff981f 100644 (file)
@@ -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;
index 7bbeb413ba52a991ecbf430c098f4b188b6d41c4..17d7603ebdb04bc7a32497c2e4a501ae5c3ff5da 100644 (file)
@@ -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;
 }
index a6f78d96706efd18a35f1e5c6348bd53eebcd56d..d431102462a82ddb6c66c500e513fe402e3d014a 100644 (file)
@@ -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.
index 636210f73edf01cd3775d37ab3939e2f73f2af29..6f4f8510f7e6dcc5b114b78a57edc3f9ae94381d 100644 (file)
@@ -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,
index 4d58a436fea94894b43413528b8931ef3ce98109..7f278e8c7dca92471ecb33f45fe93e452bbdb667 100644 (file)
@@ -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: