mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 14:23:38 +00:00

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.80 Manually rebased: rockchip/patches-6.1/102-net-phy-realtek-RTL8211-add-LED-configuration-from-OF.patch Build system: x86/64
46 lines
1.1 KiB
Diff
46 lines
1.1 KiB
Diff
--- a/drivers/net/phy/realtek.c
|
|
+++ b/drivers/net/phy/realtek.c
|
|
@@ -686,6 +686,25 @@ static int rtl822x_config_aneg(struct ph
|
|
return __genphy_config_aneg(phydev, ret);
|
|
}
|
|
|
|
+static void rtl822x_update_interface(struct phy_device *phydev)
|
|
+{
|
|
+ /* Automatically switch SERDES interface between
|
|
+ * SGMII and 2500-BaseX according to speed.
|
|
+ */
|
|
+ switch (phydev->speed) {
|
|
+ case SPEED_2500:
|
|
+ phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
|
|
+ break;
|
|
+ case SPEED_1000:
|
|
+ case SPEED_100:
|
|
+ case SPEED_10:
|
|
+ phydev->interface = PHY_INTERFACE_MODE_SGMII;
|
|
+ break;
|
|
+ default:
|
|
+ break;
|
|
+ }
|
|
+}
|
|
+
|
|
static int rtl822x_read_status(struct phy_device *phydev)
|
|
{
|
|
int ret;
|
|
@@ -704,11 +723,14 @@ static int rtl822x_read_status(struct ph
|
|
phydev->lp_advertising, lpadv & RTL_LPADV_2500FULL);
|
|
}
|
|
|
|
- ret = genphy_read_status(phydev);
|
|
+ ret = rtlgen_read_status(phydev);
|
|
if (ret < 0)
|
|
return ret;
|
|
|
|
- return rtlgen_get_speed(phydev);
|
|
+ if (phydev->is_c45 && phydev->link)
|
|
+ rtl822x_update_interface(phydev);
|
|
+
|
|
+ return 0;
|
|
}
|
|
|
|
static bool rtlgen_supports_2_5gbps(struct phy_device *phydev)
|