net: dpaa2-mac: add 1000BASE-X support
Now that pcs-lynx supports 1000BASE-X, add support for this interface mode to dpaa2-mac. pcs-lynx can be switched at runtime between SGMII and 1000BASE-X mode, so allow dpaa2-mac to switch between these as well. This commit prepares the ground work for allowing 1G fiber connections to be used with DPAA2 on the SolidRun CEX7 platforms. Reviewed-by: Ioana Ciornei <ioana.ciornei@nxp.com> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Родитель
694a0006c0
Коммит
46c518c814
|
@ -79,10 +79,20 @@ static bool dpaa2_mac_phy_mode_mismatch(struct dpaa2_mac *mac,
|
||||||
phy_interface_t interface)
|
phy_interface_t interface)
|
||||||
{
|
{
|
||||||
switch (interface) {
|
switch (interface) {
|
||||||
|
/* We can switch between SGMII and 1000BASE-X at runtime with
|
||||||
|
* pcs-lynx
|
||||||
|
*/
|
||||||
|
case PHY_INTERFACE_MODE_SGMII:
|
||||||
|
case PHY_INTERFACE_MODE_1000BASEX:
|
||||||
|
if (mac->pcs &&
|
||||||
|
(mac->if_mode == PHY_INTERFACE_MODE_SGMII ||
|
||||||
|
mac->if_mode == PHY_INTERFACE_MODE_1000BASEX))
|
||||||
|
return false;
|
||||||
|
return interface != mac->if_mode;
|
||||||
|
|
||||||
case PHY_INTERFACE_MODE_10GBASER:
|
case PHY_INTERFACE_MODE_10GBASER:
|
||||||
case PHY_INTERFACE_MODE_USXGMII:
|
case PHY_INTERFACE_MODE_USXGMII:
|
||||||
case PHY_INTERFACE_MODE_QSGMII:
|
case PHY_INTERFACE_MODE_QSGMII:
|
||||||
case PHY_INTERFACE_MODE_SGMII:
|
|
||||||
case PHY_INTERFACE_MODE_RGMII:
|
case PHY_INTERFACE_MODE_RGMII:
|
||||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
case PHY_INTERFACE_MODE_RGMII_ID:
|
||||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
case PHY_INTERFACE_MODE_RGMII_RXID:
|
||||||
|
@ -122,13 +132,17 @@ static void dpaa2_mac_validate(struct phylink_config *config,
|
||||||
fallthrough;
|
fallthrough;
|
||||||
case PHY_INTERFACE_MODE_SGMII:
|
case PHY_INTERFACE_MODE_SGMII:
|
||||||
case PHY_INTERFACE_MODE_QSGMII:
|
case PHY_INTERFACE_MODE_QSGMII:
|
||||||
|
case PHY_INTERFACE_MODE_1000BASEX:
|
||||||
case PHY_INTERFACE_MODE_RGMII:
|
case PHY_INTERFACE_MODE_RGMII:
|
||||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
case PHY_INTERFACE_MODE_RGMII_ID:
|
||||||
case PHY_INTERFACE_MODE_RGMII_RXID:
|
case PHY_INTERFACE_MODE_RGMII_RXID:
|
||||||
case PHY_INTERFACE_MODE_RGMII_TXID:
|
case PHY_INTERFACE_MODE_RGMII_TXID:
|
||||||
phylink_set(mask, 10baseT_Full);
|
phylink_set(mask, 1000baseX_Full);
|
||||||
phylink_set(mask, 100baseT_Full);
|
|
||||||
phylink_set(mask, 1000baseT_Full);
|
phylink_set(mask, 1000baseT_Full);
|
||||||
|
if (state->interface == PHY_INTERFACE_MODE_1000BASEX)
|
||||||
|
break;
|
||||||
|
phylink_set(mask, 100baseT_Full);
|
||||||
|
phylink_set(mask, 10baseT_Full);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
goto empty_set;
|
goto empty_set;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче