mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	Copy backport, hack, pending patch and config from 6.1 to 6.6. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From 900eef75cc5018e149c52fe305c9c3fe424c52a7 Mon Sep 17 00:00:00 2001
 | 
						|
From: Christian Marangi <ansuelsmth@gmail.com>
 | 
						|
Date: Fri, 8 Dec 2023 15:51:52 +0100
 | 
						|
Subject: [PATCH 05/13] net: phy: at803x: move specific DT option for at8031 to
 | 
						|
 specific probe
 | 
						|
 | 
						|
Move specific DT options for at8031 to specific probe to tidy things up
 | 
						|
and make at803x_parse_dt more generic.
 | 
						|
 | 
						|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
 | 
						|
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
 | 
						|
Signed-off-by: David S. Miller <davem@davemloft.net>
 | 
						|
---
 | 
						|
 drivers/net/phy/at803x.c | 55 ++++++++++++++++++++++------------------
 | 
						|
 1 file changed, 31 insertions(+), 24 deletions(-)
 | 
						|
 | 
						|
--- a/drivers/net/phy/at803x.c
 | 
						|
+++ b/drivers/net/phy/at803x.c
 | 
						|
@@ -825,30 +825,6 @@ static int at803x_parse_dt(struct phy_de
 | 
						|
 		}
 | 
						|
 	}
 | 
						|
 
 | 
						|
-	/* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
 | 
						|
-	 * options.
 | 
						|
-	 */
 | 
						|
-	if (phydev->drv->phy_id == ATH8031_PHY_ID) {
 | 
						|
-		if (of_property_read_bool(node, "qca,keep-pll-enabled"))
 | 
						|
-			priv->flags |= AT803X_KEEP_PLL_ENABLED;
 | 
						|
-
 | 
						|
-		ret = at8031_register_regulators(phydev);
 | 
						|
-		if (ret < 0)
 | 
						|
-			return ret;
 | 
						|
-
 | 
						|
-		ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
 | 
						|
-							 "vddio");
 | 
						|
-		if (ret) {
 | 
						|
-			phydev_err(phydev, "failed to get VDDIO regulator\n");
 | 
						|
-			return ret;
 | 
						|
-		}
 | 
						|
-
 | 
						|
-		/* Only AR8031/8033 support 1000Base-X for SFP modules */
 | 
						|
-		ret = phy_sfp_probe(phydev, &at803x_sfp_ops);
 | 
						|
-		if (ret < 0)
 | 
						|
-			return ret;
 | 
						|
-	}
 | 
						|
-
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 | 
						|
@@ -1582,6 +1558,30 @@ static int at803x_cable_test_start(struc
 | 
						|
 	return 0;
 | 
						|
 }
 | 
						|
 
 | 
						|
+static int at8031_parse_dt(struct phy_device *phydev)
 | 
						|
+{
 | 
						|
+	struct device_node *node = phydev->mdio.dev.of_node;
 | 
						|
+	struct at803x_priv *priv = phydev->priv;
 | 
						|
+	int ret;
 | 
						|
+
 | 
						|
+	if (of_property_read_bool(node, "qca,keep-pll-enabled"))
 | 
						|
+		priv->flags |= AT803X_KEEP_PLL_ENABLED;
 | 
						|
+
 | 
						|
+	ret = at8031_register_regulators(phydev);
 | 
						|
+	if (ret < 0)
 | 
						|
+		return ret;
 | 
						|
+
 | 
						|
+	ret = devm_regulator_get_enable_optional(&phydev->mdio.dev,
 | 
						|
+						 "vddio");
 | 
						|
+	if (ret) {
 | 
						|
+		phydev_err(phydev, "failed to get VDDIO regulator\n");
 | 
						|
+		return ret;
 | 
						|
+	}
 | 
						|
+
 | 
						|
+	/* Only AR8031/8033 support 1000Base-X for SFP modules */
 | 
						|
+	return phy_sfp_probe(phydev, &at803x_sfp_ops);
 | 
						|
+}
 | 
						|
+
 | 
						|
 static int at8031_probe(struct phy_device *phydev)
 | 
						|
 {
 | 
						|
 	int ret;
 | 
						|
@@ -1590,6 +1590,13 @@ static int at8031_probe(struct phy_devic
 | 
						|
 	if (ret)
 | 
						|
 		return ret;
 | 
						|
 
 | 
						|
+	/* Only supported on AR8031/AR8033, the AR8030/AR8035 use strapping
 | 
						|
+	 * options.
 | 
						|
+	 */
 | 
						|
+	ret = at8031_parse_dt(phydev);
 | 
						|
+	if (ret)
 | 
						|
+		return ret;
 | 
						|
+
 | 
						|
 	/* Disable WoL in 1588 register which is enabled
 | 
						|
 	 * by default
 | 
						|
 	 */
 |