Commit 72ea418b authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'r8169-align-rtl8125-rtl8126-phy-config-with-vendor-driver'

Heiner Kallweit says:

====================
r8169: align RTL8125/RTL8126 PHY config with vendor driver

This series aligns the RTL8125/RTL8126 PHY config with vendor drivers
r8125 and r8126 respectively.
====================

Link: https://patch.msgid.link/7a849c7c-50ff-4a9b-9a1c-a963b0561c79@gmail.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents cbf49bed a3d8520e
Loading
Loading
Loading
Loading
+18 −7
Original line number Diff line number Diff line
@@ -89,19 +89,25 @@ static void rtl8168h_config_eee_phy(struct phy_device *phydev)
	phy_modify_paged(phydev, 0xa42, 0x14, 0x0000, 0x0080);
}

static void rtl8125a_config_eee_phy(struct phy_device *phydev)
static void rtl8125_common_config_eee_phy(struct phy_device *phydev)
{
	rtl8168h_config_eee_phy(phydev);
	phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
	phy_modify_paged(phydev, 0xa42, 0x14, 0x0080, 0x0000);
	phy_modify_paged(phydev, 0xa4a, 0x11, 0x0200, 0x0000);
}

static void rtl8125a_config_eee_phy(struct phy_device *phydev)
{
	rtl8168g_config_eee_phy(phydev);
	/* disable EEE at 2.5Gbps */
	phy_modify_paged(phydev, 0xa6d, 0x12, 0x0001, 0x0000);
	phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
	rtl8125_common_config_eee_phy(phydev);
}

static void rtl8125b_config_eee_phy(struct phy_device *phydev)
{
	phy_modify_paged(phydev, 0xa6d, 0x14, 0x0010, 0x0000);
	phy_modify_paged(phydev, 0xa42, 0x14, 0x0080, 0x0000);
	phy_modify_paged(phydev, 0xa4a, 0x11, 0x0200, 0x0000);
	rtl8168g_config_eee_phy(phydev);
	rtl8125_common_config_eee_phy(phydev);
}

static void rtl8169s_hw_phy_config(struct rtl8169_private *tp,
@@ -1067,8 +1073,8 @@ static void rtl8125b_hw_phy_config(struct rtl8169_private *tp,
				   struct phy_device *phydev)
{
	r8169_apply_firmware(tp);
	rtl8168g_enable_gphy_10m(phydev);

	phy_modify_paged(phydev, 0xa44, 0x11, 0x0000, 0x0800);
	phy_modify_paged(phydev, 0xac4, 0x13, 0x00f0, 0x0090);
	phy_modify_paged(phydev, 0xad3, 0x10, 0x0003, 0x0001);

@@ -1107,6 +1113,7 @@ static void rtl8125d_hw_phy_config(struct rtl8169_private *tp,
				   struct phy_device *phydev)
{
	r8169_apply_firmware(tp);
	rtl8168g_enable_gphy_10m(phydev);
	rtl8125_legacy_force_mode(phydev);
	rtl8168g_disable_aldps(phydev);
	rtl8125b_config_eee_phy(phydev);
@@ -1116,6 +1123,10 @@ static void rtl8126a_hw_phy_config(struct rtl8169_private *tp,
				   struct phy_device *phydev)
{
	r8169_apply_firmware(tp);
	rtl8168g_enable_gphy_10m(phydev);
	rtl8125_legacy_force_mode(phydev);
	rtl8168g_disable_aldps(phydev);
	rtl8125_common_config_eee_phy(phydev);
}

void r8169_hw_phy_config(struct rtl8169_private *tp, struct phy_device *phydev,