1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- From 2b0ee6768f3ac09072e5fd60b36580924e1cfa1c Mon Sep 17 00:00:00 2001
- From: "Russell King (Oracle)" <[email protected]>
- Date: Mon, 11 Apr 2022 10:46:32 +0100
- Subject: [PATCH 08/13] net: dsa: mt7530: move autoneg handling to PCS
- validation
- MIME-Version: 1.0
- Content-Type: text/plain; charset=UTF-8
- Content-Transfer-Encoding: 8bit
- Move the autoneg bit handling to the PCS validation, which allows us to
- get rid of mt753x_phylink_validate() and rely on the default
- phylink_generic_validate() implementation for the MAC side.
- 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 | 28 ++++++++++------------------
- 1 file changed, 10 insertions(+), 18 deletions(-)
- --- a/drivers/net/dsa/mt7530.c
- +++ b/drivers/net/dsa/mt7530.c
- @@ -3008,25 +3008,16 @@ static void mt753x_phylink_get_caps(stru
- priv->info->mac_port_get_caps(ds, port, config);
- }
-
- -static void
- -mt753x_phylink_validate(struct dsa_switch *ds, int port,
- - unsigned long *supported,
- - struct phylink_link_state *state)
- -{
- - __ETHTOOL_DECLARE_LINK_MODE_MASK(mask) = { 0, };
- - u32 caps;
- -
- - caps = dsa_to_port(ds, port)->pl_config.mac_capabilities;
- -
- - phylink_set_port_modes(mask);
- - phylink_get_linkmodes(mask, state->interface, caps);
- +static int mt753x_pcs_validate(struct phylink_pcs *pcs,
- + unsigned long *supported,
- + const struct phylink_link_state *state)
- +{
- + /* Autonegotiation is not supported in TRGMII nor 802.3z modes */
- + if (state->interface == PHY_INTERFACE_MODE_TRGMII ||
- + phy_interface_mode_is_8023z(state->interface))
- + phylink_clear(supported, Autoneg);
-
- - if (state->interface != PHY_INTERFACE_MODE_TRGMII &&
- - !phy_interface_mode_is_8023z(state->interface))
- - phylink_set(mask, Autoneg);
- -
- - linkmode_and(supported, supported, mask);
- - linkmode_and(state->advertising, state->advertising, mask);
- + return 0;
- }
-
- static void mt7530_pcs_get_state(struct phylink_pcs *pcs,
- @@ -3128,12 +3119,14 @@ static void mt7530_pcs_an_restart(struct
- }
-
- static const struct phylink_pcs_ops mt7530_pcs_ops = {
- + .pcs_validate = mt753x_pcs_validate,
- .pcs_get_state = mt7530_pcs_get_state,
- .pcs_config = mt753x_pcs_config,
- .pcs_an_restart = mt7530_pcs_an_restart,
- };
-
- static const struct phylink_pcs_ops mt7531_pcs_ops = {
- + .pcs_validate = mt753x_pcs_validate,
- .pcs_get_state = mt7531_pcs_get_state,
- .pcs_config = mt753x_pcs_config,
- .pcs_an_restart = mt7531_pcs_an_restart,
- @@ -3225,7 +3218,6 @@ static const struct dsa_switch_ops mt753
- .port_mirror_add = mt753x_port_mirror_add,
- .port_mirror_del = mt753x_port_mirror_del,
- .phylink_get_caps = mt753x_phylink_get_caps,
- - .phylink_validate = mt753x_phylink_validate,
- .phylink_mac_select_pcs = mt753x_phylink_mac_select_pcs,
- .phylink_mac_config = mt753x_phylink_mac_config,
- .phylink_mac_link_down = mt753x_phylink_mac_link_down,
|