]> git.ipfire.org Git - thirdparty/openwrt.git/blob
5134d08b1cc40f6e9be9c896d037a5847eaff7ce
[thirdparty/openwrt.git] /
1 From 8af2136e77989a64fae0284bf76fd584e32edd3a Mon Sep 17 00:00:00 2001
2 From: Heiner Kallweit <hkallweit1@gmail.com>
3 Date: Fri, 14 Feb 2025 21:31:14 +0100
4 Subject: [PATCH] net: phy: realtek: add helper RTL822X_VND2_C22_REG
5
6 C22 register space is mapped to 0xa400 in MMD VEND2 register space.
7 Add a helper to access mapped C22 registers.
8
9 Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
10 Reviewed-by: Andrew Lunn <andrew@lunn.ch>
11 Link: https://patch.msgid.link/6344277b-c5c7-449b-ac89-d5425306ca76@gmail.com
12 Signed-off-by: Jakub Kicinski <kuba@kernel.org>
13 ---
14 drivers/net/phy/realtek/realtek_main.c | 9 ++++-----
15 1 file changed, 4 insertions(+), 5 deletions(-)
16
17 --- a/drivers/net/phy/realtek/realtek_main.c
18 +++ b/drivers/net/phy/realtek/realtek_main.c
19 @@ -79,9 +79,7 @@
20 /* RTL822X_VND2_XXXXX registers are only accessible when phydev->is_c45
21 * is set, they cannot be accessed by C45-over-C22.
22 */
23 -#define RTL822X_VND2_GBCR 0xa412
24 -
25 -#define RTL822X_VND2_GANLPAR 0xa414
26 +#define RTL822X_VND2_C22_REG(reg) (0xa400 + 2 * (reg))
27
28 #define RTL8366RB_POWER_SAVE 0x15
29 #define RTL8366RB_POWER_SAVE_ON BIT(12)
30 @@ -1015,7 +1013,8 @@ static int rtl822x_c45_config_aneg(struc
31 val = linkmode_adv_to_mii_ctrl1000_t(phydev->advertising);
32
33 /* Vendor register as C45 has no standardized support for 1000BaseT */
34 - ret = phy_modify_mmd_changed(phydev, MDIO_MMD_VEND2, RTL822X_VND2_GBCR,
35 + ret = phy_modify_mmd_changed(phydev, MDIO_MMD_VEND2,
36 + RTL822X_VND2_C22_REG(MII_CTRL1000),
37 ADVERTISE_1000FULL, val);
38 if (ret < 0)
39 return ret;
40 @@ -1032,7 +1031,7 @@ static int rtl822x_c45_read_status(struc
41 /* Vendor register as C45 has no standardized support for 1000BaseT */
42 if (phydev->autoneg == AUTONEG_ENABLE && genphy_c45_aneg_done(phydev)) {
43 val = phy_read_mmd(phydev, MDIO_MMD_VEND2,
44 - RTL822X_VND2_GANLPAR);
45 + RTL822X_VND2_C22_REG(MII_STAT1000));
46 if (val < 0)
47 return val;
48 } else {