From: George Moussalem Date: Mon, 8 Jun 2026 05:09:19 +0000 (+0400) Subject: net: phy: at803x: add RX and TX clock management for IPQ5018 PHY X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf6077e4903ffed2291f5f3cb9d61b29abe456c4;p=thirdparty%2Flinux.git net: phy: at803x: add RX and TX clock management for IPQ5018 PHY 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 Link: https://patch.msgid.link/20260608-ipq5018-gephy-clocks-v4-4-fb2ccd56894b@outlook.com Signed-off-by: Jakub Kicinski --- diff --git a/drivers/net/phy/qcom/at803x.c b/drivers/net/phy/qcom/at803x.c index 63726cf98cd42..ba4dc07752b60 100644 --- a/drivers/net/phy/qcom/at803x.c +++ b/drivers/net/phy/qcom/at803x.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -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),