aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ford <aford173@gmail.com>2021-12-06 10:29:26 -0600
committerMarek Vasut <marek.vasut+renesas@gmail.com>2021-12-13 00:37:28 +0100
commit182754f43a89aa19056472d2acfb2726f4ec3f09 (patch)
tree264a473efef9e64046c64f32c088c0bf3cdd25f3
parenta1c01b17c59ec03c678073e145fbd094c7606dc8 (diff)
downloadu-boot-182754f43a89aa19056472d2acfb2726f4ec3f09.zip
u-boot-182754f43a89aa19056472d2acfb2726f4ec3f09.tar.gz
u-boot-182754f43a89aa19056472d2acfb2726f4ec3f09.tar.bz2
net: ravb: Support multiple clocks
The RZ/G2 series uses an external clock as a reference to the AVB. If this clock is controlled by an external programmable clock, it must be requested by the consumer or it will not turn on. In order to do this, update the driver to use bulk enable and disable functions to enable clocks for boards with multiple clocks. Signed-off-by: Adam Ford <aford173@gmail.com>
-rw-r--r--drivers/net/ravb.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c
index 6953b72..1d1118c 100644
--- a/drivers/net/ravb.c
+++ b/drivers/net/ravb.c
@@ -129,7 +129,7 @@ struct ravb_priv {
struct phy_device *phydev;
struct mii_dev *bus;
void __iomem *iobase;
- struct clk clk;
+ struct clk_bulk clks;
struct gpio_desc reset_gpio;
};
@@ -485,7 +485,7 @@ 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);
+ ret = clk_get_bulk(dev, &eth->clks);
if (ret < 0)
goto err_mdio_alloc;
@@ -518,7 +518,7 @@ static int ravb_probe(struct udevice *dev)
eth->bus = miiphy_get_dev_by_name(dev->name);
/* Bring up PHY */
- ret = clk_enable(&eth->clk);
+ ret = clk_enable_bulk(&eth->clks);
if (ret)
goto err_mdio_register;
@@ -533,7 +533,7 @@ static int ravb_probe(struct udevice *dev)
return 0;
err_mdio_reset:
- clk_disable(&eth->clk);
+ clk_release_bulk(&eth->clks);
err_mdio_register:
mdio_free(mdiodev);
err_mdio_alloc:
@@ -545,7 +545,7 @@ static int ravb_remove(struct udevice *dev)
{
struct ravb_priv *eth = dev_get_priv(dev);
- clk_disable(&eth->clk);
+ clk_release_bulk(&eth->clks);
free(eth->phydev);
mdio_unregister(eth->bus);