[U-Boot] [PATCH 3/3] net: ravb: Add clock handling support

Marek Vasut marek.vasut at gmail.com
Fri Jul 21 21:20:35 UTC 2017


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 at gmail.com>
Cc: Joe Hershberger <joe.hershberger at ni.com>
Cc: Nobuhiro Iwamatsu <iwamatsu at 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(&eth->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(&eth->clk);
+	return ret;
 }
 
 static void ravb_stop(struct udevice *dev)
 {
+	struct ravb_priv *eth = dev_get_priv(dev);
+
 	ravb_reset(dev);
+	clk_disable(&eth->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, &eth->clk);
+	if (ret < 0)
+		goto err_mdio_alloc;
+
 	mdiodev = mdio_alloc();
 	if (!mdiodev) {
 		ret = -ENOMEM;
-- 
2.11.0



More information about the U-Boot mailing list