Skip to content

Commit 44b3769

Browse files
committed
Merge branch 'RTL8125-EEE'
Heiner Kallweit says: ==================== net: phy: realtek: support NBase-T MMD EEE registers on RTL8125 Add missing EEE-related constants, including the new MMD EEE registers for NBase-T / 802.3bz. Based on that emulate the new 802.3bz MMD EEE registers for 2.5Gbps EEE on RTL8125. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 607f625 + edde25e commit 44b3769

File tree

2 files changed

+53
-2
lines changed

2 files changed

+53
-2
lines changed

drivers/net/phy/realtek.c

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,47 @@ static int rtlgen_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
305305
return ret;
306306
}
307307

308+
static int rtl8125_read_mmd(struct phy_device *phydev, int devnum, u16 regnum)
309+
{
310+
int ret = rtlgen_read_mmd(phydev, devnum, regnum);
311+
312+
if (ret != -EOPNOTSUPP)
313+
return ret;
314+
315+
if (devnum == MDIO_MMD_PCS && regnum == MDIO_PCS_EEE_ABLE2) {
316+
rtl821x_write_page(phydev, 0xa6e);
317+
ret = __phy_read(phydev, 0x16);
318+
rtl821x_write_page(phydev, 0);
319+
} else if (devnum == MDIO_MMD_AN && regnum == MDIO_AN_EEE_ADV2) {
320+
rtl821x_write_page(phydev, 0xa6d);
321+
ret = __phy_read(phydev, 0x12);
322+
rtl821x_write_page(phydev, 0);
323+
} else if (devnum == MDIO_MMD_AN && regnum == MDIO_AN_EEE_LPABLE2) {
324+
rtl821x_write_page(phydev, 0xa6d);
325+
ret = __phy_read(phydev, 0x10);
326+
rtl821x_write_page(phydev, 0);
327+
}
328+
329+
return ret;
330+
}
331+
332+
static int rtl8125_write_mmd(struct phy_device *phydev, int devnum, u16 regnum,
333+
u16 val)
334+
{
335+
int ret = rtlgen_write_mmd(phydev, devnum, regnum, val);
336+
337+
if (ret != -EOPNOTSUPP)
338+
return ret;
339+
340+
if (devnum == MDIO_MMD_AN && regnum == MDIO_AN_EEE_ADV2) {
341+
rtl821x_write_page(phydev, 0xa6d);
342+
ret = __phy_write(phydev, 0x12, val);
343+
rtl821x_write_page(phydev, 0);
344+
}
345+
346+
return ret;
347+
}
348+
308349
static int rtl8125_get_features(struct phy_device *phydev)
309350
{
310351
int val;
@@ -473,8 +514,8 @@ static struct phy_driver realtek_drvs[] = {
473514
.resume = genphy_resume,
474515
.read_page = rtl821x_read_page,
475516
.write_page = rtl821x_write_page,
476-
.read_mmd = rtlgen_read_mmd,
477-
.write_mmd = rtlgen_write_mmd,
517+
.read_mmd = rtl8125_read_mmd,
518+
.write_mmd = rtl8125_write_mmd,
478519
}, {
479520
PHY_ID_MATCH_EXACT(0x001cc961),
480521
.name = "RTL8366RB Gigabit Ethernet",

include/uapi/linux/mdio.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,14 @@
4545
#define MDIO_AN_ADVERTISE 16 /* AN advertising (base page) */
4646
#define MDIO_AN_LPA 19 /* AN LP abilities (base page) */
4747
#define MDIO_PCS_EEE_ABLE 20 /* EEE Capability register */
48+
#define MDIO_PCS_EEE_ABLE2 21 /* EEE Capability register 2 */
4849
#define MDIO_PMA_NG_EXTABLE 21 /* 2.5G/5G PMA/PMD extended ability */
4950
#define MDIO_PCS_EEE_WK_ERR 22 /* EEE wake error counter */
5051
#define MDIO_PHYXS_LNSTAT 24 /* PHY XGXS lane state */
5152
#define MDIO_AN_EEE_ADV 60 /* EEE advertisement */
5253
#define MDIO_AN_EEE_LPABLE 61 /* EEE link partner ability */
54+
#define MDIO_AN_EEE_ADV2 62 /* EEE advertisement 2 */
55+
#define MDIO_AN_EEE_LPABLE2 63 /* EEE link partner ability 2 */
5356

5457
/* Media-dependent registers. */
5558
#define MDIO_PMA_10GBT_SWAPPOL 130 /* 10GBASE-T pair swap & polarity */
@@ -276,6 +279,13 @@
276279
#define MDIO_EEE_1000KX 0x0010 /* 1000KX EEE cap */
277280
#define MDIO_EEE_10GKX4 0x0020 /* 10G KX4 EEE cap */
278281
#define MDIO_EEE_10GKR 0x0040 /* 10G KR EEE cap */
282+
#define MDIO_EEE_40GR_FW 0x0100 /* 40G R fast wake */
283+
#define MDIO_EEE_40GR_DS 0x0200 /* 40G R deep sleep */
284+
#define MDIO_EEE_100GR_FW 0x1000 /* 100G R fast wake */
285+
#define MDIO_EEE_100GR_DS 0x2000 /* 100G R deep sleep */
286+
287+
#define MDIO_EEE_2_5GT 0x0001 /* 2.5GT EEE cap */
288+
#define MDIO_EEE_5GT 0x0002 /* 5GT EEE cap */
279289

280290
/* 2.5G/5G Extended abilities register. */
281291
#define MDIO_PMA_NG_EXTABLE_2_5GBT 0x0001 /* 2.5GBASET ability */

0 commit comments

Comments
 (0)