]> git.itanic.dy.fi Git - linux-stable/commitdiff
net: dpaa: Fix <1G ethernet on LS1046ARDB
authorSean Anderson <sean.anderson@seco.com>
Thu, 18 Aug 2022 16:40:29 +0000 (12:40 -0400)
committerJakub Kicinski <kuba@kernel.org>
Fri, 19 Aug 2022 23:21:08 +0000 (16:21 -0700)
As discussed in commit 73a21fa817f0 ("dpaa_eth: support all modes with
rate adapting PHYs"), we must add a workaround for Aquantia phys with
in-tree support in order to keep 1G support working. Update this
workaround for the AQR113C phy found on revision C LS1046ARDB boards.

Fixes: 12cf1b89a668 ("net: phy: Add support for AQR113C EPHY")
Signed-off-by: Sean Anderson <sean.anderson@seco.com>
Acked-by: Camelia Groza <camelia.groza@nxp.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20220818164029.2063293-1-sean.anderson@seco.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/freescale/dpaa/dpaa_eth.c

index 45634579adb67814dc3c228f778cf2fda2028695..a770bab4d1ed2c6b19c37913e0c491abc6bd6382 100644 (file)
@@ -2886,6 +2886,7 @@ static void dpaa_adjust_link(struct net_device *net_dev)
 
 /* The Aquantia PHYs are capable of performing rate adaptation */
 #define PHY_VEND_AQUANTIA      0x03a1b400
+#define PHY_VEND_AQUANTIA2     0x31c31c00
 
 static int dpaa_phy_init(struct net_device *net_dev)
 {
@@ -2893,6 +2894,7 @@ static int dpaa_phy_init(struct net_device *net_dev)
        struct mac_device *mac_dev;
        struct phy_device *phy_dev;
        struct dpaa_priv *priv;
+       u32 phy_vendor;
 
        priv = netdev_priv(net_dev);
        mac_dev = priv->mac_dev;
@@ -2905,9 +2907,11 @@ static int dpaa_phy_init(struct net_device *net_dev)
                return -ENODEV;
        }
 
+       phy_vendor = phy_dev->drv->phy_id & GENMASK(31, 10);
        /* Unless the PHY is capable of rate adaptation */
        if (mac_dev->phy_if != PHY_INTERFACE_MODE_XGMII ||
-           ((phy_dev->drv->phy_id & GENMASK(31, 10)) != PHY_VEND_AQUANTIA)) {
+           (phy_vendor != PHY_VEND_AQUANTIA &&
+            phy_vendor != PHY_VEND_AQUANTIA2)) {
                /* remove any features not supported by the controller */
                ethtool_convert_legacy_u32_to_link_mode(mask,
                                                        mac_dev->if_support);