net: sparx5: populate supported_interfaces member
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Tue, 16 Nov 2021 10:02:01 +0000 (10:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Nov 2021 11:21:42 +0000 (11:21 +0000)
Populate the phy_interface_t bitmap for the Microchip Sparx5 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/microchip/sparx5/sparx5_main.c

index 4625d4f..3cb6c1f 100644 (file)
@@ -293,6 +293,30 @@ static int sparx5_create_port(struct sparx5 *sparx5,
        spx5_port->phylink_config.type = PHYLINK_NETDEV;
        spx5_port->phylink_config.pcs_poll = true;
 
+       __set_bit(PHY_INTERFACE_MODE_SGMII,
+                 spx5_port->phylink_config.supported_interfaces);
+       __set_bit(PHY_INTERFACE_MODE_QSGMII,
+                 spx5_port->phylink_config.supported_interfaces);
+       __set_bit(PHY_INTERFACE_MODE_1000BASEX,
+                 spx5_port->phylink_config.supported_interfaces);
+       __set_bit(PHY_INTERFACE_MODE_2500BASEX,
+                 spx5_port->phylink_config.supported_interfaces);
+
+       if (spx5_port->conf.bandwidth == SPEED_5000 ||
+           spx5_port->conf.bandwidth == SPEED_10000 ||
+           spx5_port->conf.bandwidth == SPEED_25000)
+               __set_bit(PHY_INTERFACE_MODE_5GBASER,
+                         spx5_port->phylink_config.supported_interfaces);
+
+       if (spx5_port->conf.bandwidth == SPEED_10000 ||
+           spx5_port->conf.bandwidth == SPEED_25000)
+               __set_bit(PHY_INTERFACE_MODE_10GBASER,
+                         spx5_port->phylink_config.supported_interfaces);
+
+       if (spx5_port->conf.bandwidth == SPEED_25000)
+               __set_bit(PHY_INTERFACE_MODE_25GBASER,
+                         spx5_port->phylink_config.supported_interfaces);
+
        phylink = phylink_create(&spx5_port->phylink_config,
                                 of_fwnode_handle(config->node),
                                 config->conf.phy_mode,