[OpenWrt-Devel] [PATCH 1/2] ipq40xx: 5.4: fix networking PHY driver

Robert Marko robert.marko at sartura.hr
Tue Mar 3 14:19:30 EST 2020


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 at sartura.hr>
---
 .../patches-5.4/705-net-add-qualcomm-ar40xx-phy.patch |  6 +++---
 .../706-ar40xx-abort-probe-on-missig-phy.patch        | 11 -----------
 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;
-- 
2.24.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list