[U-Boot] [PATCH] net: ravb: Add PHY reset GPIO support

Add support for obtaining PHY reset GPIO from DT and toggling it before configuring the PHY to put the PHY into defined state.
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 | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c index 8db127ba06..dc7a52534e 100644 --- a/drivers/net/ravb.c +++ b/drivers/net/ravb.c @@ -18,6 +18,7 @@ #include <linux/mii.h> #include <wait_bit.h> #include <asm/io.h> +#include <asm/gpio.h>
/* Registers */ #define RAVB_REG_CCC 0x000 @@ -122,6 +123,7 @@ struct ravb_priv { struct mii_dev *bus; void __iomem *iobase; struct clk clk; + struct gpio_desc reset_gpio; };
static inline void ravb_flush_dcache(u32 addr, u32 len) @@ -302,6 +304,13 @@ static int ravb_phy_config(struct udevice *dev) struct phy_device *phydev; int mask = 0xffffffff, reg;
+ if (dm_gpio_is_valid(ð->reset_gpio)) { + dm_gpio_set_value(ð->reset_gpio, 1); + mdelay(20); + dm_gpio_set_value(ð->reset_gpio, 0); + mdelay(1); + } + phydev = phy_find_by_mask(eth->bus, mask, pdata->phy_interface); if (!phydev) return -ENODEV; @@ -483,6 +492,9 @@ static int ravb_probe(struct udevice *dev) if (ret < 0) goto err_mdio_alloc;
+ gpio_request_by_name_nodev(dev_ofnode(dev), "reset-gpios", 0, + ð->reset_gpio, GPIOD_IS_OUT); + mdiodev = mdio_alloc(); if (!mdiodev) { ret = -ENOMEM; @@ -516,6 +528,7 @@ static int ravb_remove(struct udevice *dev) free(eth->phydev); mdio_unregister(eth->bus); mdio_free(eth->bus); + dm_gpio_free(dev, ð->reset_gpio); unmap_physmem(eth->iobase, MAP_NOCACHE);
return 0;

On Fri, Sep 15, 2017 at 2:11 PM, Marek Vasut marek.vasut@gmail.com wrote:
Add support for obtaining PHY reset GPIO from DT and toggling it before configuring the PHY to put the PHY into defined state.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Nobuhiro Iwamatsu iwamatsu@nigauri.org Cc: Joe Hershberger joe.hershberger@ni.com
Acked-by: Joe Hershberger joe.hershberger@ni.com
participants (2)
-
Joe Hershberger
-
Marek Vasut