net: dsa: mv88e6xxx: pass mv88e6xxx_chip structure to port_max_speed_mode
authorAlexis Lothoré <alexis.lothore@bootlin.com>
Mon, 29 May 2023 08:02:45 +0000 (10:02 +0200)
committerJakub Kicinski <kuba@kernel.org>
Wed, 31 May 2023 06:54:33 +0000 (23:54 -0700)
Some switches families have minor differences on supported link speed for
ports. Instead of redefining a new port_max_speed_mode for each different
configuration, allow to pass mv88e6xxx_chip structure to allow
differentiating those chips by known chip id

Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/mv88e6xxx/chip.c
drivers/net/dsa/mv88e6xxx/chip.h
drivers/net/dsa/mv88e6xxx/port.c
drivers/net/dsa/mv88e6xxx/port.h

index d3d861e55fe0402ff10b3cb3bc0c00a36b729454..a2b5cac3950794a183fea7bcb4158e4793c14f7c 100644 (file)
@@ -3334,7 +3334,7 @@ static int mv88e6xxx_setup_port(struct mv88e6xxx_chip *chip, int port)
                caps = pl_config.mac_capabilities;
 
                if (chip->info->ops->port_max_speed_mode)
-                       mode = chip->info->ops->port_max_speed_mode(port);
+                       mode = chip->info->ops->port_max_speed_mode(chip, port);
                else
                        mode = PHY_INTERFACE_MODE_NA;
 
index eca51946c1008057e735d7153d9e6f1a7fc86c7a..dd7c8880e98758727272b0bc259865e6d9c8bc7f 100644 (file)
@@ -518,7 +518,8 @@ struct mv88e6xxx_ops {
                                     int speed, int duplex);
 
        /* What interface mode should be used for maximum speed? */
-       phy_interface_t (*port_max_speed_mode)(int port);
+       phy_interface_t (*port_max_speed_mode)(struct mv88e6xxx_chip *chip,
+                                              int port);
 
        int (*port_tag_remap)(struct mv88e6xxx_chip *chip, int port);
 
index f79cf716c541f0b63d09fa77256a205e6f45a0d1..66f1b40b4e96592d77e5c93fd336315b53cbdc99 100644 (file)
@@ -342,7 +342,8 @@ int mv88e6341_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
                                               duplex);
 }
 
-phy_interface_t mv88e6341_port_max_speed_mode(int port)
+phy_interface_t mv88e6341_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                             int port)
 {
        if (port == 5)
                return PHY_INTERFACE_MODE_2500BASEX;
@@ -381,7 +382,8 @@ int mv88e6390_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
                                               duplex);
 }
 
-phy_interface_t mv88e6390_port_max_speed_mode(int port)
+phy_interface_t mv88e6390_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                             int port)
 {
        if (port == 9 || port == 10)
                return PHY_INTERFACE_MODE_2500BASEX;
@@ -403,7 +405,8 @@ int mv88e6390x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
                                               duplex);
 }
 
-phy_interface_t mv88e6390x_port_max_speed_mode(int port)
+phy_interface_t mv88e6390x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                              int port)
 {
        if (port == 9 || port == 10)
                return PHY_INTERFACE_MODE_XAUI;
@@ -500,7 +503,8 @@ int mv88e6393x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
        return 0;
 }
 
-phy_interface_t mv88e6393x_port_max_speed_mode(int port)
+phy_interface_t mv88e6393x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                              int port)
 {
        if (port == 0 || port == 9 || port == 10)
                return PHY_INTERFACE_MODE_10GBASER;
index d19b6303b91f0aafc6924d6098a93f93fc07213c..8331b9a89a15c0033f3411534ef0d161ffca92e4 100644 (file)
@@ -359,10 +359,14 @@ int mv88e6390x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
 int mv88e6393x_port_set_speed_duplex(struct mv88e6xxx_chip *chip, int port,
                                     int speed, int duplex);
 
-phy_interface_t mv88e6341_port_max_speed_mode(int port);
-phy_interface_t mv88e6390_port_max_speed_mode(int port);
-phy_interface_t mv88e6390x_port_max_speed_mode(int port);
-phy_interface_t mv88e6393x_port_max_speed_mode(int port);
+phy_interface_t mv88e6341_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                             int port);
+phy_interface_t mv88e6390_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                             int port);
+phy_interface_t mv88e6390x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                              int port);
+phy_interface_t mv88e6393x_port_max_speed_mode(struct mv88e6xxx_chip *chip,
+                                              int port);
 
 int mv88e6xxx_port_set_state(struct mv88e6xxx_chip *chip, int port, u8 state);