This is an automatically generated commit which aids following Kernel patch history, as git will see the move and copy as a rename thus defeating the purpose. For the original discussion see: https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de> Link: https://github.com/openwrt/openwrt/pull/24031 Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
51 lines
1.8 KiB
Diff
51 lines
1.8 KiB
Diff
From cf6077e4903ffed2291f5f3cb9d61b29abe456c4 Mon Sep 17 00:00:00 2001
|
|
From: George Moussalem <george.moussalem@outlook.com>
|
|
Date: Mon, 8 Jun 2026 09:09:19 +0400
|
|
Subject: [PATCH] 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 <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 | 12 ++++++++++++
|
|
1 file changed, 12 insertions(+)
|
|
|
|
--- a/drivers/net/phy/qcom/at803x.c
|
|
+++ b/drivers/net/phy/qcom/at803x.c
|
|
@@ -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/sfp.h>
|
|
#include <dt-bindings/net/qca-ar803x.h>
|
|
@@ -1089,6 +1090,7 @@ static void ipq5018_link_change_notify(s
|
|
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;
|
|
|
|
@@ -1099,6 +1101,16 @@ static int ipq5018_probe(struct phy_devi
|
|
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),
|