forked from Openwrt/openwrt
c2c741ccce
Initial backport of at803x PHY driver cleanup. This is in preparation for split and addition of new PHY Family based on at803x needed for ipq807x and other IPQ Series SoC. Other affected patch are automatically refreshed with make target/linux/refresh Signed-off-by: Christian Marangi <ansuelsmth@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
|
|
*/
|