]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: sparx5: ops out function for setting the port mux
authorDaniel Machon <daniel.machon@microchip.com>
Fri, 4 Oct 2024 13:19:37 +0000 (15:19 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 8 Oct 2024 10:07:01 +0000 (12:07 +0200)
Port muxing is configured based on the supported port modes. As these
modes can differ on Sparx5 and lan969x we ops out the port muxing
function.

Reviewed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Daniel Machon <daniel.machon@microchip.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/microchip/sparx5/sparx5_main.c
drivers/net/ethernet/microchip/sparx5/sparx5_main.h
drivers/net/ethernet/microchip/sparx5/sparx5_port.c

index 4fe672cd3b46fe8f06d066efd17f92bd210655d7..22277a3e91ef8d60a7ccebf4699932890d23ba15 100644 (file)
@@ -992,6 +992,7 @@ static const struct sparx5_ops sparx5_ops = {
        .get_port_dev_bit        = &sparx5_port_dev_mapping,
        .get_hsch_max_group_rate = &sparx5_get_hsch_max_group_rate,
        .get_sdlb_group          = &sparx5_get_sdlb_group,
+       .set_port_mux            = &sparx5_port_mux_set,
 };
 
 static const struct sparx5_match_data sparx5_desc = {
index b6abbae119c251b2f3aefa7f398e610fc56d1721..8d985dfb65ebff044ad3f8efad74a1cd7abb13fc 100644 (file)
@@ -267,6 +267,8 @@ struct sparx5_ops {
        u32  (*get_port_dev_bit)(struct sparx5 *sparx5, int port);
        u32  (*get_hsch_max_group_rate)(int grp);
        struct sparx5_sdlb_group *(*get_sdlb_group)(int idx);
+       int (*set_port_mux)(struct sparx5 *sparx5, struct sparx5_port *port,
+                           struct sparx5_port_config *conf);
 };
 
 struct sparx5_main_io_resource {
@@ -485,6 +487,10 @@ int sparx5_pool_get(struct sparx5_pool_entry *pool, int size, u32 *id);
 int sparx5_pool_get_with_idx(struct sparx5_pool_entry *pool, int size, u32 idx,
                             u32 *id);
 
+/* sparx5_port.c */
+int sparx5_port_mux_set(struct sparx5 *sparx5, struct sparx5_port *port,
+                       struct sparx5_port_config *conf);
+
 /* sparx5_sdlb.c */
 #define SPX5_SDLB_PUP_TOKEN_DISABLE 0x1FFF
 #define SPX5_SDLB_PUP_TOKEN_MAX (SPX5_SDLB_PUP_TOKEN_DISABLE - 1)
index 49ff94db0e6312b0650e31753f4304f56e0c9b6b..0dc2201fe653a50bd7ccc826dc44fdfe894a2c22 100644 (file)
@@ -516,9 +516,8 @@ static int sparx5_port_fifo_sz(struct sparx5 *sparx5,
 /* Configure port muxing:
  * QSGMII:     4x2G5 devices
  */
-static int sparx5_port_mux_set(struct sparx5 *sparx5,
-                              struct sparx5_port *port,
-                              struct sparx5_port_config *conf)
+int sparx5_port_mux_set(struct sparx5 *sparx5, struct sparx5_port *port,
+                       struct sparx5_port_config *conf)
 {
        u32 portno = port->portno;
        u32 inst;
@@ -1039,7 +1038,7 @@ int sparx5_port_init(struct sparx5 *sparx5,
        pcsinst = spx5_inst_get(sparx5, pcs, pix);
 
        /* Set the mux port mode  */
-       err = sparx5_port_mux_set(sparx5, port, conf);
+       err = ops->set_port_mux(sparx5, port, conf);
        if (err)
                return err;