Commit c34d9452 authored by Christian Marangi's avatar Christian Marangi Committed by David S. Miller

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: default avatarChristian Marangi <ansuelsmth@gmail.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ea73e5ea
...@@ -1020,13 +1020,9 @@ static int at803x_read_specific_status(struct phy_device *phydev, ...@@ -1020,13 +1020,9 @@ static int at803x_read_specific_status(struct phy_device *phydev,
static int at803x_read_status(struct phy_device *phydev) static int at803x_read_status(struct phy_device *phydev)
{ {
struct at803x_priv *priv = phydev->priv;
struct at803x_ss_mask ss_mask = { 0 }; struct at803x_ss_mask ss_mask = { 0 };
int err, old_link = phydev->link; 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 */ /* Update the link, but return if there was an error */
err = genphy_update_link(phydev); err = genphy_update_link(phydev);
if (err) if (err)
...@@ -1618,6 +1614,17 @@ static int at8031_config_intr(struct phy_device *phydev) ...@@ -1618,6 +1614,17 @@ static int at8031_config_intr(struct phy_device *phydev)
return at803x_config_intr(phydev); 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 */ /* AR8031 and AR8035 share the same cable test get status reg */
static int at8031_cable_test_get_status(struct phy_device *phydev, static int at8031_cable_test_get_status(struct phy_device *phydev,
bool *finished) bool *finished)
...@@ -2281,7 +2288,7 @@ static struct phy_driver at803x_driver[] = { ...@@ -2281,7 +2288,7 @@ static struct phy_driver at803x_driver[] = {
.read_page = at803x_read_page, .read_page = at803x_read_page,
.write_page = at803x_write_page, .write_page = at803x_write_page,
.get_features = at803x_get_features, .get_features = at803x_get_features,
.read_status = at803x_read_status, .read_status = at8031_read_status,
.config_intr = at8031_config_intr, .config_intr = at8031_config_intr,
.handle_interrupt = at803x_handle_interrupt, .handle_interrupt = at803x_handle_interrupt,
.get_tunable = at803x_get_tunable, .get_tunable = at803x_get_tunable,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment