diff mbox series

[1/5] net: ravb: Support multiple clocks

Message ID 20211206162930.56301-2-aford173@gmail.com
State Accepted
Delegated to: Marek Vasut
Headers show
Series Resync Devices trees with Linux 5.16-rc3 and fix breakages | expand

Commit Message

Adam Ford Dec. 6, 2021, 4:29 p.m. UTC
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>
---
 drivers/net/ravb.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Ramon Fried Dec. 9, 2021, 12:24 a.m. UTC | #1
On Mon, Dec 6, 2021 at 6:29 PM Adam Ford <aford173@gmail.com> wrote:
>
> 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>
> ---
>  drivers/net/ravb.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c
> index 6953b7286a..d756dddb02 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);
> --
> 2.32.0
>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
diff mbox series

Patch

diff --git a/drivers/net/ravb.c b/drivers/net/ravb.c
index 6953b7286a..d756dddb02 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);