target_linux_rockchip-6.x/patches-6.6/102-net-phy-realtek-RTL8211-add-LED-configuration-from-OF.patch
sbwml ee8ccdf1dd patches-6.6: fix patch for linux-6.6.19
Signed-off-by: sbwml <admin@cooluc.com>
2024-03-02 00:51:21 +08:00

50 lines
1.4 KiB
Diff

From edcc2833819f6750bf003b95a6ac856aced26276 Mon Sep 17 00:00:00 2001
From: AnYun <amadeus@jmu.edu.cn>
Date: Mon, 3 Apr 2023 23:26:04 +0800
Subject: [PATCH] net: phy: realtek: add LED configuration from OF for 8211f
---
drivers/net/phy/realtek.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/net/phy/realtek.c b/drivers/net/phy/realtek.c
index 337899c69..6d3b30473 100644
--- a/drivers/net/phy/realtek.c
+++ b/drivers/net/phy/realtek.c
@@ -28,6 +28,8 @@
#define RTL821x_EXT_PAGE_SELECT 0x1e
#define RTL821x_PAGE_SELECT 0x1f
+#define RTL8211F_LCR 0x10
+#define RTL8211F_EEELCR 0x11
#define RTL8211F_PHYCR1 0x18
#define RTL8211F_PHYCR2 0x19
#define RTL8211F_INSR 0x1d
@@ -347,6 +349,7 @@ static int rtl8211f_config_init(struct phy_device *phydev)
struct rtl821x_priv *priv = phydev->priv;
struct device *dev = &phydev->mdio.dev;
u16 val_txdly, val_rxdly;
+ u32 led_data;
int ret;
ret = phy_modify_paged_changed(phydev, 0xa43, RTL8211F_PHYCR1,
@@ -422,6 +425,15 @@ static int rtl8211f_config_init(struct phy_device *phydev)
return ret;
}
+ ret = of_property_read_u32(dev->of_node,
+ "realtek,led-data", &led_data);
+ if (!ret) {
+ phy_write(phydev, RTL821x_PAGE_SELECT, 0xd04);
+ phy_write(phydev, RTL8211F_LCR, led_data);
+ phy_write(phydev, RTL8211F_EEELCR, 0x0);
+ phy_write(phydev, RTL821x_PAGE_SELECT, 0x0);
+ }
+
return genphy_soft_reset(phydev);
}
--
2.42.0