net: mtk_eth_soc: populate supported_interfaces member
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 16 Nov 2021 10:06:43 +0000 (10:06 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Nov 2021 11:23:39 +0000 (11:23 +0000)
Populate the phy interface mode bitmap for the Mediatek driver with
interfaces modes supported by the MAC.

Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mediatek/mtk_eth_soc.c

index 75d67d1..7f62298 100644 (file)
@@ -3009,6 +3009,26 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
 
        mac->phylink_config.dev = &eth->netdev[id]->dev;
        mac->phylink_config.type = PHYLINK_NETDEV;
+       __set_bit(PHY_INTERFACE_MODE_MII,
+                 mac->phylink_config.supported_interfaces);
+       __set_bit(PHY_INTERFACE_MODE_GMII,
+                 mac->phylink_config.supported_interfaces);
+
+       if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_RGMII))
+               phy_interface_set_rgmii(mac->phylink_config.supported_interfaces);
+
+       if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_TRGMII) && !mac->id)
+               __set_bit(PHY_INTERFACE_MODE_TRGMII,
+                         mac->phylink_config.supported_interfaces);
+
+       if (MTK_HAS_CAPS(mac->hw->soc->caps, MTK_SGMII)) {
+               __set_bit(PHY_INTERFACE_MODE_SGMII,
+                         mac->phylink_config.supported_interfaces);
+               __set_bit(PHY_INTERFACE_MODE_1000BASEX,
+                         mac->phylink_config.supported_interfaces);
+               __set_bit(PHY_INTERFACE_MODE_2500BASEX,
+                         mac->phylink_config.supported_interfaces);
+       }
 
        phylink = phylink_create(&mac->phylink_config,
                                 of_fwnode_handle(mac->of_node),