]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: phy: at803x: add RX and TX clock management for IPQ5018 PHY
authorGeorge Moussalem <george.moussalem@outlook.com>
Mon, 8 Jun 2026 05:09:19 +0000 (09:09 +0400)
committerJakub Kicinski <kuba@kernel.org>
Thu, 11 Jun 2026 22:32:13 +0000 (15:32 -0700)
Acquire and enable the RX and TX clocks for the IPQ5018 PHY.
These clocks are required for the PHY's datapath to function correctly.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://patch.msgid.link/20260608-ipq5018-gephy-clocks-v4-4-fb2ccd56894b@outlook.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/qcom/at803x.c

index 63726cf98cd423bf24d00bec9ecb6c0ea0d8bae5..ba4dc07752b60bb8c73cca9bab804074a34ec49c 100644 (file)
@@ -19,6 +19,7 @@
 #include <linux/regulator/consumer.h>
 #include <linux/of.h>
 #include <linux/phylink.h>
+#include <linux/clk.h>
 #include <linux/reset.h>
 #include <linux/phy_port.h>
 #include <dt-bindings/net/qca-ar803x.h>
@@ -1074,6 +1075,7 @@ static void ipq5018_link_change_notify(struct phy_device *phydev)
 static int ipq5018_probe(struct phy_device *phydev)
 {
        struct device *dev = &phydev->mdio.dev;
+       struct clk *rx_clk, *tx_clk;
        struct ipq5018_priv *priv;
        int ret;
 
@@ -1084,6 +1086,16 @@ static int ipq5018_probe(struct phy_device *phydev)
        priv->set_short_cable_dac = of_property_read_bool(dev->of_node,
                                                          "qcom,dac-preset-short-cable");
 
+       rx_clk = devm_clk_get_enabled(dev, "rx");
+       if (IS_ERR(rx_clk))
+               return dev_err_probe(dev, PTR_ERR(rx_clk),
+                                    "failed to get and enable RX clock\n");
+
+       tx_clk = devm_clk_get_enabled(dev, "tx");
+       if (IS_ERR(tx_clk))
+               return dev_err_probe(dev, PTR_ERR(tx_clk),
+                                    "failed to get and enable TX clock\n");
+
        priv->rst = devm_reset_control_array_get_exclusive(dev);
        if (IS_ERR(priv->rst))
                return dev_err_probe(dev, PTR_ERR(priv->rst),