net: dpaa2-mac: populate supported_interfaces member
authorRussell King <rmk+kernel@armlinux.org.uk>
Wed, 17 Nov 2021 17:24:02 +0000 (17:24 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 18 Nov 2021 11:38:44 +0000 (11:38 +0000)
Populate the phy interface mode bitmap for the Freescale DPAA2 driver
with interfaces modes supported by the MAC.

Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/dpaa2/dpaa2-mac.c

index ef8f0a05502423179ec11069b6d06695e2f20666..176ce0a037161be7e53474a647411908f9eb4355 100644 (file)
@@ -336,9 +336,30 @@ int dpaa2_mac_connect(struct dpaa2_mac *mac)
                        return err;
        }
 
+       memset(&mac->phylink_config, 0, sizeof(mac->phylink_config));
        mac->phylink_config.dev = &net_dev->dev;
        mac->phylink_config.type = PHYLINK_NETDEV;
 
+       /* We support the current interface mode, and if we have a PCS
+        * similar interface modes that do not require the PLLs to be
+        * reconfigured.
+        */
+       __set_bit(mac->if_mode, mac->phylink_config.supported_interfaces);
+       if (mac->pcs) {
+               switch (mac->if_mode) {
+               case PHY_INTERFACE_MODE_1000BASEX:
+               case PHY_INTERFACE_MODE_SGMII:
+                       __set_bit(PHY_INTERFACE_MODE_1000BASEX,
+                                 mac->phylink_config.supported_interfaces);
+                       __set_bit(PHY_INTERFACE_MODE_SGMII,
+                                 mac->phylink_config.supported_interfaces);
+                       break;
+
+               default:
+                       break;
+               }
+       }
+
        phylink = phylink_create(&mac->phylink_config,
                                 dpmac_node, mac->if_mode,
                                 &dpaa2_mac_phylink_ops);