Message ID | 20230208112054.22965-1-guanwentao@uniontech.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: stmmac: get phydev->interface from mac for mdio phy init | expand |
On Wed, Feb 08, 2023 at 07:20:54PM +0800, Guan Wentao wrote: > The phy->interface from mdiobus_get_phy is default from phy_device_create. > In some phy devices like at803x, we need the correct value to init delay. > Use priv->plat->interface to init if we know. You commit message i missing a lot of details to make this easy to review. So you board is not using DT? And so there is not a DT node specifying the phy-mode. You have some other way of getting the correct interface mode into plat->interface. And since you don't have DT, you also have some other mechanism to set plat->phy_addr to the address on the MDIO bus. The code then directly gets the PHY from the MDIO bus, and calls phylink_connect_phy() to connect the PHY. The old code used phy_connect() which took an interface parameter but phylink_connect_phy() does not. And that is your problem. So your fix makes sense. Please improve the commit message. Please also take a look at https://www.kernel.org/doc/html/latest/process/maintainer-netdev.html You should set the email Subject: line to indicate which tree this patch is for. Andrew
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index 1a5b8dab5e9b..1dc9c7f3d714 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1162,6 +1162,12 @@ static int stmmac_init_phy(struct net_device *dev) return -ENODEV; } + /* If we know the interface, it defines which PHY interface */ + if (priv->plat->interface > 0) { + phydev->interface = priv->plat->interface; + netdev_dbg(priv->dev, "Override default phy interface\n"); + } + ret = phylink_connect_phy(priv->phylink, phydev); }
The phy->interface from mdiobus_get_phy is default from phy_device_create. In some phy devices like at803x, we need the correct value to init delay. Use priv->plat->interface to init if we know. Fixes: 74371272f97f ("net: stmmac: Convert to phylink and remove phylib logic") Signed-off-by: Guan Wentao <guanwentao@uniontech.com> --- drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 ++++++ 1 file changed, 6 insertions(+)