mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-07 02:19:54 +00:00
net: dsa: mv88e6xxx: add phylink_get_caps for the mv88e6320/21 family
As of commitde5c9bf40c("net: phylink: require supported_interfaces to be filled") Marvell 88e6320/21 switches fail to be probed: ... mv88e6085 30be0000.ethernet-1:00: phylink: error: empty supported_interfaces error creating PHYLINK: -22 ... The problem stems from the use of mv88e6185_phylink_get_caps() to get the device capabilities. Since there are serdes only ports 0/1 included, create a new dedicated phylink_get_caps for the 6320 and 6321 to properly support their set of capabilities. Fixes:de5c9bf40c("net: phylink: require supported_interfaces to be filled") Signed-off-by: Steffen Bätz <steffen@innosonix.de> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Fabio Estevam <festevam@gmail.com> Link: https://lore.kernel.org/r/20240508072944.54880-2-steffen@innosonix.de Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
committed by
Paolo Abeni
parent
393ceeb921
commit
f39bf3cf08
@@ -697,6 +697,18 @@ static void mv88e6352_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mv88e632x_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
|
||||||
|
struct phylink_config *config)
|
||||||
|
{
|
||||||
|
unsigned long *supported = config->supported_interfaces;
|
||||||
|
|
||||||
|
/* Translate the default cmode */
|
||||||
|
mv88e6xxx_translate_cmode(chip->ports[port].cmode, supported);
|
||||||
|
|
||||||
|
config->mac_capabilities = MAC_SYM_PAUSE | MAC_10 | MAC_100 |
|
||||||
|
MAC_1000FD;
|
||||||
|
}
|
||||||
|
|
||||||
static void mv88e6341_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
|
static void mv88e6341_phylink_get_caps(struct mv88e6xxx_chip *chip, int port,
|
||||||
struct phylink_config *config)
|
struct phylink_config *config)
|
||||||
{
|
{
|
||||||
@@ -5093,7 +5105,7 @@ static const struct mv88e6xxx_ops mv88e6320_ops = {
|
|||||||
.gpio_ops = &mv88e6352_gpio_ops,
|
.gpio_ops = &mv88e6352_gpio_ops,
|
||||||
.avb_ops = &mv88e6352_avb_ops,
|
.avb_ops = &mv88e6352_avb_ops,
|
||||||
.ptp_ops = &mv88e6352_ptp_ops,
|
.ptp_ops = &mv88e6352_ptp_ops,
|
||||||
.phylink_get_caps = mv88e6185_phylink_get_caps,
|
.phylink_get_caps = mv88e632x_phylink_get_caps,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mv88e6xxx_ops mv88e6321_ops = {
|
static const struct mv88e6xxx_ops mv88e6321_ops = {
|
||||||
@@ -5139,7 +5151,7 @@ static const struct mv88e6xxx_ops mv88e6321_ops = {
|
|||||||
.gpio_ops = &mv88e6352_gpio_ops,
|
.gpio_ops = &mv88e6352_gpio_ops,
|
||||||
.avb_ops = &mv88e6352_avb_ops,
|
.avb_ops = &mv88e6352_avb_ops,
|
||||||
.ptp_ops = &mv88e6352_ptp_ops,
|
.ptp_ops = &mv88e6352_ptp_ops,
|
||||||
.phylink_get_caps = mv88e6185_phylink_get_caps,
|
.phylink_get_caps = mv88e632x_phylink_get_caps,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mv88e6xxx_ops mv88e6341_ops = {
|
static const struct mv88e6xxx_ops mv88e6341_ops = {
|
||||||
|
|||||||
Reference in New Issue
Block a user