Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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>

authored by

Heiner Kallweit and committed by
Jakub Kicinski
0c49baf0 8c40d99e

+16 -20
+16 -20
drivers/net/ethernet/realtek/r8169_phy_config.c
··· 50 50 phy_restore_page(phydev, oldpage, 0); 51 51 } 52 52 53 + static void rtl8125_phy_param(struct phy_device *phydev, u16 parm, 54 + u16 mask, u16 val) 55 + { 56 + phy_lock_mdio_bus(phydev); 57 + __phy_write_mmd(phydev, MDIO_MMD_VEND2, 0xb87c, parm); 58 + __phy_modify_mmd(phydev, MDIO_MMD_VEND2, 0xb87e, mask, val); 59 + phy_unlock_mdio_bus(phydev); 60 + } 61 + 53 62 struct phy_reg { 54 63 u16 reg; 55 64 u16 val; ··· 1013 1004 phy_write_paged(phydev, 0xac5, 0x16, 0x01ff); 1014 1005 phy_modify_paged(phydev, 0xac8, 0x15, 0x00f0, 0x0030); 1015 1006 1016 - phy_write(phydev, 0x1f, 0x0b87); 1017 - phy_write(phydev, 0x16, 0x80a2); 1018 - phy_write(phydev, 0x17, 0x0153); 1019 - phy_write(phydev, 0x16, 0x809c); 1020 - phy_write(phydev, 0x17, 0x0153); 1021 - phy_write(phydev, 0x1f, 0x0000); 1007 + rtl8125_phy_param(phydev, 0x80a2, 0xffff, 0x0153); 1008 + rtl8125_phy_param(phydev, 0x809c, 0xffff, 0x0153); 1022 1009 1023 1010 phy_write(phydev, 0x1f, 0x0a43); 1024 1011 phy_write(phydev, 0x13, 0x81B3); ··· 1066 1061 phy_modify_paged(phydev, 0xac4, 0x13, 0x00f0, 0x0090); 1067 1062 phy_modify_paged(phydev, 0xad3, 0x10, 0x0003, 0x0001); 1068 1063 1069 - phy_write(phydev, 0x1f, 0x0b87); 1070 - phy_write(phydev, 0x16, 0x80f5); 1071 - phy_write(phydev, 0x17, 0x760e); 1072 - phy_write(phydev, 0x16, 0x8107); 1073 - phy_write(phydev, 0x17, 0x360e); 1074 - phy_write(phydev, 0x16, 0x8551); 1075 - phy_modify(phydev, 0x17, 0xff00, 0x0800); 1076 - phy_write(phydev, 0x1f, 0x0000); 1064 + rtl8125_phy_param(phydev, 0x80f5, 0xffff, 0x760e); 1065 + rtl8125_phy_param(phydev, 0x8107, 0xffff, 0x360e); 1066 + rtl8125_phy_param(phydev, 0x8551, 0xff00, 0x0800); 1077 1067 1078 1068 phy_modify_paged(phydev, 0xbf0, 0x10, 0xe000, 0xa000); 1079 1069 phy_modify_paged(phydev, 0xbf4, 0x13, 0x0f00, 0x0300); ··· 1110 1110 1111 1111 r8168g_phy_param(phydev, 0x8010, 0x0800, 0x0000); 1112 1112 1113 - phy_write(phydev, 0x1f, 0x0b87); 1114 - phy_write(phydev, 0x16, 0x8088); 1115 - phy_modify(phydev, 0x17, 0xff00, 0x9000); 1116 - phy_write(phydev, 0x16, 0x808f); 1117 - phy_modify(phydev, 0x17, 0xff00, 0x9000); 1118 - phy_write(phydev, 0x1f, 0x0000); 1113 + rtl8125_phy_param(phydev, 0x8088, 0xff00, 0x9000); 1114 + rtl8125_phy_param(phydev, 0x808f, 0xff00, 0x9000); 1119 1115 1120 1116 r8168g_phy_param(phydev, 0x8174, 0x2000, 0x1800); 1121 1117