Message ID | 20230714063136.21368-2-quic_luoj@quicinc.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: phy: at803x: support qca8081 1G version chip | expand |
On Fri, Jul 14, 2023 at 02:31:31PM +0800, Luo Jie wrote: > qca8081 PHY supports to use genphy_c45_pma_read_abilities for > getting the PHY features supported except for the autoneg ability > > but autoneg ability exists in MII_BMSR instead of MMD7.1, add it When talking about clause 45 PHYs, they don't have a BMSR. The correct definition is MDIO_STAT1, or "status 1 register". Apart from that, Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Thanks!
On 7/14/2023 6:44 PM, Russell King (Oracle) wrote: > On Fri, Jul 14, 2023 at 02:31:31PM +0800, Luo Jie wrote: >> qca8081 PHY supports to use genphy_c45_pma_read_abilities for >> getting the PHY features supported except for the autoneg ability >> >> but autoneg ability exists in MII_BMSR instead of MMD7.1, add it > > When talking about clause 45 PHYs, they don't have a BMSR. The > correct definition is MDIO_STAT1, or "status 1 register". > > Apart from that, > > Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> > > Thanks! > Thanks Russell for the review, i will update this comment in the next patch set.
diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c index c1f307d90518..11388ef3f7ef 100644 --- a/drivers/net/phy/at803x.c +++ b/drivers/net/phy/at803x.c @@ -897,15 +897,6 @@ 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; @@ -1991,6 +1982,23 @@ static int qca808x_cable_test_get_status(struct phy_device *phydev, bool *finish return 0; } +static int qca808x_get_features(struct phy_device *phydev) +{ + int ret; + + ret = genphy_c45_pma_read_abilities(phydev); + if (ret) + return ret; + + /* The autoneg ability is not existed in bit3 of MMD7.1, + * but it is supported by qca808x PHY, so we add it here + * manually. + */ + linkmode_set_bit(ETHTOOL_LINK_MODE_Autoneg_BIT, phydev->supported); + + return 0; +} + static struct phy_driver at803x_driver[] = { { /* Qualcomm Atheros AR8035 */ @@ -2160,7 +2168,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, + .get_features = qca808x_get_features, .config_aneg = at803x_config_aneg, .suspend = genphy_suspend, .resume = genphy_resume,
qca8081 PHY supports to use genphy_c45_pma_read_abilities for getting the PHY features supported except for the autoneg ability but autoneg ability exists in MII_BMSR instead of MMD7.1, add it manually after calling genphy_c45_pma_read_abilities. Signed-off-by: Luo Jie <quic_luoj@quicinc.com> --- drivers/net/phy/at803x.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-)