Lines Matching refs:phydev
200 void phy_resolve_aneg_linkmode(struct phy_device *phydev) in phy_resolve_aneg_linkmode() argument
202 u32 common = phydev->lp_advertising & phydev->advertising; in phy_resolve_aneg_linkmode()
205 phydev->speed = SPEED_10000; in phy_resolve_aneg_linkmode()
206 phydev->duplex = DUPLEX_FULL; in phy_resolve_aneg_linkmode()
208 phydev->speed = SPEED_1000; in phy_resolve_aneg_linkmode()
209 phydev->duplex = DUPLEX_FULL; in phy_resolve_aneg_linkmode()
211 phydev->speed = SPEED_1000; in phy_resolve_aneg_linkmode()
212 phydev->duplex = DUPLEX_HALF; in phy_resolve_aneg_linkmode()
214 phydev->speed = SPEED_100; in phy_resolve_aneg_linkmode()
215 phydev->duplex = DUPLEX_FULL; in phy_resolve_aneg_linkmode()
217 phydev->speed = SPEED_100; in phy_resolve_aneg_linkmode()
218 phydev->duplex = DUPLEX_HALF; in phy_resolve_aneg_linkmode()
220 phydev->speed = SPEED_10; in phy_resolve_aneg_linkmode()
221 phydev->duplex = DUPLEX_FULL; in phy_resolve_aneg_linkmode()
223 phydev->speed = SPEED_10; in phy_resolve_aneg_linkmode()
224 phydev->duplex = DUPLEX_HALF; in phy_resolve_aneg_linkmode()
227 if (phydev->duplex == DUPLEX_FULL) { in phy_resolve_aneg_linkmode()
228 phydev->pause = !!(phydev->lp_advertising & ADVERTISED_Pause); in phy_resolve_aneg_linkmode()
229 phydev->asym_pause = !!(phydev->lp_advertising & in phy_resolve_aneg_linkmode()
258 int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) in phy_read_mmd() argument
265 if (phydev->drv->read_mmd) { in phy_read_mmd()
266 val = phydev->drv->read_mmd(phydev, devad, regnum); in phy_read_mmd()
267 } else if (phydev->is_c45) { in phy_read_mmd()
270 val = mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, addr); in phy_read_mmd()
272 struct mii_bus *bus = phydev->mdio.bus; in phy_read_mmd()
273 int phy_addr = phydev->mdio.addr; in phy_read_mmd()
296 int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) in phy_write_mmd() argument
303 if (phydev->drv->write_mmd) { in phy_write_mmd()
304 ret = phydev->drv->write_mmd(phydev, devad, regnum, val); in phy_write_mmd()
305 } else if (phydev->is_c45) { in phy_write_mmd()
308 ret = mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, in phy_write_mmd()
311 struct mii_bus *bus = phydev->mdio.bus; in phy_write_mmd()
312 int phy_addr = phydev->mdio.addr; in phy_write_mmd()
337 int __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in __phy_modify() argument
341 ret = __phy_read(phydev, regnum); in __phy_modify()
345 ret = __phy_write(phydev, regnum, (ret & ~mask) | set); in __phy_modify()
362 int phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in phy_modify() argument
366 mutex_lock(&phydev->mdio.bus->mdio_lock); in phy_modify()
367 ret = __phy_modify(phydev, regnum, mask, set); in phy_modify()
368 mutex_unlock(&phydev->mdio.bus->mdio_lock); in phy_modify()
374 static int __phy_read_page(struct phy_device *phydev) in __phy_read_page() argument
376 return phydev->drv->read_page(phydev); in __phy_read_page()
379 static int __phy_write_page(struct phy_device *phydev, int page) in __phy_write_page() argument
381 return phydev->drv->write_page(phydev, page); in __phy_write_page()
392 int phy_save_page(struct phy_device *phydev) in phy_save_page() argument
394 mutex_lock(&phydev->mdio.bus->mdio_lock); in phy_save_page()
395 return __phy_read_page(phydev); in phy_save_page()
410 int phy_select_page(struct phy_device *phydev, int page) in phy_select_page() argument
414 oldpage = ret = phy_save_page(phydev); in phy_select_page()
419 ret = __phy_write_page(phydev, page); in phy_select_page()
444 int phy_restore_page(struct phy_device *phydev, int oldpage, int ret) in phy_restore_page() argument
449 r = __phy_write_page(phydev, oldpage); in phy_restore_page()
461 mutex_unlock(&phydev->mdio.bus->mdio_lock); in phy_restore_page()
475 int phy_read_paged(struct phy_device *phydev, int page, u32 regnum) in phy_read_paged() argument
479 oldpage = phy_select_page(phydev, page); in phy_read_paged()
481 ret = __phy_read(phydev, regnum); in phy_read_paged()
483 return phy_restore_page(phydev, oldpage, ret); in phy_read_paged()
496 int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val) in phy_write_paged() argument
500 oldpage = phy_select_page(phydev, page); in phy_write_paged()
502 ret = __phy_write(phydev, regnum, val); in phy_write_paged()
504 return phy_restore_page(phydev, oldpage, ret); in phy_write_paged()
518 int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, in phy_modify_paged() argument
523 oldpage = phy_select_page(phydev, page); in phy_modify_paged()
525 ret = __phy_modify(phydev, regnum, mask, set); in phy_modify_paged()
527 return phy_restore_page(phydev, oldpage, ret); in phy_modify_paged()