Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Heiner Kallweit and committed by
David S. Miller
b52c018d 1878f0dc

+38 -94
+17 -30
drivers/net/phy/dp83867.c
··· 127 127 { 128 128 struct dp83867_private *dp83867 = 129 129 (struct dp83867_private *)phydev->priv; 130 - u16 val; 131 - 132 - val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4); 133 130 134 131 if (dp83867->port_mirroring == DP83867_PORT_MIRROING_EN) 135 - val |= DP83867_CFG4_PORT_MIRROR_EN; 132 + phy_set_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, 133 + DP83867_CFG4_PORT_MIRROR_EN); 136 134 else 137 - val &= ~DP83867_CFG4_PORT_MIRROR_EN; 138 - 139 - phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val); 140 - 135 + phy_clear_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, 136 + DP83867_CFG4_PORT_MIRROR_EN); 141 137 return 0; 142 138 } 143 139 ··· 218 222 } 219 223 220 224 /* RX_DV/RX_CTRL strapped in mode 1 or mode 2 workaround */ 221 - if (dp83867->rxctrl_strap_quirk) { 222 - val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4); 223 - val &= ~BIT(7); 224 - phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, val); 225 - } 225 + if (dp83867->rxctrl_strap_quirk) 226 + phy_clear_bits_mmd(phydev, DP83867_DEVADDR, DP83867_CFG4, 227 + BIT(7)); 226 228 227 229 if (phy_interface_is_rgmii(phydev)) { 228 230 val = phy_read(phydev, MII_DP83867_PHYCTRL); ··· 269 275 phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_RGMIIDCTL, 270 276 delay); 271 277 272 - if (dp83867->io_impedance >= 0) { 273 - val = phy_read_mmd(phydev, DP83867_DEVADDR, 274 - DP83867_IO_MUX_CFG); 275 - 276 - val &= ~DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL; 277 - val |= dp83867->io_impedance & 278 - DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL; 279 - 280 - phy_write_mmd(phydev, DP83867_DEVADDR, 281 - DP83867_IO_MUX_CFG, val); 282 - } 278 + if (dp83867->io_impedance >= 0) 279 + phy_modify_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG, 280 + DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL, 281 + dp83867->io_impedance & 282 + DP83867_IO_MUX_CFG_IO_IMPEDANCE_CTRL); 283 283 } 284 284 285 285 /* Enable Interrupt output INT_OE in CFG3 register */ ··· 287 299 dp83867_config_port_mirroring(phydev); 288 300 289 301 /* Clock output selection if muxing property is set */ 290 - if (dp83867->clk_output_sel != DP83867_CLK_O_SEL_REF_CLK) { 291 - val = phy_read_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG); 292 - val &= ~DP83867_IO_MUX_CFG_CLK_O_SEL_MASK; 293 - val |= (dp83867->clk_output_sel << DP83867_IO_MUX_CFG_CLK_O_SEL_SHIFT); 294 - phy_write_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG, val); 295 - } 302 + if (dp83867->clk_output_sel != DP83867_CLK_O_SEL_REF_CLK) 303 + phy_modify_mmd(phydev, DP83867_DEVADDR, DP83867_IO_MUX_CFG, 304 + DP83867_IO_MUX_CFG_CLK_O_SEL_MASK, 305 + dp83867->clk_output_sel << 306 + DP83867_IO_MUX_CFG_CLK_O_SEL_SHIFT); 296 307 297 308 return 0; 298 309 }
+4 -11
drivers/net/phy/dp83tc811.c
··· 144 144 phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG, 145 145 value); 146 146 } else { 147 - value = phy_read_mmd(phydev, DP83811_DEVADDR, 148 - MII_DP83811_WOL_CFG); 149 - value &= ~DP83811_WOL_EN; 150 - phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG, 151 - value); 147 + phy_clear_bits_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG, 148 + DP83811_WOL_EN); 152 149 } 153 150 154 151 return 0; ··· 325 328 326 329 static int dp83811_resume(struct phy_device *phydev) 327 330 { 328 - int value; 329 - 330 331 genphy_resume(phydev); 331 332 332 - value = phy_read_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG); 333 - 334 - phy_write_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG, value | 335 - DP83811_WOL_CLR_INDICATION); 333 + phy_set_bits_mmd(phydev, DP83811_DEVADDR, MII_DP83811_WOL_CFG, 334 + DP83811_WOL_CLR_INDICATION); 336 335 337 336 return 0; 338 337 }
+10 -28
drivers/net/phy/marvell10g.c
··· 58 58 char *hwmon_name; 59 59 }; 60 60 61 - static int mv3310_modify(struct phy_device *phydev, int devad, u16 reg, 62 - u16 mask, u16 bits) 63 - { 64 - int old, val, ret; 65 - 66 - old = phy_read_mmd(phydev, devad, reg); 67 - if (old < 0) 68 - return old; 69 - 70 - val = (old & ~mask) | (bits & mask); 71 - if (val == old) 72 - return 0; 73 - 74 - ret = phy_write_mmd(phydev, devad, reg, val); 75 - 76 - return ret < 0 ? ret : 1; 77 - } 78 - 79 61 #ifdef CONFIG_HWMON 80 62 static umode_t mv3310_hwmon_is_visible(const void *data, 81 63 enum hwmon_sensor_types type, ··· 141 159 return ret; 142 160 143 161 val = enable ? MV_V2_TEMP_CTRL_SAMPLE : MV_V2_TEMP_CTRL_DISABLE; 144 - ret = mv3310_modify(phydev, MDIO_MMD_VEND2, MV_V2_TEMP_CTRL, 145 - MV_V2_TEMP_CTRL_MASK, val); 162 + ret = phy_modify_mmd(phydev, MDIO_MMD_VEND2, MV_V2_TEMP_CTRL, 163 + MV_V2_TEMP_CTRL_MASK, val); 146 164 147 165 return ret < 0 ? ret : 0; 148 166 } ··· 345 363 linkmode_and(phydev->advertising, phydev->advertising, 346 364 phydev->supported); 347 365 348 - ret = mv3310_modify(phydev, MDIO_MMD_AN, MDIO_AN_ADVERTISE, 349 - ADVERTISE_ALL | ADVERTISE_100BASE4 | 350 - ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM, 351 - linkmode_adv_to_mii_adv_t(phydev->advertising)); 366 + ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MDIO_AN_ADVERTISE, 367 + ADVERTISE_ALL | ADVERTISE_100BASE4 | 368 + ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM, 369 + linkmode_adv_to_mii_adv_t(phydev->advertising)); 352 370 if (ret < 0) 353 371 return ret; 354 372 if (ret > 0) 355 373 changed = true; 356 374 357 375 reg = linkmode_adv_to_mii_ctrl1000_t(phydev->advertising); 358 - ret = mv3310_modify(phydev, MDIO_MMD_AN, MV_AN_CTRL1000, 359 - ADVERTISE_1000FULL | ADVERTISE_1000HALF, reg); 376 + ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MV_AN_CTRL1000, 377 + ADVERTISE_1000FULL | ADVERTISE_1000HALF, reg); 360 378 if (ret < 0) 361 379 return ret; 362 380 if (ret > 0) ··· 369 387 else 370 388 reg = 0; 371 389 372 - ret = mv3310_modify(phydev, MDIO_MMD_AN, MDIO_AN_10GBT_CTRL, 373 - MDIO_AN_10GBT_CTRL_ADV10G, reg); 390 + ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MDIO_AN_10GBT_CTRL, 391 + MDIO_AN_10GBT_CTRL_ADV10G, reg); 374 392 if (ret < 0) 375 393 return ret; 376 394 if (ret > 0)
+4 -17
drivers/net/phy/phy-c45.c
··· 75 75 */ 76 76 int genphy_c45_an_disable_aneg(struct phy_device *phydev) 77 77 { 78 - int val; 79 78 80 - val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1); 81 - if (val < 0) 82 - return val; 83 - 84 - val &= ~(MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART); 85 - 86 - return phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1, val); 79 + return phy_clear_bits_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1, 80 + MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART); 87 81 } 88 82 EXPORT_SYMBOL_GPL(genphy_c45_an_disable_aneg); 89 83 ··· 91 97 */ 92 98 int genphy_c45_restart_aneg(struct phy_device *phydev) 93 99 { 94 - int val; 95 - 96 - val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1); 97 - if (val < 0) 98 - return val; 99 - 100 - val |= MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART; 101 - 102 - return phy_write_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1, val); 100 + return phy_set_bits_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1, 101 + MDIO_AN_CTRL1_ENABLE | MDIO_AN_CTRL1_RESTART); 103 102 } 104 103 EXPORT_SYMBOL_GPL(genphy_c45_restart_aneg); 105 104
+3 -8
drivers/net/phy/phy.c
··· 1060 1060 if (!phy_check_valid(phydev->speed, phydev->duplex, common)) 1061 1061 goto eee_exit_err; 1062 1062 1063 - if (clk_stop_enable) { 1063 + if (clk_stop_enable) 1064 1064 /* Configure the PHY to stop receiving xMII 1065 1065 * clock while it is signaling LPI. 1066 1066 */ 1067 - int val = phy_read_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1); 1068 - if (val < 0) 1069 - return val; 1070 - 1071 - val |= MDIO_PCS_CTRL1_CLKSTOP_EN; 1072 - phy_write_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1, val); 1073 - } 1067 + phy_set_bits_mmd(phydev, MDIO_MMD_PCS, MDIO_CTRL1, 1068 + MDIO_PCS_CTRL1_CLKSTOP_EN); 1074 1069 1075 1070 return 0; /* EEE supported */ 1076 1071 }