mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	Copy config and patches from kernel 5.10 to kernel 5.15 Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From bbc4799e8bb6c397e3b3fec13de68e179f5db9ff Mon Sep 17 00:00:00 2001
 | 
						|
From: Ansuel Smith <ansuelsmth@gmail.com>
 | 
						|
Date: Thu, 14 Oct 2021 00:39:13 +0200
 | 
						|
Subject: net: dsa: qca8k: add explicit SGMII PLL enable
 | 
						|
 | 
						|
Support enabling PLL on the SGMII CPU port. Some device require this
 | 
						|
special configuration or no traffic is transmitted and the switch
 | 
						|
doesn't work at all. A dedicated binding is added to the CPU node
 | 
						|
port to apply the correct reg on mac config.
 | 
						|
Fail to correctly configure sgmii with qca8327 switch and warn if pll is
 | 
						|
used on qca8337 with a revision greater than 1.
 | 
						|
 | 
						|
Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
 | 
						|
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
 | 
						|
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
						|
---
 | 
						|
 drivers/net/dsa/qca8k.c | 19 +++++++++++++++++--
 | 
						|
 drivers/net/dsa/qca8k.h |  1 +
 | 
						|
 2 files changed, 18 insertions(+), 2 deletions(-)
 | 
						|
 | 
						|
--- a/drivers/net/dsa/qca8k.c
 | 
						|
+++ b/drivers/net/dsa/qca8k.c
 | 
						|
@@ -1002,6 +1002,18 @@ qca8k_parse_port_config(struct qca8k_pri
 | 
						|
 			if (of_property_read_bool(port_dn, "qca,sgmii-rxclk-falling-edge"))
 | 
						|
 				priv->sgmii_rx_clk_falling_edge = true;
 | 
						|
 
 | 
						|
+			if (of_property_read_bool(port_dn, "qca,sgmii-enable-pll")) {
 | 
						|
+				priv->sgmii_enable_pll = true;
 | 
						|
+
 | 
						|
+				if (priv->switch_id == QCA8K_ID_QCA8327) {
 | 
						|
+					dev_err(priv->dev, "SGMII PLL should NOT be enabled for qca8327. Aborting enabling");
 | 
						|
+					priv->sgmii_enable_pll = false;
 | 
						|
+				}
 | 
						|
+
 | 
						|
+				if (priv->switch_revision < 2)
 | 
						|
+					dev_warn(priv->dev, "SGMII PLL should NOT be enabled for qca8337 with revision 2 or more.");
 | 
						|
+			}
 | 
						|
+
 | 
						|
 			break;
 | 
						|
 		default:
 | 
						|
 			continue;
 | 
						|
@@ -1312,8 +1324,11 @@ qca8k_phylink_mac_config(struct dsa_swit
 | 
						|
 		if (ret)
 | 
						|
 			return;
 | 
						|
 
 | 
						|
-		val |= QCA8K_SGMII_EN_PLL | QCA8K_SGMII_EN_RX |
 | 
						|
-			QCA8K_SGMII_EN_TX | QCA8K_SGMII_EN_SD;
 | 
						|
+		val |= QCA8K_SGMII_EN_SD;
 | 
						|
+
 | 
						|
+		if (priv->sgmii_enable_pll)
 | 
						|
+			val |= QCA8K_SGMII_EN_PLL | QCA8K_SGMII_EN_RX |
 | 
						|
+			       QCA8K_SGMII_EN_TX;
 | 
						|
 
 | 
						|
 		if (dsa_is_cpu_port(ds, port)) {
 | 
						|
 			/* CPU port, we're talking to the CPU MAC, be a PHY */
 | 
						|
--- a/drivers/net/dsa/qca8k.h
 | 
						|
+++ b/drivers/net/dsa/qca8k.h
 | 
						|
@@ -266,6 +266,7 @@ struct qca8k_priv {
 | 
						|
 	u8 switch_revision;
 | 
						|
 	bool sgmii_rx_clk_falling_edge;
 | 
						|
 	bool sgmii_tx_clk_falling_edge;
 | 
						|
+	bool sgmii_enable_pll;
 | 
						|
 	u8 rgmii_rx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */
 | 
						|
 	u8 rgmii_tx_delay[QCA8K_NUM_CPU_PORTS]; /* 0: CPU port0, 1: CPU port6 */
 | 
						|
 	bool legacy_phy_port_mapping;
 |