forked from Openwrt/openwrt
8a9273d51e
Copy backport, hack, pending patch and config from 6.1 to 6.6. Signed-off-by: Weijie Gao <hackpascal@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,
|