mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
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
|
||
|
*/
|