Commit 9dbdfd4a authored by Sean Anderson's avatar Sean Anderson Committed by Jakub Kicinski

net: dpaa: Fix <1G ethernet on LS1046ARDB

As discussed in commit 73a21fa8 ("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: 12cf1b89 ("net: phy: Add support for AQR113C EPHY")
Signed-off-by: default avatarSean Anderson <sean.anderson@seco.com>
Acked-by: default avatarCamelia Groza <camelia.groza@nxp.com>
Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Link: https://lore.kernel.org/r/20220818164029.2063293-1-sean.anderson@seco.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4c2d0b03
...@@ -2886,6 +2886,7 @@ static void dpaa_adjust_link(struct net_device *net_dev) ...@@ -2886,6 +2886,7 @@ static void dpaa_adjust_link(struct net_device *net_dev)
/* The Aquantia PHYs are capable of performing rate adaptation */ /* The Aquantia PHYs are capable of performing rate adaptation */
#define PHY_VEND_AQUANTIA 0x03a1b400 #define PHY_VEND_AQUANTIA 0x03a1b400
#define PHY_VEND_AQUANTIA2 0x31c31c00
static int dpaa_phy_init(struct net_device *net_dev) static int dpaa_phy_init(struct net_device *net_dev)
{ {
...@@ -2893,6 +2894,7 @@ 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 mac_device *mac_dev;
struct phy_device *phy_dev; struct phy_device *phy_dev;
struct dpaa_priv *priv; struct dpaa_priv *priv;
u32 phy_vendor;
priv = netdev_priv(net_dev); priv = netdev_priv(net_dev);
mac_dev = priv->mac_dev; mac_dev = priv->mac_dev;
...@@ -2905,9 +2907,11 @@ static int dpaa_phy_init(struct net_device *net_dev) ...@@ -2905,9 +2907,11 @@ static int dpaa_phy_init(struct net_device *net_dev)
return -ENODEV; return -ENODEV;
} }
phy_vendor = phy_dev->drv->phy_id & GENMASK(31, 10);
/* Unless the PHY is capable of rate adaptation */ /* Unless the PHY is capable of rate adaptation */
if (mac_dev->phy_if != PHY_INTERFACE_MODE_XGMII || 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 */ /* remove any features not supported by the controller */
ethtool_convert_legacy_u32_to_link_mode(mask, ethtool_convert_legacy_u32_to_link_mode(mask,
mac_dev->if_support); mac_dev->if_support);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment