summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wahren <wahrenst@gmx.net>2026-05-28 21:46:42 +0300
committerJakub Kicinski <kuba@kernel.org>2026-06-02 21:38:00 +0300
commit8a9f9bd2d070f55bc892e7cb6879ce25e6fe1d62 (patch)
tree3a1d4143d31e22076d802bbe268750a0f880e577
parentd790b7064387e5a38f6feec2cb386f1941332dc8 (diff)
downloadlinux-8a9f9bd2d070f55bc892e7cb6879ce25e6fe1d62.tar.xz
net: phy: dp83822: Add optional external PHY clock
In some cases, the PHY can use an external ref clock source instead of a crystal. Add an optional clock in the PHY node to make sure that the clock source is enabled, if specified, before probing. Signed-off-by: Stefan Wahren <wahrenst@gmx.net> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Link: https://patch.msgid.link/20260528184642.33424-3-wahrenst@gmx.net Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--drivers/net/phy/dp83822.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/phy/dp83822.c b/drivers/net/phy/dp83822.c
index d8c5b5cd1bc0..6fc86be9d593 100644
--- a/drivers/net/phy/dp83822.c
+++ b/drivers/net/phy/dp83822.c
@@ -4,6 +4,7 @@
* Copyright (C) 2017 Texas Instruments Inc.
*/
+#include <linux/clk.h>
#include <linux/ethtool.h>
#include <linux/etherdevice.h>
#include <linux/kernel.h>
@@ -986,11 +987,18 @@ static int dp8382x_probe(struct phy_device *phydev)
{
struct device *dev = &phydev->mdio.dev;
struct dp83822_private *dp83822;
+ struct clk *clk;
dp83822 = devm_kzalloc(dev, sizeof(*dp83822), GFP_KERNEL);
if (!dp83822)
return -ENOMEM;
+ clk = devm_clk_get_optional_enabled(dev, NULL);
+ if (IS_ERR(clk)) {
+ return dev_err_probe(dev, PTR_ERR(clk),
+ "Failed to request ref clock\n");
+ }
+
dp83822->tx_amplitude_100base_tx_index = -1;
dp83822->mac_termination_index = -1;
phydev->priv = dp83822;