
Applied to rmobile branch, thanks!
2017-07-22 6:20 GMT+09:00 Marek Vasut marek.vasut@gmail.com:
Add support for enabling and disabling the clock using the clock framework based on the content of OF instead of doing it manually in the board file.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Joe Hershberger joe.hershberger@ni.com Cc: Nobuhiro Iwamatsu iwamatsu@nigauri.org
drivers/net/ravb.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c index ce0eacceb6..8db127ba06 100644 --- a/drivers/net/ravb.c +++ b/drivers/net/ravb.c @@ -10,6 +10,7 @@ */
#include <common.h> +#include <clk.h> #include <dm.h> #include <errno.h> #include <miiphy.h> @@ -120,6 +121,7 @@ struct ravb_priv { struct phy_device *phydev; struct mii_dev *bus; void __iomem *iobase;
struct clk clk;
};
static inline void ravb_flush_dcache(u32 addr, u32 len) @@ -432,27 +434,38 @@ int ravb_start(struct udevice *dev) struct ravb_priv *eth = dev_get_priv(dev); int ret;
ret = ravb_reset(dev);
ret = clk_enable(ð->clk); if (ret) return ret;
ret = ravb_reset(dev);
if (ret)
goto err;
ravb_base_desc_init(eth); ravb_tx_desc_init(eth); ravb_rx_desc_init(eth); ret = ravb_config(dev); if (ret)
return ret;
goto err; /* Setting the control will start the AVB-DMAC process. */ writel(CCC_OPC_OPERATION, eth->iobase + RAVB_REG_CCC); return 0;
+err:
clk_disable(ð->clk);
return ret;
}
static void ravb_stop(struct udevice *dev) {
struct ravb_priv *eth = dev_get_priv(dev);
ravb_reset(dev);
clk_disable(ð->clk);
}
static int ravb_probe(struct udevice *dev) @@ -466,6 +479,10 @@ static int ravb_probe(struct udevice *dev) iobase = map_physmem(pdata->iobase, 0x1000, MAP_NOCACHE); eth->iobase = iobase;
ret = clk_get_by_index(dev, 0, ð->clk);
if (ret < 0)
goto err_mdio_alloc;
mdiodev = mdio_alloc(); if (!mdiodev) { ret = -ENOMEM;
-- 2.11.0