1
0
Fork 0

net: phy: make use of new MMD accessors

Make use of the new MMD accessors.

v2:
- fix SoB

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
hifive-unleashed-5.1
Heiner Kallweit 2019-02-06 07:38:43 +01:00 committed by David S. Miller
parent 1878f0dcbf
commit b52c018ddc
5 changed files with 38 additions and 94 deletions

View File

@ -127,17 +127,13 @@ static int dp83867_config_port_mirroring(struct phy_device *phydev)
{ {
struct dp83867_private *dp83867 = struct dp83867_private *dp83867 =
(struct dp83867_private *)phydev->priv; (struct dp83867_private *)phydev->priv;
u16 val;
val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4);
if (dp83867->port_mirroring == DP83867_PORT_MIRROING_EN) if (dp83867->port_mirroring == DP83867_PORT_MIRROING_EN)
val |= DP83867_CFG4_PORT_MIRROR_EN; phy_set_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4,
DP83867_CFG4_PORT_MIRROR_EN);
else else
val &= ~DP83867_CFG4_PORT_MIRROR_EN; phy_clear_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4,
DP83867_CFG4_PORT_MIRROR_EN);
phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val);
return 0; return 0;
} }
@ -222,11 +218,9 @@ static int dp83867_config_init(struct phy_device *phydev)
} }
/* RX_DV/RX_CTRL strapped in mode 1 or mode 2 workaround */ /* RX_DV/RX_CTRL strapped in mode 1 or mode 2 workaround */
if (dp83867->rxctrl_strap_quirk) { if (dp83867->rxctrl_strap_quirk)
val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4); phy_clear_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4,
val &= ~BIT(7); BIT(7));
phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val);
}
if (phy_interface_is_rgmii(phydev)) { if (phy_interface_is_rgmii(phydev)) {
val = phy_read(phydev, MII_DP83867_PHYCTRL); val = phy_read(phydev, MII_DP83867_PHYCTRL);
@ -275,17 +269,11 @@ static int dp83867_config_init(struct phy_device *phydev)
phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RGMIIDCTL, phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RGMIIDCTL,
delay); delay);
if (dp83867->io_impedance >= 0) { if (dp83867->io_impedance >= 0)
val = phy_read_mmd(phydev, DP83867_DEVADDR, phy_modify_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG,
DP83867_IO_MUX_CFG); DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL,
dp83867->io_impedance &
val &= ~DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL; DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL);
val |= dp83867->io_impedance &
DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL;
phy_write_mmd(phydev, DP83867_DEVADDR,
DP83867_IO_MUX_CFG, val);
}
} }
/* Enable Interrupt output INT_OE in CFG3 register */ /* Enable Interrupt output INT_OE in CFG3 register */
@ -299,12 +287,11 @@ static int dp83867_config_init(struct phy_device *phydev)
dp83867_config_port_mirroring(phydev); dp83867_config_port_mirroring(phydev);
/* Clock output selection if muxing property is set */ /* Clock output selection if muxing property is set */
if (dp83867->clk_output_sel != DP83867_CLK_O_SEL_REF_CLK) { if (dp83867->clk_output_sel != DP83867_CLK_O_SEL_REF_CLK)
val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG); phy_modify_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG,
val &= ~DP83867_IO_MUX_CFG_CLK_O_SEL_MASK; DP83867_IO_MUX_CFG_CLK_O_SEL_MASK,
val |= (dp83867->clk_output_sel << DP83867_IO_MUX_CFG_CLK_O_SEL_SHIFT); dp83867->clk_output_sel <<
phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG, val); DP83867_IO_MUX_CFG_CLK_O_SEL_SHIFT);
}
return 0; return 0;
} }

View File

@ -144,11 +144,8 @@ static int dp83811_set_wol(struct phy_device *phydev,
phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG, phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG,
value); value);
} else { } else {
value = phy_read_mmd(phydev, DP83811_DEVADDR, phy_clear_bits_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG,
MII_DP83811_WOL_CFG); DP83811_WOL_EN);
value &= ~DP83811_WOL_EN;
phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG,
value);
} }
return 0; return 0;
@ -328,14 +325,10 @@ static int dp83811_suspend(struct phy_device *phydev)
static int dp83811_resume(struct phy_device *phydev) static int dp83811_resume(struct phy_device *phydev)
{ {
int value;
genphy_resume(phydev); genphy_resume(phydev);
value = phy_read_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG); phy_set_bits_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG,
DP83811_WOL_CLR_INDICATION);
phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG, value |
DP83811_WOL_CLR_INDICATION);
return 0; return 0;
} }

View File

@ -58,24 +58,6 @@ struct mv3310_priv {
char *hwmon_name; char *hwmon_name;
}; };
static int mv3310_modify(struct phy_device *phydev, int devad, u16 reg,
u16 mask, u16 bits)
{
int old, val, ret;
old = phy_read_mmd(phydev, devad, reg);
if (old < 0)
return old;
val = (old & ~mask) | (bits & mask);
if (val == old)
return 0;
ret = phy_write_mmd(phydev, devad, reg, val);
return ret < 0 ? ret : 1;
}
#ifdef CONFIG_HWMON #ifdef CONFIG_HWMON
static umode_t mv3310_hwmon_is_visible(const void *data, static umode_t mv3310_hwmon_is_visible(const void *data,
enum hwmon_sensor_types type, enum hwmon_sensor_types type,
@ -159,8 +141,8 @@ static int mv3310_hwmon_config(struct phy_device *phydev, bool enable)
return ret; return ret;
val = enable ? MV_V2_TEMP_CTRL_SAMPLE : MV_V2_TEMP_CTRL_DISABLE; val = enable ? MV_V2_TEMP_CTRL_SAMPLE : MV_V2_TEMP_CTRL_DISABLE;
ret = mv3310_modify(phydev, MDIO_MMD_VEND2, MV_V2_TEMP_CTRL, ret = phy_modify_mmd(phydev, MDIO_MMD_VEND2, MV_V2_TEMP_CTRL,
MV_V2_TEMP_CTRL_MASK, val); MV_V2_TEMP_CTRL_MASK, val);
return ret < 0 ? ret : 0; return ret < 0 ? ret : 0;
} }
@ -363,18 +345,18 @@ static int mv3310_config_aneg(struct phy_device *phydev)
linkmode_and(phydev->advertising, phydev->advertising, linkmode_and(phydev->advertising, phydev->advertising,
phydev->supported); phydev->supported);
ret = mv3310_modify(phydev, MDIO_MMD_AN, MDIO_AN_ADVERTISE, ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MDIO_AN_ADVERTISE,
ADVERTISE_ALL | ADVERTISE_100BASE4 | ADVERTISE_ALL | ADVERTISE_100BASE4 |
ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM, ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM,
linkmode_adv_to_mii_adv_t(phydev->advertising)); linkmode_adv_to_mii_adv_t(phydev->advertising));
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret > 0) if (ret > 0)
changed = true; changed = true;
reg = linkmode_adv_to_mii_ctrl1000_t(phydev->advertising); reg = linkmode_adv_to_mii_ctrl1000_t(phydev->advertising);
ret = mv3310_modify(phydev, MDIO_MMD_AN, MV_AN_CTRL1000, ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MV_AN_CTRL1000,
ADVERTISE_1000FULL | ADVERTISE_1000HALF, reg); ADVERTISE_1000FULL | ADVERTISE_1000HALF, reg);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret > 0) if (ret > 0)
@ -387,8 +369,8 @@ static int mv3310_config_aneg(struct phy_device *phydev)
else else
reg = 0; reg = 0;
ret = mv3310_modify(phydev, MDIO_MMD_AN, MDIO_AN_10GBT_CTRL, ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MDIO_AN_10GBT_CTRL,
MDIO_AN_10GBT_CTRL_ADV10G, reg); MDIO_AN_10GBT_CTRL_ADV10G, reg);
if (ret < 0) if (ret < 0)
return ret; return ret;
if (ret > 0) if (ret > 0)

View File

@ -75,15 +75,9 @@ EXPORT_SYMBOL_GPL(genphy_c45_pma_setup_forced);
*/ */
int genphy_c45_an_disable_aneg(struct phy_device *phydev) int genphy_c45_an_disable_aneg(struct phy_device *phydev)
{ {
int val;
val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1); return phy_clear_bits_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1,
if (val < 0) MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART);
return val;
val &= ~(MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART);
return phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1, val);
} }
EXPORT_SYMBOL_GPL(genphy_c45_an_disable_aneg); EXPORT_SYMBOL_GPL(genphy_c45_an_disable_aneg);
@ -97,15 +91,8 @@ EXPORT_SYMBOL_GPL(genphy_c45_an_disable_aneg);
*/ */
int genphy_c45_restart_aneg(struct phy_device *phydev) int genphy_c45_restart_aneg(struct phy_device *phydev)
{ {
int val; return phy_set_bits_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1,
MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART);
val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1);
if (val < 0)
return val;
val |= MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART;
return phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1, val);
} }
EXPORT_SYMBOL_GPL(genphy_c45_restart_aneg); EXPORT_SYMBOL_GPL(genphy_c45_restart_aneg);

View File

@ -1060,17 +1060,12 @@ int phy_init_eee(struct phy_device *phydev, bool clk_stop_enable)
if (!phy_check_valid(phydev->speed, phydev->duplex, common)) if (!phy_check_valid(phydev->speed, phydev->duplex, common))
goto eee_exit_err; goto eee_exit_err;
if (clk_stop_enable) { if (clk_stop_enable)
/* Configure the PHY to stop receiving xMII /* Configure the PHY to stop receiving xMII
* clock while it is signaling LPI. * clock while it is signaling LPI.
*/ */
int val = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1); phy_set_bits_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1,
if (val < 0) MDIO_PCS_CTRL1_CLKSTOP_EN);
return val;
val |= MDIO_PCS_CTRL1_CLKSTOP_EN;
phy_write_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1, val);
}
return 0; /* EEE supported */ return 0; /* EEE supported */
} }