]> git.sur5r.net Git - u-boot/commitdiff
net: ravb: Support reset GPIO both in mac and phy node
authorMarek Vasut <marek.vasut+renesas@gmail.com>
Mon, 18 Jun 2018 02:02:15 +0000 (04:02 +0200)
committerMarek Vasut <marek.vasut+renesas@gmail.com>
Tue, 19 Jun 2018 04:15:55 +0000 (06:15 +0200)
The recent DTs have the PHY reset GPIO in the PHY node rather than
the ethernet MAC node, support extracting the PHY reset GPIO info
from both the PHY node and ethernet MAC node.

Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Cc: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/ravb.c

index 0dd2792c60008aa223f364a34aa7005f022933a9..749562db960e59a8e7df3a0c8c7a6372b9b21e68 100644 (file)
@@ -466,6 +466,7 @@ static int ravb_probe(struct udevice *dev)
 {
        struct eth_pdata *pdata = dev_get_platdata(dev);
        struct ravb_priv *eth = dev_get_priv(dev);
+       struct ofnode_phandle_args phandle_args;
        struct mii_dev *mdiodev;
        void __iomem *iobase;
        int ret;
@@ -477,8 +478,16 @@ static int ravb_probe(struct udevice *dev)
        if (ret < 0)
                goto err_mdio_alloc;
 
-       gpio_request_by_name(dev, "reset-gpios", 0, &eth->reset_gpio,
-                            GPIOD_IS_OUT);
+       ret = dev_read_phandle_with_args(dev, "phy-handle", NULL, 0, 0, &phandle_args);
+       if (!ret) {
+               gpio_request_by_name_nodev(phandle_args.node, "reset-gpios", 0,
+                                          &eth->reset_gpio, GPIOD_IS_OUT);
+       }
+
+       if (!dm_gpio_is_valid(&eth->reset_gpio)) {
+               gpio_request_by_name(dev, "reset-gpios", 0, &eth->reset_gpio,
+                                    GPIOD_IS_OUT);
+       }
 
        mdiodev = mdio_alloc();
        if (!mdiodev) {