1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- From 3c1d788a62dc648d1846049b66119ebb69dedd52 Mon Sep 17 00:00:00 2001
- From: "Russell King (Oracle)" <[email protected]>
- Date: Mon, 11 Apr 2022 10:46:17 +0100
- Subject: [PATCH 05/13] net: dsa: mt7530: only indicate linkmodes that can be
- supported
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- Now that mt7530 is not using the basex helper, it becomes unnecessary to
- indicate support for both 1000baseX and 2500baseX when one of the 803.3z
- PHY interface modes is being selected. Ensure that the driver indicates
- only those linkmodes that can actually be supported by the PHY interface
- mode.
- Tested-by: Marek Behún <[email protected]>
- Signed-off-by: Russell King (Oracle) <[email protected]>
- Signed-off-by: Paolo Abeni <[email protected]>
- ---
- drivers/net/dsa/mt7530.c | 12 ++++++++----
- drivers/net/dsa/mt7530.h | 1 +
- 2 files changed, 9 insertions(+), 4 deletions(-)
- --- a/drivers/net/dsa/mt7530.c
- +++ b/drivers/net/dsa/mt7530.c
- @@ -2632,12 +2632,13 @@ static int mt7531_rgmii_setup(struct mt7
- }
-
- static void mt7531_sgmii_validate(struct mt7530_priv *priv, int port,
- + phy_interface_t interface,
- unsigned long *supported)
- {
- /* Port5 supports ethier RGMII or SGMII.
- * Port6 supports SGMII only.
- */
- - if (port == 6) {
- + if (port == 6 && interface == PHY_INTERFACE_MODE_2500BASEX) {
- phylink_set(supported, 2500baseX_Full);
- phylink_set(supported, 2500baseT_Full);
- }
- @@ -3010,16 +3011,18 @@ static void mt753x_phylink_get_caps(stru
-
- static void
- mt7530_mac_port_validate(struct dsa_switch *ds, int port,
- + phy_interface_t interface,
- unsigned long *supported)
- {
- }
-
- static void mt7531_mac_port_validate(struct dsa_switch *ds, int port,
- + phy_interface_t interface,
- unsigned long *supported)
- {
- struct mt7530_priv *priv = ds->priv;
-
- - mt7531_sgmii_validate(priv, port, supported);
- + mt7531_sgmii_validate(priv, port, interface, supported);
- }
-
- static void
- @@ -3042,12 +3045,13 @@ mt753x_phylink_validate(struct dsa_switc
- }
-
- /* This switch only supports 1G full-duplex. */
- - if (state->interface != PHY_INTERFACE_MODE_MII) {
- + if (state->interface != PHY_INTERFACE_MODE_MII &&
- + state->interface != PHY_INTERFACE_MODE_2500BASEX) {
- phylink_set(mask, 1000baseT_Full);
- phylink_set(mask, 1000baseX_Full);
- }
-
- - priv->info->mac_port_validate(ds, port, mask);
- + priv->info->mac_port_validate(ds, port, state->interface, mask);
-
- phylink_set(mask, Pause);
- phylink_set(mask, Asym_Pause);
- --- a/drivers/net/dsa/mt7530.h
- +++ b/drivers/net/dsa/mt7530.h
- @@ -799,6 +799,7 @@ struct mt753x_info {
- void (*mac_port_get_caps)(struct dsa_switch *ds, int port,
- struct phylink_config *config);
- void (*mac_port_validate)(struct dsa_switch *ds, int port,
- + phy_interface_t interface,
- unsigned long *supported);
- int (*mac_port_get_state)(struct dsa_switch *ds, int port,
- struct phylink_link_state *state);
|