aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
diff options
context:
space:
mode:
authorRobert Marko <robert.marko@sartura.hr>2020-03-03 20:19:30 +0100
committerPetr Štetiar <ynezz@true.cz>2020-03-16 22:21:45 +0100
commit2b7344055bce2ac42c74e5eaa914c4adf780cf84 (patch)
treeb8fed94fddb0c9a89902794df9dadc21ec9a4b58 /target/linux
parentf521ef5ff3110018fb8b4e6827e2a5d7f32c41f0 (diff)
downloadupstream-2b7344055bce2ac42c74e5eaa914c4adf780cf84.tar.gz
upstream-2b7344055bce2ac42c74e5eaa914c4adf780cf84.tar.bz2
upstream-2b7344055bce2ac42c74e5eaa914c4adf780cf84.zip
ipq40xx: 5.4: fix networking PHY driver
In 5.4 kernel old u32 array way of setting network features was dropped and linkmode is now the only way. So lets migrate the PHY driver to support linkmode. Also, now in order for gigabit to work, PHY driver needs to advertise PHY_GBIT_FEATURES instead of PHY_BASIC_FEATURES Signed-off-by: Robert Marko <robert.marko@sartura.hr>
Diffstat (limited to 'target/linux')
-rw-r--r--target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch6
-rw-r--r--target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch11
2 files changed, 3 insertions, 14 deletions
diff --git a/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch b/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch
index 6df447fcd5..083de038a2 100644
--- a/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch
+++ b/target/linux/ipq40xx/patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch
@@ -1837,8 +1837,8 @@
+ if (phydev->mdio.addr == 0)
+ ar40xx_priv->phy = phydev;
+
-+ phydev->supported |= SUPPORTED_1000baseT_Full;
-+ phydev->advertising |= ADVERTISED_1000baseT_Full;
++ linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, phydev->supported);
++ linkmode_set_bit(ETHTOOL_LINK_MODE_1000baseT_Full_BIT, phydev->advertising);
+ return 0;
+}
+
@@ -1877,7 +1877,7 @@
+ .phy_id = 0x004d0000,
+ .name = "QCA Malibu",
+ .phy_id_mask = 0xffff0000,
-+ .features = PHY_BASIC_FEATURES,
++ .features = PHY_GBIT_FEATURES,
+ .probe = ar40xx_phy_probe,
+ .remove = ar40xx_phy_remove,
+ .config_init = ar40xx_phy_config_init,
diff --git a/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch b/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch
index cda05bfb9f..19474bff0d 100644
--- a/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch
+++ b/target/linux/ipq40xx/patches-5.4/706-ar40xx-abort-probe-on-missig-phy.patch
@@ -1,16 +1,5 @@
--- a/drivers/net/phy/ar40xx.c
+++ b/drivers/net/phy/ar40xx.c
-@@ -1808,8 +1808,8 @@ ar40xx_phy_probe(struct phy_device *phyd
- if (phydev->mdio.addr == 0)
- ar40xx_priv->phy = phydev;
-
-- phydev->supported |= SUPPORTED_1000baseT_Full;
-- phydev->advertising |= ADVERTISED_1000baseT_Full;
-+ phy_set_max_speed(phydev, SPEED_1000);
-+ linkmode_copy(phydev->advertising, phydev->supported);
- return 0;
- }
-
@@ -2021,6 +2021,12 @@ static int ar40xx_probe(struct platform_
/* register switch */
swdev = &priv->dev;