OSDN Git Service

net: phy: add qca8081 get_features
authorLuo Jie <luoj@codeaurora.org>
Sun, 24 Oct 2021 08:27:31 +0000 (16:27 +0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Oct 2021 13:04:18 +0000 (14:04 +0100)
Reuse the at803x phy driver get_features excepting
adding 2500M capability.

Signed-off-by: Luo Jie <luoj@codeaurora.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/at803x.c

index cecf78e..c4b7ac0 100644 (file)
@@ -744,6 +744,15 @@ static int at803x_get_features(struct phy_device *phydev)
        if (err)
                return err;
 
+       if (phydev->drv->phy_id == QCA8081_PHY_ID) {
+               err = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_NG_EXTABLE);
+               if (err < 0)
+                       return err;
+
+               linkmode_mod_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT, phydev->supported,
+                               err & MDIO_PMA_NG_EXTABLE_2_5GBT);
+       }
+
        if (phydev->drv->phy_id != ATH8031_PHY_ID)
                return 0;
 
@@ -1653,6 +1662,7 @@ static struct phy_driver at803x_driver[] = {
        .set_tunable            = at803x_set_tunable,
        .set_wol                = at803x_set_wol,
        .get_wol                = at803x_get_wol,
+       .get_features           = at803x_get_features,
        .suspend                = genphy_suspend,
        .resume                 = genphy_resume,
        .read_status            = qca808x_read_status,