mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-06-12 17:12:04 +08:00
83 lines
3.0 KiB
Diff
83 lines
3.0 KiB
Diff
From 0c49baf099ba2147a6ff3bbdc3197c6ddbee5469 Mon Sep 17 00:00:00 2001
|
|
From: Heiner Kallweit <hkallweit1@gmail.com>
|
|
Date: Wed, 9 Apr 2025 21:14:47 +0200
|
|
Subject: [PATCH] r8169: add helper rtl8125_phy_param
|
|
|
|
The integrated PHY's of RTL8125/8126 have an own mechanism to access
|
|
PHY parameters, similar to what r8168g_phy_param does on earlier PHY
|
|
versions. Add helper rtl8125_phy_param to simplify the code.
|
|
|
|
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
|
|
Link: https://patch.msgid.link/847b7356-12d6-441b-ade9-4b6e1539b84a@gmail.com
|
|
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
|
---
|
|
.../net/ethernet/realtek/r8169_phy_config.c | 36 +++++++++----------
|
|
1 file changed, 16 insertions(+), 20 deletions(-)
|
|
|
|
--- a/drivers/net/ethernet/realtek/r8169_phy_config.c
|
|
+++ b/drivers/net/ethernet/realtek/r8169_phy_config.c
|
|
@@ -50,6 +50,15 @@ static void r8168g_phy_param(struct phy_
|
|
phy_restore_page(phydev, oldpage, 0);
|
|
}
|
|
|
|
+static void rtl8125_phy_param(struct phy_device *phydev, u16 parm,
|
|
+ u16 mask, u16 val)
|
|
+{
|
|
+ phy_lock_mdio_bus(phydev);
|
|
+ __phy_write_mmd(phydev, MDIO_MMD_VEND2, 0xb87c, parm);
|
|
+ __phy_modify_mmd(phydev, MDIO_MMD_VEND2, 0xb87e, mask, val);
|
|
+ phy_unlock_mdio_bus(phydev);
|
|
+}
|
|
+
|
|
struct phy_reg {
|
|
u16 reg;
|
|
u16 val;
|
|
@@ -1004,12 +1013,8 @@ static void rtl8125a_2_hw_phy_config(str
|
|
phy_write_paged(phydev, 0xac5, 0x16, 0x01ff);
|
|
phy_modify_paged(phydev, 0xac8, 0x15, 0x00f0, 0x0030);
|
|
|
|
- phy_write(phydev, 0x1f, 0x0b87);
|
|
- phy_write(phydev, 0x16, 0x80a2);
|
|
- phy_write(phydev, 0x17, 0x0153);
|
|
- phy_write(phydev, 0x16, 0x809c);
|
|
- phy_write(phydev, 0x17, 0x0153);
|
|
- phy_write(phydev, 0x1f, 0x0000);
|
|
+ rtl8125_phy_param(phydev, 0x80a2, 0xffff, 0x0153);
|
|
+ rtl8125_phy_param(phydev, 0x809c, 0xffff, 0x0153);
|
|
|
|
phy_write(phydev, 0x1f, 0x0a43);
|
|
phy_write(phydev, 0x13, 0x81B3);
|
|
@@ -1061,14 +1066,9 @@ static void rtl8125b_hw_phy_config(struc
|
|
phy_modify_paged(phydev, 0xac4, 0x13, 0x00f0, 0x0090);
|
|
phy_modify_paged(phydev, 0xad3, 0x10, 0x0003, 0x0001);
|
|
|
|
- phy_write(phydev, 0x1f, 0x0b87);
|
|
- phy_write(phydev, 0x16, 0x80f5);
|
|
- phy_write(phydev, 0x17, 0x760e);
|
|
- phy_write(phydev, 0x16, 0x8107);
|
|
- phy_write(phydev, 0x17, 0x360e);
|
|
- phy_write(phydev, 0x16, 0x8551);
|
|
- phy_modify(phydev, 0x17, 0xff00, 0x0800);
|
|
- phy_write(phydev, 0x1f, 0x0000);
|
|
+ rtl8125_phy_param(phydev, 0x80f5, 0xffff, 0x760e);
|
|
+ rtl8125_phy_param(phydev, 0x8107, 0xffff, 0x360e);
|
|
+ rtl8125_phy_param(phydev, 0x8551, 0xff00, 0x0800);
|
|
|
|
phy_modify_paged(phydev, 0xbf0, 0x10, 0xe000, 0xa000);
|
|
phy_modify_paged(phydev, 0xbf4, 0x13, 0x0f00, 0x0300);
|
|
@@ -1110,12 +1110,8 @@ static void rtl8125bp_hw_phy_config(stru
|
|
|
|
r8168g_phy_param(phydev, 0x8010, 0x0800, 0x0000);
|
|
|
|
- phy_write(phydev, 0x1f, 0x0b87);
|
|
- phy_write(phydev, 0x16, 0x8088);
|
|
- phy_modify(phydev, 0x17, 0xff00, 0x9000);
|
|
- phy_write(phydev, 0x16, 0x808f);
|
|
- phy_modify(phydev, 0x17, 0xff00, 0x9000);
|
|
- phy_write(phydev, 0x1f, 0x0000);
|
|
+ rtl8125_phy_param(phydev, 0x8088, 0xff00, 0x9000);
|
|
+ rtl8125_phy_param(phydev, 0x808f, 0xff00, 0x9000);
|
|
|
|
r8168g_phy_param(phydev, 0x8174, 0x2000, 0x1800);
|
|
|