Subject: Re: [PATCH v3 net] net: phy: micrel: Dynamically control external clock of KSZ PHY

From: Jakub Kicinski <[email-masked]>
Date: Tue, 10 Dec 2024 16:43:08 -0800

On Tue, 10 Dec 2024 02:45:57 +0000 Wei Fang wrote:
> The simple fix could only fix the commit 985329462723 ("net: phy: micrel: use
> devm_clk_get_optional_enabled for the rmii-ref clock"), because as the commit
> message said some clock suppliers need to be enabled so that the driver can get
> the correct clock rate.
> 
> But the problem is that the simple fix cannot fix the 99ac4cbcc2a5 ("net: phy:
> micrel: allow usage of generic ethernet-phy clock"). The change is as follows,
> this change just enables the clock when the PHY driver probes. There are no
> other operations on the clock, such as obtaining the clock rate. So you still think
> a simple fix is good enough for net tree?

I may be missing something but if you don't need to disable the generic
clock you can put the disable into the if () block for rmii-ref ?

diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c
index 3ef508840674..8bbd2018f2a6 100644
--- a/drivers/net/phy/micrel.c
+++ b/drivers/net/phy/micrel.c
@@ -2214,6 +2214,8 @@ static int kszphy_probe(struct phy_device *phydev)
                                   rate);
                        return -EINVAL;
                }
+
+               clk_disable_unprepare(clk);
        } else if (!clk) {
                /* unnamed clock from the generic ethernet-phy binding */
                clk = devm_clk_get_optional_enabled(&phydev->mdio.dev, NULL);