net: dsa: sja1105: populate supported_interfaces
authorRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
Fri, 25 Feb 2022 11:56:02 +0000 (11:56 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 25 Feb 2022 12:47:19 +0000 (12:47 +0000)
Populate the supported interfaces bitmap for the SJA1105 DSA switch.

This switch only supports a static model of configuration, so we
restrict the interface modes to the configured setting.

Reviewed-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Signed-off-by: Vladimir Oltean <vladimir. │
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/sja1105/sja1105_main.c

index b513713be61015f208bd5ffa65fb393ed10e8444..90e73a982fafaf6ec4c88b0967799103458101e2 100644 (file)
@@ -1412,6 +1412,18 @@ static void sja1105_mac_link_up(struct dsa_switch *ds, int port,
        sja1105_inhibit_tx(priv, BIT(port), false);
 }
 
+static void sja1105_phylink_get_caps(struct dsa_switch *ds, int port,
+                                    struct phylink_config *config)
+{
+       struct sja1105_private *priv = ds->priv;
+
+       /* The SJA1105 MAC programming model is through the static config
+        * (the xMII Mode table cannot be dynamically reconfigured), and
+        * we have to program that early.
+        */
+       __set_bit(priv->phy_mode[port], config->supported_interfaces);
+}
+
 static void sja1105_phylink_validate(struct dsa_switch *ds, int port,
                                     unsigned long *supported,
                                     struct phylink_link_state *state)
@@ -3152,6 +3164,7 @@ static const struct dsa_switch_ops sja1105_switch_ops = {
        .set_ageing_time        = sja1105_set_ageing_time,
        .port_change_mtu        = sja1105_change_mtu,
        .port_max_mtu           = sja1105_get_max_mtu,
+       .phylink_get_caps       = sja1105_phylink_get_caps,
        .phylink_validate       = sja1105_phylink_validate,
        .phylink_mac_config     = sja1105_mac_config,
        .phylink_mac_link_up    = sja1105_mac_link_up,