Thread (13 messages) 13 messages, 4 authors, 2024-09-16

Re: [PATCH net-next v3 7/8] net: ethernet: fs_enet: simplify clock handling with devm accessors

From: Christophe JAILLET <hidden>
Date: 2024-09-13 20:24:42
Also in: linuxppc-dev, lkml

Le 04/09/2024 à 19:18, Maxime Chevallier a écrit :
quoted hunk ↗ jump to hunk
devm_clock_get_enabled() can be used to simplify clock handling for the
PER register clock.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
---
  .../ethernet/freescale/fs_enet/fs_enet-main.c    | 16 ++++------------
  drivers/net/ethernet/freescale/fs_enet/fs_enet.h |  2 --
  2 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
index c96a6b9e1445..ec43b71c0eba 100644
--- a/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
+++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet-main.c
@@ -900,14 +900,9 @@ static int fs_enet_probe(struct platform_device *ofdev)
  	 * but require enable to succeed when a clock was specified/found,
  	 * keep a reference to the clock upon successful acquisition
  	 */
-	clk = devm_clk_get(&ofdev->dev, "per");
-	if (!IS_ERR(clk)) {
-		ret = clk_prepare_enable(clk);
-		if (ret)
-			goto out_deregister_fixed_link;
-
-		fpi->clk_per = clk;
-	}
+	clk = devm_clk_get_enabled(&ofdev->dev, "per");
+	if (IS_ERR(clk))
+		goto out_deregister_fixed_link;
Hi,

I don't know if this can lead to the same issue, but a similar change 
broke a use case in another driver. See the discussion at[1].

It ended to using devm_clk_get_optional_enabled() to keep the same 
behavior as before.

CJ

[1]: 
https://lore.kernel.org/all/20240912104630.1868285-2-ardb+git@google.com/ (local)
quoted hunk ↗ jump to hunk
  
  	privsize = sizeof(*fep) +
  		   sizeof(struct sk_buff **) *
@@ -917,7 +912,7 @@ static int fs_enet_probe(struct platform_device *ofdev)
  	ndev = alloc_etherdev(privsize);
  	if (!ndev) {
  		ret = -ENOMEM;
-		goto out_put;
+		goto out_deregister_fixed_link;
  	}
  
  	SET_NETDEV_DEV(ndev, &ofdev->dev);
@@ -979,8 +974,6 @@ static int fs_enet_probe(struct platform_device *ofdev)
  	fep->ops->cleanup_data(ndev);
  out_free_dev:
  	free_netdev(ndev);
-out_put:
-	clk_disable_unprepare(fpi->clk_per);
  out_deregister_fixed_link:
  	of_node_put(fpi->phy_node);
  	if (of_phy_is_fixed_link(ofdev->dev.of_node))
@@ -1001,7 +994,6 @@ static void fs_enet_remove(struct platform_device *ofdev)
  	fep->ops->cleanup_data(ndev);
  	dev_set_drvdata(fep->dev, NULL);
  	of_node_put(fep->fpi->phy_node);
-	clk_disable_unprepare(fep->fpi->clk_per);
  	if (of_phy_is_fixed_link(ofdev->dev.of_node))
  		of_phy_deregister_fixed_link(ofdev->dev.of_node);
  	free_netdev(ndev);
diff --git a/drivers/net/ethernet/freescale/fs_enet/fs_enet.h b/drivers/net/ethernet/freescale/fs_enet/fs_enet.h
index ee49749a3202..6ebb1b4404c7 100644
--- a/drivers/net/ethernet/freescale/fs_enet/fs_enet.h
+++ b/drivers/net/ethernet/freescale/fs_enet/fs_enet.h
@@ -119,8 +119,6 @@ struct fs_platform_info {
  	int napi_weight;	/* NAPI weight			*/
  
  	int use_rmii;		/* use RMII mode		*/
-
-	struct clk *clk_per;	/* 'per' clock for register access */
  };
  
  struct fs_enet_private {
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help