| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- From cef945452c8468efce75ba0dc8420510a5b84af9 Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Alexis=20Lothor=C3=A9?= <[email protected]>
- Date: Mon, 29 May 2023 10:02:45 +0200
- Subject: [PATCH 5/6] net: dsa: mv88e6xxx: pass mv88e6xxx_chip structure to
- port_max_speed_mode
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- 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é <[email protected]>
- Reviewed-by: Florian Fainelli <[email protected]>
- Signed-off-by: Jakub Kicinski <[email protected]>
- ---
- drivers/net/dsa/mv88e6xxx/chip.c | 2 +-
- drivers/net/dsa/mv88e6xxx/chip.h | 3 ++-
- drivers/net/dsa/mv88e6xxx/port.c | 12 ++++++++----
- drivers/net/dsa/mv88e6xxx/port.h | 12 ++++++++----
- 4 files changed, 19 insertions(+), 10 deletions(-)
- --- a/drivers/net/dsa/mv88e6xxx/chip.c
- +++ b/drivers/net/dsa/mv88e6xxx/chip.c
- @@ -3328,7 +3328,7 @@ static int mv88e6xxx_setup_port(struct m
- 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;
-
- --- a/drivers/net/dsa/mv88e6xxx/chip.h
- +++ b/drivers/net/dsa/mv88e6xxx/chip.h
- @@ -508,7 +508,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);
-
- --- a/drivers/net/dsa/mv88e6xxx/port.c
- +++ b/drivers/net/dsa/mv88e6xxx/port.c
- @@ -342,7 +342,8 @@ int mv88e6341_port_set_speed_duplex(stru
- 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(stru
- 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(str
- 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(str
- 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;
- --- a/drivers/net/dsa/mv88e6xxx/port.h
- +++ b/drivers/net/dsa/mv88e6xxx/port.h
- @@ -359,10 +359,14 @@ int mv88e6390x_port_set_speed_duplex(str
- 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);
-
|