kernel: net: phy: realtek: fix C22-only mode on 2.5GE PHYs
Import 2 patches completing and fixing the RealTek's 2.5GE PHYs when being used in Clause-22 mode. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
parent
96ff31b94a
commit
6aaffddf27
@ -15,7 +15,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||
@@ -1626,6 +1626,9 @@ static int rtl822x_c45_get_features(stru
|
||||
@@ -1595,6 +1595,9 @@ static int rtl822x_c45_get_features(stru
|
||||
linkmode_set_bit(ETHTOOL_LINK_MODE_TP_BIT,
|
||||
phydev->supported);
|
||||
|
||||
@ -13,7 +13,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||
@@ -174,6 +174,7 @@
|
||||
@@ -173,6 +173,7 @@
|
||||
#define RTL8221B_PHYCR1 0xa430
|
||||
#define RTL8221B_PHYCR1_ALDPS_EN BIT(2)
|
||||
#define RTL8221B_PHYCR1_ALDPS_XTAL_OFF_EN BIT(12)
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
#define RTL8366RB_POWER_SAVE 0x15
|
||||
#define RTL8366RB_POWER_SAVE_ON BIT(12)
|
||||
@@ -1381,7 +1382,8 @@ static int rtl822x_init_phycr1(struct ph
|
||||
@@ -1350,7 +1351,8 @@ static int rtl822x_init_phycr1(struct ph
|
||||
|
||||
return phy_modify_mmd_changed(phydev, MDIO_MMD_VEND2, RTL8221B_PHYCR1,
|
||||
RTL8221B_PHYCR1_ALDPS_EN |
|
||||
@ -0,0 +1,22 @@
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Mon, 5 Jan 2026 17:55:02 +0000
|
||||
Subject: [PATCH] net: phy: realtek: rate-adapter in C22 mode
|
||||
|
||||
Use rate-adapter mode in case the PHY is connected to the host using
|
||||
Clause-22 MDIO.
|
||||
|
||||
This is necessary because phylink only handles dynamically switching the
|
||||
interface mode if the PHY is connected using Clause-45 MDIO.
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||
@@ -1379,7 +1379,7 @@ static int rtl822x_set_serdes_option_mod
|
||||
return 0;
|
||||
|
||||
/* determine SerDes option mode */
|
||||
- if (has_2500 && !has_sgmii) {
|
||||
+ if (has_2500 && (!has_sgmii || !phydev->is_c45)) {
|
||||
mode = RTL822X_VND1_SERDES_OPTION_MODE_2500BASEX;
|
||||
phydev->rate_matching = RATE_MATCH_PAUSE;
|
||||
} else {
|
||||
@ -0,0 +1,34 @@
|
||||
From 98a5d7606b7bc9136205969418385e4c9bf8ce56 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel Golle <daniel@makrotopia.org>
|
||||
Date: Mon, 5 Jan 2026 16:59:06 +0000
|
||||
Subject: [PATCH] net: phy: realtek: support interrupt also for C22 variants
|
||||
|
||||
Now that access to MDIO_MMD_VEND2 works transparently also in Clause-22
|
||||
mode, add interrupt support also for the C22 variants of the
|
||||
RTL8221B-VB-CG and RTL8221B-VM-CG.
|
||||
|
||||
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
---
|
||||
drivers/net/phy/realtek/realtek_main.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/drivers/net/phy/realtek/realtek_main.c
|
||||
+++ b/drivers/net/phy/realtek/realtek_main.c
|
||||
@@ -2347,6 +2347,8 @@ static struct phy_driver realtek_drvs[]
|
||||
}, {
|
||||
.match_phy_device = rtl8221b_vb_cg_c22_match_phy_device,
|
||||
.name = "RTL8221B-VB-CG 2.5Gbps PHY (C22)",
|
||||
+ .config_intr = rtl8221b_config_intr,
|
||||
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
||||
.soft_reset = genphy_soft_reset,
|
||||
.probe = rtl822x_probe,
|
||||
.get_features = rtl822x_get_features,
|
||||
@@ -2381,6 +2383,8 @@ static struct phy_driver realtek_drvs[]
|
||||
}, {
|
||||
.match_phy_device = rtl8221b_vm_cg_c22_match_phy_device,
|
||||
.name = "RTL8221B-VM-CG 2.5Gbps PHY (C22)",
|
||||
+ .config_intr = rtl8221b_config_intr,
|
||||
+ .handle_interrupt = rtl8221b_handle_interrupt,
|
||||
.soft_reset = genphy_soft_reset,
|
||||
.probe = rtl822x_probe,
|
||||
.get_features = rtl822x_get_features,
|
||||
Loading…
Reference in New Issue
Block a user