| 
					
				 | 
			
			
				@@ -33,7 +33,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  /* String, offset, and register size in bytes if different from 4 bytes */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  static const struct mt7530_mib_desc mt7530_mib[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	MIB_DESC(1, 0x00, "TxDrop"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -2792,12 +2797,11 @@ static int mt7531_rgmii_setup(struct mt7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -2819,12 +2824,11 @@ static int mt7531_rgmii_setup(struct mt7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -50,7 +50,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	unsigned int val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	/* For adjusting speed and duplex of SGMII force mode. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -2823,6 +2827,9 @@ mt7531_sgmii_link_up_force(struct dsa_sw 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -2850,6 +2854,9 @@ mt7531_sgmii_link_up_force(struct dsa_sw 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	/* MT7531 SGMII 1G force mode can only work in full duplex mode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	 * no matter MT7531_SGMII_FORCE_HALF_DUPLEX is set or not. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -60,7 +60,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	if ((speed == SPEED_10 || speed == SPEED_100) && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	    duplex != DUPLEX_FULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -2898,9 +2905,10 @@ static int mt7531_sgmii_setup_mode_an(st 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -2925,9 +2932,10 @@ static int mt7531_sgmii_setup_mode_an(st 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -73,7 +73,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	u32 val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	/* Only restart AN when AN is enabled */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -2957,6 +2965,24 @@ mt753x_mac_config(struct dsa_switch *ds, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -2984,6 +2992,24 @@ mt753x_mac_config(struct dsa_switch *ds, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	return priv->info->mac_port_config(ds, port, mode, state->interface); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -98,7 +98,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  static void 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  mt753x_phylink_mac_config(struct dsa_switch *ds, int port, unsigned int mode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  			  const struct phylink_link_state *state) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3018,17 +3044,6 @@ unsupported: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3045,17 +3071,6 @@ unsupported: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		mt7530_write(priv, MT7530_PMCR_P(port), mcr_new); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -116,7 +116,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  static void mt753x_phylink_mac_link_down(struct dsa_switch *ds, int port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  					 unsigned int mode, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  					 phy_interface_t interface) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3038,16 +3053,13 @@ static void mt753x_phylink_mac_link_down 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3065,16 +3080,13 @@ static void mt753x_phylink_mac_link_down 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -139,7 +139,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  static void mt753x_phylink_mac_link_up(struct dsa_switch *ds, int port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3060,8 +3072,6 @@ static void mt753x_phylink_mac_link_up(s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3087,8 +3099,6 @@ static void mt753x_phylink_mac_link_up(s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	struct mt7530_priv *priv = ds->priv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	u32 mcr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -148,7 +148,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	mcr = PMCR_RX_EN | PMCR_TX_EN | PMCR_FORCE_LNK; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	/* MT753x MAC works in 1G full duplex mode for all up-clocked 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3139,6 +3149,8 @@ mt7531_cpu_port_config(struct dsa_switch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3166,6 +3176,8 @@ mt7531_cpu_port_config(struct dsa_switch 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		return ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	mt7530_write(priv, MT7530_PMCR_P(port), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		     PMCR_CPU_PORT_SETTING(priv->id)); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -157,7 +157,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	mt753x_phylink_mac_link_up(ds, port, MLO_AN_FIXED, interface, NULL, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  				   speed, DUPLEX_FULL, true, true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3178,16 +3190,13 @@ mt753x_phylink_validate(struct dsa_switc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3205,16 +3217,13 @@ mt753x_phylink_validate(struct dsa_switc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	linkmode_and(state->advertising, state->advertising, mask); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -178,7 +178,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	pmsr = mt7530_read(priv, MT7530_PMSR_P(port)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	state->link = (pmsr & PMSR_LINK); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3214,8 +3223,6 @@ mt7530_phylink_mac_link_state(struct dsa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3241,8 +3250,6 @@ mt7530_phylink_mac_link_state(struct dsa 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		state->pause |= MLO_PAUSE_RX; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	if (pmsr & PMSR_TX_FC) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		state->pause |= MLO_PAUSE_TX; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -187,7 +187,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  static int 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3257,32 +3264,49 @@ mt7531_sgmii_pcs_get_state_an(struct mt7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3284,32 +3291,49 @@ mt7531_sgmii_pcs_get_state_an(struct mt7 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -249,7 +249,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	if (ret) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		return ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3295,6 +3319,13 @@ mt753x_setup(struct dsa_switch *ds) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3322,6 +3346,13 @@ mt753x_setup(struct dsa_switch *ds) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	if (ret && priv->irq) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		mt7530_free_irq_common(priv); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -263,7 +263,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	return ret; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3356,9 +3387,8 @@ static const struct dsa_switch_ops mt753 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3384,9 +3415,8 @@ static const struct dsa_switch_ops mt753 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	.port_mirror_del	= mt753x_port_mirror_del, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	.phylink_get_caps	= mt753x_phylink_get_caps, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	.phylink_validate	= mt753x_phylink_validate, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -274,7 +274,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	.phylink_mac_link_down	= mt753x_phylink_mac_link_down, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	.phylink_mac_link_up	= mt753x_phylink_mac_link_up, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	.get_mac_eee		= mt753x_get_mac_eee, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3368,36 +3398,34 @@ static const struct dsa_switch_ops mt753 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3396,36 +3426,34 @@ static const struct dsa_switch_ops mt753 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  static const struct mt753x_info mt753x_table[] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	[ID_MT7621] = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  		.id = ID_MT7621, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -314,7 +314,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -3455,7 +3483,7 @@ mt7530_probe(struct mdio_device *mdiodev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -3483,7 +3511,7 @@ mt7530_probe(struct mdio_device *mdiodev 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	if (!priv->info->sw_setup || !priv->info->pad_setup || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	    !priv->info->phy_read || !priv->info->phy_write || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	    !priv->info->mac_port_get_caps || 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -325,7 +325,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	priv->id = priv->info->id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 --- a/drivers/net/dsa/mt7530.h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 +++ b/drivers/net/dsa/mt7530.h 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -773,6 +773,12 @@ static const char *p5_intf_modes(unsigne 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -779,6 +779,12 @@ static const char *p5_intf_modes(unsigne 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  struct mt7530_priv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -338,7 +338,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  /* struct mt753x_info -	This is the main data structure for holding the specific 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   *			part for each supported device 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   * @sw_setup:		Holding the handler to a device initialization 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -784,18 +790,14 @@ struct mt7530_priv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -790,18 +796,14 @@ struct mt7530_priv; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   *			port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   * @mac_port_validate:	Holding the way to set addition validate type for a 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   *			certan MAC port 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -359,7 +359,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	int (*sw_setup)(struct dsa_switch *ds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	int (*phy_read)(struct mt7530_priv *priv, int port, int regnum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	int (*phy_write)(struct mt7530_priv *priv, int port, int regnum, u16 val); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -806,15 +808,9 @@ struct mt753x_info { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -812,15 +814,9 @@ struct mt753x_info { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	void (*mac_port_validate)(struct dsa_switch *ds, int port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  				  phy_interface_t interface, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  				  unsigned long *supported); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -375,7 +375,7 @@ Signed-off-by: Paolo Abeni <[email protected]> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  /* struct mt7530_priv -	This is the main data structure for holding the state 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-@@ -856,6 +852,7 @@ struct mt7530_priv { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -862,6 +858,7 @@ struct mt7530_priv { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	u8			mirror_tx; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  	struct mt7530_port	ports[MT7530_NUM_PORTS]; 
			 |