net: dsa: felix: allow configurable phylink_mac_config
authorColin Foster <colin.foster@in-advantage.com>
Fri, 17 Mar 2023 18:54:13 +0000 (11:54 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 20 Mar 2023 09:08:48 +0000 (09:08 +0000)
If a user of the Felix driver has a port running in SGMII / QSGMII mode, it
will need to utilize phylink_mac_config(). Add this configurability.

Signed-off-by: Colin Foster <colin.foster@in-advantage.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/ocelot/felix.c
drivers/net/dsa/ocelot/felix.h

index 21dcb9cadc12cfb09db9f55453545c3e8af53452..845068bcbeb493bddc98a4f1805e8672c9c3d67e 100644 (file)
@@ -1056,6 +1056,17 @@ static void felix_phylink_get_caps(struct dsa_switch *ds, int port,
                  config->supported_interfaces);
 }
 
+static void felix_phylink_mac_config(struct dsa_switch *ds, int port,
+                                    unsigned int mode,
+                                    const struct phylink_link_state *state)
+{
+       struct ocelot *ocelot = ds->priv;
+       struct felix *felix = ocelot_to_felix(ocelot);
+
+       if (felix->info->phylink_mac_config)
+               felix->info->phylink_mac_config(ocelot, port, mode, state);
+}
+
 static struct phylink_pcs *felix_phylink_mac_select_pcs(struct dsa_switch *ds,
                                                        int port,
                                                        phy_interface_t iface)
@@ -2088,6 +2099,7 @@ const struct dsa_switch_ops felix_switch_ops = {
        .get_sset_count                 = felix_get_sset_count,
        .get_ts_info                    = felix_get_ts_info,
        .phylink_get_caps               = felix_phylink_get_caps,
+       .phylink_mac_config             = felix_phylink_mac_config,
        .phylink_mac_select_pcs         = felix_phylink_mac_select_pcs,
        .phylink_mac_link_down          = felix_phylink_mac_link_down,
        .phylink_mac_link_up            = felix_phylink_mac_link_up,
index d5d0b30c0b7582daeabe1599ec08950e4d2b0728..98771273512b65939d33357e47b8c97d78af8230 100644 (file)
@@ -58,6 +58,9 @@ struct felix_info {
        void    (*tas_guard_bands_update)(struct ocelot *ocelot, int port);
        void    (*port_sched_speed_set)(struct ocelot *ocelot, int port,
                                        u32 speed);
+       void    (*phylink_mac_config)(struct ocelot *ocelot, int port,
+                                     unsigned int mode,
+                                     const struct phylink_link_state *state);
 };
 
 /* Methods for initializing the hardware resources specific to a tagging