[PATCH net] net: macb: Disable clocks once

Sean Anderson posted 1 patch 1 month, 1 week ago
There is a newer version of this series
drivers/net/ethernet/cadence/macb_main.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
[PATCH net] net: macb: Disable clocks once
Posted by Sean Anderson 1 month, 1 week ago
From: Neil Mandir <neil.mandir@seco.com>

When the driver is removed the clocks are twice: once by the driver and a
second time by runtime pm. Remove the redundant clock disabling. Disable
wakeup so all the clocks are disabled. Always suspend the device as we
always set it active in probe.

Fixes: d54f89af6cc4 ("net: macb: Add pm runtime support")
Signed-off-by: Neil Mandir <neil.mandir@seco.com>
Co-developed-by: Sean Anderson <sean.anderson@linux.dev>
Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
---

 drivers/net/ethernet/cadence/macb_main.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index ce95fad8cedd..8e9bfd0f040d 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -5403,14 +5403,11 @@ static void macb_remove(struct platform_device *pdev)
 		mdiobus_free(bp->mii_bus);
 
 		unregister_netdev(dev);
+		device_set_wakeup_enable(&bp->pdev->dev, 0);
 		cancel_work_sync(&bp->hresp_err_bh_work);
 		pm_runtime_disable(&pdev->dev);
 		pm_runtime_dont_use_autosuspend(&pdev->dev);
-		if (!pm_runtime_suspended(&pdev->dev)) {
-			macb_clks_disable(bp->pclk, bp->hclk, bp->tx_clk,
-					  bp->rx_clk, bp->tsu_clk);
-			pm_runtime_set_suspended(&pdev->dev);
-		}
+		pm_runtime_set_suspended(&pdev->dev);
 		phylink_destroy(bp->phylink);
 		free_netdev(dev);
 	}
-- 
2.35.1.1320.gc452695387.dirty
Re: [PATCH net] net: macb: Disable clocks once
Posted by Jakub Kicinski 1 month, 1 week ago
On Mon, 25 Aug 2025 12:59:25 -0400 Sean Anderson wrote:
> From: Neil Mandir <neil.mandir@seco.com>
> 
> When the driver is removed the clocks are twice: once by the driver and a
> second time by runtime pm. Remove the redundant clock disabling. Disable
> wakeup so all the clocks are disabled. Always suspend the device as we
> always set it active in probe.

needs a rebase:

$ git pw series apply 995325
Failed to apply patch:
Applying: net: macb: Disable clocks once
Using index info to reconstruct a base tree...
M	drivers/net/ethernet/cadence/macb_main.c
Falling back to patching base and 3-way merge...
Auto-merging drivers/net/ethernet/cadence/macb_main.c
CONFLICT (content): Merge conflict in drivers/net/ethernet/cadence/macb_main.c
Recorded preimage for 'drivers/net/ethernet/cadence/macb_main.c'
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 net: macb: Disable clocks once
-- 
pw-bot: cr
Re: [PATCH net] net: macb: Disable clocks once
Posted by Florian Fainelli 1 month, 1 week ago
On 8/25/25 09:59, Sean Anderson wrote:
> From: Neil Mandir <neil.mandir@seco.com>
> 
> When the driver is removed the clocks are twice: once by the driver and a
> second time by runtime pm. Remove the redundant clock disabling. Disable
> wakeup so all the clocks are disabled. Always suspend the device as we
> always set it active in probe.

There is a missing word in that first sentence which I assume is "disabled".

> 
> Fixes: d54f89af6cc4 ("net: macb: Add pm runtime support")
> Signed-off-by: Neil Mandir <neil.mandir@seco.com>
> Co-developed-by: Sean Anderson <sean.anderson@linux.dev>
> Signed-off-by: Sean Anderson <sean.anderson@linux.dev>
> ---
> 
>   drivers/net/ethernet/cadence/macb_main.c | 7 ++-----
>   1 file changed, 2 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
> index ce95fad8cedd..8e9bfd0f040d 100644
> --- a/drivers/net/ethernet/cadence/macb_main.c
> +++ b/drivers/net/ethernet/cadence/macb_main.c
> @@ -5403,14 +5403,11 @@ static void macb_remove(struct platform_device *pdev)
>   		mdiobus_free(bp->mii_bus);
>   
>   		unregister_netdev(dev);
> +		device_set_wakeup_enable(&bp->pdev->dev, 0);
>   		cancel_work_sync(&bp->hresp_err_bh_work);
>   		pm_runtime_disable(&pdev->dev);
>   		pm_runtime_dont_use_autosuspend(&pdev->dev);
> -		if (!pm_runtime_suspended(&pdev->dev)) {
> -			macb_clks_disable(bp->pclk, bp->hclk, bp->tx_clk,
> -					  bp->rx_clk, bp->tsu_clk);
> -			pm_runtime_set_suspended(&pdev->dev);
> -		}
> +		pm_runtime_set_suspended(&pdev->dev);
>   		phylink_destroy(bp->phylink);
>   		free_netdev(dev);
>   	}

-- 
Florian