mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	One 5.12 link fix and 5.13 crossbar support. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
		
			
				
	
	
		
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 01488a0ccd9abe15565bed50a45afcddbb0fe199 Mon Sep 17 00:00:00 2001
 | |
| From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
 | |
| Date: Fri, 12 Mar 2021 11:41:07 +0100
 | |
| Subject: [PATCH] net: dsa: bcm_sf2: store PHY interface/mode in port structure
 | |
| MIME-Version: 1.0
 | |
| Content-Type: text/plain; charset=UTF-8
 | |
| Content-Transfer-Encoding: 8bit
 | |
| 
 | |
| It's needed later for proper switch / crossbar setup.
 | |
| 
 | |
| Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
 | |
| Acked-by: Florian Fainelli <f.fainelli@gmail.com>
 | |
| Signed-off-by: David S. Miller <davem@davemloft.net>
 | |
| ---
 | |
|  drivers/net/dsa/bcm_sf2.c | 16 ++++++++++++----
 | |
|  drivers/net/dsa/bcm_sf2.h |  1 +
 | |
|  2 files changed, 13 insertions(+), 4 deletions(-)
 | |
| 
 | |
| --- a/drivers/net/dsa/bcm_sf2.c
 | |
| +++ b/drivers/net/dsa/bcm_sf2.c
 | |
| @@ -385,8 +385,9 @@ static void bcm_sf2_intr_disable(struct
 | |
|  static void bcm_sf2_identify_ports(struct bcm_sf2_priv *priv,
 | |
|  				   struct device_node *dn)
 | |
|  {
 | |
| +	struct device *dev = priv->dev->ds->dev;
 | |
| +	struct bcm_sf2_port_status *port_st;
 | |
|  	struct device_node *port;
 | |
| -	int mode;
 | |
|  	unsigned int port_num;
 | |
|  
 | |
|  	priv->moca_port = -1;
 | |
| @@ -395,19 +396,26 @@ static void bcm_sf2_identify_ports(struc
 | |
|  		if (of_property_read_u32(port, "reg", &port_num))
 | |
|  			continue;
 | |
|  
 | |
| +		if (port_num >= DSA_MAX_PORTS) {
 | |
| +			dev_err(dev, "Invalid port number %d\n", port_num);
 | |
| +			continue;
 | |
| +		}
 | |
| +
 | |
| +		port_st = &priv->port_sts[port_num];
 | |
| +
 | |
|  		/* Internal PHYs get assigned a specific 'phy-mode' property
 | |
|  		 * value: "internal" to help flag them before MDIO probing
 | |
|  		 * has completed, since they might be turned off at that
 | |
|  		 * time
 | |
|  		 */
 | |
| -		mode = of_get_phy_mode(port);
 | |
| -		if (mode < 0)
 | |
| +		port_st->mode = of_get_phy_mode(port);
 | |
| +		if (port_st->mode < 0)
 | |
|  			continue;
 | |
|  
 | |
| -		if (mode == PHY_INTERFACE_MODE_INTERNAL)
 | |
| +		if (port_st->mode == PHY_INTERFACE_MODE_INTERNAL)
 | |
|  			priv->int_phy_mask |= 1 << port_num;
 | |
|  
 | |
| -		if (mode == PHY_INTERFACE_MODE_MOCA)
 | |
| +		if (port_st->mode == PHY_INTERFACE_MODE_MOCA)
 | |
|  			priv->moca_port = port_num;
 | |
|  
 | |
|  		if (of_property_read_bool(port, "brcm,use-bcm-hdr"))
 | |
| --- a/drivers/net/dsa/bcm_sf2.h
 | |
| +++ b/drivers/net/dsa/bcm_sf2.h
 | |
| @@ -43,6 +43,7 @@ struct bcm_sf2_hw_params {
 | |
|  #define BCM_SF2_REGS_NUM	6
 | |
|  
 | |
|  struct bcm_sf2_port_status {
 | |
| +	int mode;
 | |
|  	unsigned int link;
 | |
|  };
 | |
|  
 |