mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 13:48:06 +00:00
88068dd767
https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.1.103 Removed upstreamed: generic/backport-6.1/412-v6.3-01-spidev-Add-Silicon-Labs-EM3581-device-compatible.patch See: See: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.1.103&id=c6c419ed94788ca13334b4acd50167b7f6d00a06 All other patches automatically rebased. Build system: bcm4908 bcm53xx Signed-off-by: Zxl hhyccc <zxlhhy@gmail.com> Link: https://github.com/openwrt/openwrt/pull/16093 Signed-off-by: Robert Marko <robimarko@gmail.com>
90 lines
3.4 KiB
Diff
90 lines
3.4 KiB
Diff
From b3f1a164c7f742503dc7159011f7ad6b092b660e Mon Sep 17 00:00:00 2001
|
|
From: Greg Ungerer <gerg@kernel.org>
|
|
Date: Fri, 24 Nov 2023 14:15:28 +1000
|
|
Subject: [PATCH] net: dsa: mv88e6xxx: fix marvell 6350 switch probing
|
|
|
|
As of commit de5c9bf40c45 ("net: phylink: require supported_interfaces to
|
|
be filled") Marvell 88e6350 switches fail to be probed:
|
|
|
|
...
|
|
mv88e6085 d0072004.mdio-mii:11: switch 0x3710 detected: Marvell 88E6350, revision 2
|
|
mv88e6085 d0072004.mdio-mii:11: phylink: error: empty supported_interfaces
|
|
error creating PHYLINK: -22
|
|
mv88e6085: probe of d0072004.mdio-mii:11 failed with error -22
|
|
...
|
|
|
|
The problem stems from the use of mv88e6185_phylink_get_caps() to get
|
|
the device capabilities. Create a new dedicated phylink_get_caps for the
|
|
6351 family (which the 6350 is one of) to properly support their set of
|
|
capabilities.
|
|
|
|
According to chip.h the 6351 switch family includes the 6171, 6175, 6350
|
|
and 6351 switches, so update each of these to use the correct
|
|
phylink_get_caps.
|
|
|
|
Fixes: de5c9bf40c45 ("net: phylink: require supported_interfaces to be filled")
|
|
Signed-off-by: Greg Ungerer <gerg@kernel.org>
|
|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/dsa/mv88e6xxx/chip.c | 20 ++++++++++++++++----
|
|
1 file changed, 16 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
|
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
|
@@ -652,6 +652,18 @@ static void mv88e6250_phylink_get_caps(s
|
|
config->mac_capabilities = MAC_SYM_PAUSE | MAC_10 | MAC_100;
|
|
}
|
|
|
|
+static void mv88e6351_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 int mv88e6352_get_port4_serdes_cmode(struct mv88e6xxx_chip *chip)
|
|
{
|
|
u16 reg, val;
|
|
@@ -4502,7 +4514,7 @@ static const struct mv88e6xxx_ops mv88e6
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
.stu_getnext = mv88e6352_g1_stu_getnext,
|
|
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
|
|
- .phylink_get_caps = mv88e6185_phylink_get_caps,
|
|
+ .phylink_get_caps = mv88e6351_phylink_get_caps,
|
|
};
|
|
|
|
static const struct mv88e6xxx_ops mv88e6172_ops = {
|
|
@@ -4605,7 +4617,7 @@ static const struct mv88e6xxx_ops mv88e6
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
.stu_getnext = mv88e6352_g1_stu_getnext,
|
|
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
|
|
- .phylink_get_caps = mv88e6185_phylink_get_caps,
|
|
+ .phylink_get_caps = mv88e6351_phylink_get_caps,
|
|
};
|
|
|
|
static const struct mv88e6xxx_ops mv88e6176_ops = {
|
|
@@ -5282,7 +5294,7 @@ static const struct mv88e6xxx_ops mv88e6
|
|
.vtu_loadpurge = mv88e6352_g1_vtu_loadpurge,
|
|
.stu_getnext = mv88e6352_g1_stu_getnext,
|
|
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
|
|
- .phylink_get_caps = mv88e6185_phylink_get_caps,
|
|
+ .phylink_get_caps = mv88e6351_phylink_get_caps,
|
|
};
|
|
|
|
static const struct mv88e6xxx_ops mv88e6351_ops = {
|
|
@@ -5328,7 +5340,7 @@ static const struct mv88e6xxx_ops mv88e6
|
|
.stu_loadpurge = mv88e6352_g1_stu_loadpurge,
|
|
.avb_ops = &mv88e6352_avb_ops,
|
|
.ptp_ops = &mv88e6352_ptp_ops,
|
|
- .phylink_get_caps = mv88e6185_phylink_get_caps,
|
|
+ .phylink_get_caps = mv88e6351_phylink_get_caps,
|
|
};
|
|
|
|
static const struct mv88e6xxx_ops mv88e6352_ops = {
|