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>
63 lines
2.1 KiB
Diff
63 lines
2.1 KiB
Diff
From c34d9452d4e5d98a655d7b625e85466320885416 Mon Sep 17 00:00:00 2001
|
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
|
Date: Thu, 4 Jan 2024 22:30:41 +0100
|
|
Subject: [PATCH 4/4] net: phy: at803x: make read_status more generic
|
|
|
|
Make read_status more generic in preparation on moving it to shared
|
|
library as other PHY Family Driver will have the exact same
|
|
implementation.
|
|
|
|
The only specific part was a check for AR8031/33 if 1000basex was used.
|
|
The check is moved to a dedicated function specific for those PHYs.
|
|
|
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|
Reviewed-by: Simon Horman <horms@kernel.org>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/phy/at803x.c | 17 ++++++++++++-----
|
|
1 file changed, 12 insertions(+), 5 deletions(-)
|
|
|
|
--- a/drivers/net/phy/at803x.c
|
|
+++ b/drivers/net/phy/at803x.c
|
|
@@ -1020,13 +1020,9 @@ static int at803x_read_specific_status(s
|
|
|
|
static int at803x_read_status(struct phy_device *phydev)
|
|
{
|
|
- struct at803x_priv *priv = phydev->priv;
|
|
struct at803x_ss_mask ss_mask = { 0 };
|
|
int err, old_link = phydev->link;
|
|
|
|
- if (priv->is_1000basex)
|
|
- return genphy_c37_read_status(phydev);
|
|
-
|
|
/* Update the link, but return if there was an error */
|
|
err = genphy_update_link(phydev);
|
|
if (err)
|
|
@@ -1618,6 +1614,17 @@ static int at8031_config_intr(struct phy
|
|
return at803x_config_intr(phydev);
|
|
}
|
|
|
|
+/* AR8031 and AR8033 share the same read status logic */
|
|
+static int at8031_read_status(struct phy_device *phydev)
|
|
+{
|
|
+ struct at803x_priv *priv = phydev->priv;
|
|
+
|
|
+ if (priv->is_1000basex)
|
|
+ return genphy_c37_read_status(phydev);
|
|
+
|
|
+ return at803x_read_status(phydev);
|
|
+}
|
|
+
|
|
/* AR8031 and AR8035 share the same cable test get status reg */
|
|
static int at8031_cable_test_get_status(struct phy_device *phydev,
|
|
bool *finished)
|
|
@@ -2281,7 +2288,7 @@ static struct phy_driver at803x_driver[]
|
|
.read_page = at803x_read_page,
|
|
.write_page = at803x_write_page,
|
|
.get_features = at803x_get_features,
|
|
- .read_status = at803x_read_status,
|
|
+ .read_status = at8031_read_status,
|
|
.config_intr = at8031_config_intr,
|
|
.handle_interrupt = at803x_handle_interrupt,
|
|
.get_tunable = at803x_get_tunable,
|