mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-29 10:08:59 +00:00
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>
79 lines
2.1 KiB
Diff
79 lines
2.1 KiB
Diff
From 25d2ba94005fac18fe68878cddff59a67e115554 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Fri, 8 Dec 2023 15:51:53 +0100
|
|
Subject: [PATCH 06/13] net: phy: at803x: move specific at8031 probe mode check
|
|
to dedicated probe
|
|
|
|
Move specific at8031 probe mode check to dedicated probe to make
|
|
at803x_probe more generic and keep code tidy.
|
|
|
|
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 | 39 +++++++++++++++++++--------------------
|
|
1 file changed, 19 insertions(+), 20 deletions(-)
|
|
|
|
--- a/drivers/net/phy/at803x.c
|
|
+++ b/drivers/net/phy/at803x.c
|
|
@@ -844,26 +844,6 @@ static int at803x_probe(struct phy_devic
|
|
if (ret)
|
|
return ret;
|
|
|
|
- if (phydev->drv->phy_id == ATH8031_PHY_ID) {
|
|
- int ccr = phy_read(phydev, AT803X_REG_CHIP_CONFIG);
|
|
- int mode_cfg;
|
|
-
|
|
- if (ccr < 0)
|
|
- return ccr;
|
|
- mode_cfg = ccr & AT803X_MODE_CFG_MASK;
|
|
-
|
|
- switch (mode_cfg) {
|
|
- case AT803X_MODE_CFG_BX1000_RGMII_50OHM:
|
|
- case AT803X_MODE_CFG_BX1000_RGMII_75OHM:
|
|
- priv->is_1000basex = true;
|
|
- fallthrough;
|
|
- case AT803X_MODE_CFG_FX100_RGMII_50OHM:
|
|
- case AT803X_MODE_CFG_FX100_RGMII_75OHM:
|
|
- priv->is_fiber = true;
|
|
- break;
|
|
- }
|
|
- }
|
|
-
|
|
return 0;
|
|
}
|
|
|
|
@@ -1584,6 +1564,9 @@ static int at8031_parse_dt(struct phy_de
|
|
|
|
static int at8031_probe(struct phy_device *phydev)
|
|
{
|
|
+ struct at803x_priv *priv = phydev->priv;
|
|
+ int mode_cfg;
|
|
+ int ccr;
|
|
int ret;
|
|
|
|
ret = at803x_probe(phydev);
|
|
@@ -1597,6 +1580,22 @@ static int at8031_probe(struct phy_devic
|
|
if (ret)
|
|
return ret;
|
|
|
|
+ ccr = phy_read(phydev, AT803X_REG_CHIP_CONFIG);
|
|
+ if (ccr < 0)
|
|
+ return ccr;
|
|
+ mode_cfg = ccr & AT803X_MODE_CFG_MASK;
|
|
+
|
|
+ switch (mode_cfg) {
|
|
+ case AT803X_MODE_CFG_BX1000_RGMII_50OHM:
|
|
+ case AT803X_MODE_CFG_BX1000_RGMII_75OHM:
|
|
+ priv->is_1000basex = true;
|
|
+ fallthrough;
|
|
+ case AT803X_MODE_CFG_FX100_RGMII_50OHM:
|
|
+ case AT803X_MODE_CFG_FX100_RGMII_75OHM:
|
|
+ priv->is_fiber = true;
|
|
+ break;
|
|
+ }
|
|
+
|
|
/* Disable WoL in 1588 register which is enabled
|
|
* by default
|
|
*/
|