net: stmmac: add stmmac_get_phy_intf_sel()

Provide a function to translate the PHY interface mode to the
phy_intf_sel pin configuration for dwmac1000 and dwmac4 cores that
support multiple interfaces. We currently handle MII, GMII, RGMII,
SGMII, RMII and REVMII, but not TBI, RTBI nor SMII as drivers do not
appear to use these three and the driver doesn't currently support
these.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vFt4c-0000000Choe-3SII@rmk-PC.armlinux.org.uk
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Russell King (Oracle)
2025-11-03 11:50:10 +00:00
committed by Jakub Kicinski
parent 4a4692e909
commit b459790d3f
2 changed files with 21 additions and 0 deletions

View File

@@ -396,6 +396,7 @@ void stmmac_ptp_register(struct stmmac_priv *priv);
void stmmac_ptp_unregister(struct stmmac_priv *priv);
int stmmac_xdp_open(struct net_device *dev);
void stmmac_xdp_release(struct net_device *dev);
int stmmac_get_phy_intf_sel(phy_interface_t interface);
int stmmac_resume(struct device *dev);
int stmmac_suspend(struct device *dev);
void stmmac_dvr_remove(struct device *dev);

View File

@@ -3082,6 +3082,26 @@ static void stmmac_check_ether_addr(struct stmmac_priv *priv)
}
}
int stmmac_get_phy_intf_sel(phy_interface_t interface)
{
int phy_intf_sel = -EINVAL;
if (interface == PHY_INTERFACE_MODE_MII ||
interface == PHY_INTERFACE_MODE_GMII)
phy_intf_sel = PHY_INTF_SEL_GMII_MII;
else if (phy_interface_mode_is_rgmii(interface))
phy_intf_sel = PHY_INTF_SEL_RGMII;
else if (interface == PHY_INTERFACE_MODE_SGMII)
phy_intf_sel = PHY_INTF_SEL_SGMII;
else if (interface == PHY_INTERFACE_MODE_RMII)
phy_intf_sel = PHY_INTF_SEL_RMII;
else if (interface == PHY_INTERFACE_MODE_REVMII)
phy_intf_sel = PHY_INTF_SEL_REVMII;
return phy_intf_sel;
}
EXPORT_SYMBOL_GPL(stmmac_get_phy_intf_sel);
/**
* stmmac_init_dma_engine - DMA init.
* @priv: driver private structure