mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-30 21:44:27 -04:00 
			
		
		
		
	Build system: x86_64 Build-tested: x86_64/ACEMAGICIAN T8PLUS, ramips/tplink_archer-a6-v3 Run-tested: x86_64/ACEMAGICIAN T8PLUS, ramips/tplink_archer-a6-v3 Signed-off-by: John Audia <therealgraysky@proton.me>
		
			
				
	
	
		
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 3c1d788a62dc648d1846049b66119ebb69dedd52 Mon Sep 17 00:00:00 2001
 | |
| From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
 | |
| 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 <kabel@kernel.org>
 | |
| Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
 | |
| Signed-off-by: Paolo Abeni <pabeni@redhat.com>
 | |
| ---
 | |
|  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
 | |
| @@ -2587,12 +2587,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);
 | |
|  	}
 | |
| @@ -2965,16 +2966,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
 | |
| @@ -2997,12 +3000,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
 | |
| @@ -772,6 +772,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);
 |