summaryrefslogtreecommitdiff
path: root/drivers/net/phy/atheros.c
diff options
context:
space:
mode:
authorMichael Walle <michael@walle.cc>2020-05-07 00:11:56 +0200
committerTom Rini <trini@konsulko.com>2020-05-07 11:05:00 -0400
commit2b7721552a4cb4046a365a665fba3a3a848eb966 (patch)
tree8ca257a148b825eb2307c91a6765b5a72ab1f6b9 /drivers/net/phy/atheros.c
parentf6ae47be1ac5f3b16ac2b702ffa89e5709711ce5 (diff)
phy: atheros: move delay config to common function
Signed-off-by: Michael Walle <michael@walle.cc> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net/phy/atheros.c')
-rw-r--r--drivers/net/phy/atheros.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/drivers/net/phy/atheros.c b/drivers/net/phy/atheros.c
index 660dcd9491..22035c2496 100644
--- a/drivers/net/phy/atheros.c
+++ b/drivers/net/phy/atheros.c
@@ -94,19 +94,32 @@ static int ar8021_config(struct phy_device *phydev)
return 0;
}
-static int ar8031_config(struct phy_device *phydev)
+static int ar803x_delay_config(struct phy_device *phydev)
{
+ int ret;
+
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID)
- ar803x_enable_tx_delay(phydev, true);
+ ret = ar803x_enable_tx_delay(phydev, true);
else
- ar803x_enable_tx_delay(phydev, false);
+ ret = ar803x_enable_tx_delay(phydev, false);
if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
phydev->interface == PHY_INTERFACE_MODE_RGMII_ID)
- ar803x_enable_rx_delay(phydev, true);
+ ret = ar803x_enable_rx_delay(phydev, true);
else
- ar803x_enable_rx_delay(phydev, false);
+ ret = ar803x_enable_rx_delay(phydev, false);
+
+ return ret;
+}
+
+static int ar8031_config(struct phy_device *phydev)
+{
+ int ret;
+
+ ret = ar803x_delay_config(phydev);
+ if (ret < 0)
+ return ret;
phydev->supported = phydev->drv->features;
@@ -118,6 +131,7 @@ static int ar8031_config(struct phy_device *phydev)
static int ar8035_config(struct phy_device *phydev)
{
+ int ret;
int regval;
/* Configure CLK_25M output clock at 125 MHz */
@@ -126,17 +140,9 @@ static int ar8035_config(struct phy_device *phydev)
regval |= AR8035_CLK_25M_FREQ_125M;
phy_write_mmd(phydev, MDIO_MMD_AN, AR803x_CLK_25M_SEL_REG, regval);
- if ((phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) ||
- (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID))
- ar803x_enable_tx_delay(phydev, true);
- else
- ar803x_enable_tx_delay(phydev, false);
-
- if ((phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) ||
- (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID))
- ar803x_enable_rx_delay(phydev, true);
- else
- ar803x_enable_rx_delay(phydev, false);
+ ret = ar803x_delay_config(phydev);
+ if (ret < 0)
+ return ret;
phydev->supported = phydev->drv->features;