1 From 8b8bc13d89a7d23d14b0e041c73f037c9db997b1 Mon Sep 17 00:00:00 2001
2 From: Luo Jie <quic_luoj@quicinc.com>
3 Date: Sun, 16 Jul 2023 16:49:19 +0800
4 Subject: [PATCH 1/6] net: phy: at803x: support qca8081
5 genphy_c45_pma_read_abilities
7 qca8081 PHY supports to use genphy_c45_pma_read_abilities for
8 getting the PHY features supported except for the autoneg ability
10 but autoneg ability exists in MDIO_STAT1 instead of MMD7.1, add it
11 manually after calling genphy_c45_pma_read_abilities.
13 Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
14 Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
15 Signed-off-by: David S. Miller <davem@davemloft.net>
17 drivers/net/phy/at803x.c | 28 ++++++++++++++++++----------
18 1 file changed, 18 insertions(+), 10 deletions(-)
20 --- a/drivers/net/phy/at803x.c
21 +++ b/drivers/net/phy/at803x.c
22 @@ -902,15 +902,6 @@ static int at803x_get_features(struct ph
26 - if (phydev->drv->phy_id == QCA8081_PHY_ID) {
27 - err = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_PMA_NG_EXTABLE);
31 - linkmode_mod_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT, phydev->supported,
32 - err & MDIO_PMA_NG_EXTABLE_2_5GBT);
35 if (phydev->drv->phy_id != ATH8031_PHY_ID)
38 @@ -1996,6 +1987,23 @@ static int qca808x_cable_test_get_status
42 +static int qca808x_get_features(struct phy_device *phydev)
46 + ret = genphy_c45_pma_read_abilities(phydev);
50 + /* The autoneg ability is not existed in bit3 of MMD7.1,
51 + * but it is supported by qca808x PHY, so we add it here
54 + linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, phydev->supported);
59 static struct phy_driver at803x_driver[] = {
61 /* Qualcomm Atheros AR8035 */
62 @@ -2163,7 +2171,7 @@ static struct phy_driver at803x_driver[]
63 .set_tunable = at803x_set_tunable,
64 .set_wol = at803x_set_wol,
65 .get_wol = at803x_get_wol,
66 - .get_features = at803x_get_features,
67 + .get_features = qca808x_get_features,
68 .config_aneg = at803x_config_aneg,
69 .suspend = genphy_suspend,
70 .resume = genphy_resume,