net: phy: nxp-c45-tja11xx: read PHY the speed from hardware

Read PHY speed from hardware instead of assuming 100Mbps by default.
The TJA1103 works only at 100Mbps, but the driver will support more PHYs.

Signed-off-by: "Radu Pirea (NXP OSS)" <radu-nicolae.pirea@oss.nxp.com>
This commit is contained in:
Radu Pirea (NXP OSS)
2024-02-08 10:41:23 +08:00
committed by Peng Fan
parent 6c43208a6d
commit 84e57e7dfb
+21 -1
View File
@@ -306,13 +306,33 @@ static int nxp_c45_config(struct phy_device *phydev)
return nxp_c45_start_op(phydev);
}
static int nxp_c45_speed(struct phy_device *phydev)
{
int val;
val = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_CTRL1);
if (val < 0)
return val;
if (val & MDIO_PMA_CTRL1_SPEED100)
phydev->speed = SPEED_100;
else
phydev->speed = 0;
return 0;
}
static int nxp_c45_startup(struct phy_device *phydev)
{
u32 reg;
int ret;
reg = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MDIO_STAT1);
phydev->link = !!(reg & MDIO_STAT1_LSTATUS);
phydev->speed = SPEED_100;
ret = nxp_c45_speed(phydev);
if (ret < 0)
return ret;
phydev->duplex = DUPLEX_FULL;
return 0;
}