mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04: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
 | |
|  	 */
 |