Commit b459790d authored by Russell King (Oracle)'s avatar Russell King (Oracle) Committed by Jakub Kicinski
Browse files

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: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Link: https://patch.msgid.link/E1vFt4c-0000000Choe-3SII@rmk-PC.armlinux.org.uk


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 4a4692e9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
+20 −0
Original line number Diff line number Diff line
@@ -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