Lines Matching refs:phydev

164 static void __set_phy_supported(struct phy_device *phydev, u32 max_speed)  in __set_phy_supported()  argument
166 phy_caps_linkmode_max_speed(max_speed, phydev->supported); in __set_phy_supported()
179 void phy_set_max_speed(struct phy_device *phydev, u32 max_speed) in phy_set_max_speed() argument
181 __set_phy_supported(phydev, max_speed); in phy_set_max_speed()
183 phy_advertise_supported(phydev); in phy_set_max_speed()
187 void of_set_phy_supported(struct phy_device *phydev) in of_set_phy_supported() argument
189 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_supported()
199 __set_phy_supported(phydev, max_speed); in of_set_phy_supported()
202 void of_set_phy_eee_broken(struct phy_device *phydev) in of_set_phy_eee_broken() argument
204 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_eee_broken()
205 unsigned long *modes = phydev->eee_disabled_modes; in of_set_phy_eee_broken()
233 void of_set_phy_timing_role(struct phy_device *phydev) in of_set_phy_timing_role() argument
235 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_timing_role()
248 phydev->master_slave_set = MASTER_SLAVE_CFG_MASTER_FORCE; in of_set_phy_timing_role()
250 phydev->master_slave_set = MASTER_SLAVE_CFG_SLAVE_FORCE; in of_set_phy_timing_role()
252 phydev->master_slave_set = MASTER_SLAVE_CFG_MASTER_PREFERRED; in of_set_phy_timing_role()
254 phydev->master_slave_set = MASTER_SLAVE_CFG_SLAVE_PREFERRED; in of_set_phy_timing_role()
256 phydev_warn(phydev, "Unknown master-slave mode %s\n", master); in of_set_phy_timing_role()
269 void phy_resolve_aneg_pause(struct phy_device *phydev) in phy_resolve_aneg_pause() argument
271 if (phydev->duplex == DUPLEX_FULL) { in phy_resolve_aneg_pause()
272 phydev->pause = linkmode_test_bit(ETHTOOL_LINK_MODE_Pause_BIT, in phy_resolve_aneg_pause()
273 phydev->lp_advertising); in phy_resolve_aneg_pause()
274 phydev->asym_pause = linkmode_test_bit( in phy_resolve_aneg_pause()
276 phydev->lp_advertising); in phy_resolve_aneg_pause()
289 void phy_resolve_aneg_linkmode(struct phy_device *phydev) in phy_resolve_aneg_linkmode() argument
294 linkmode_and(common, phydev->lp_advertising, phydev->advertising); in phy_resolve_aneg_linkmode()
298 phydev->speed = c->speed; in phy_resolve_aneg_linkmode()
299 phydev->duplex = c->duplex; in phy_resolve_aneg_linkmode()
302 phy_resolve_aneg_pause(phydev); in phy_resolve_aneg_linkmode()
315 void phy_check_downshift(struct phy_device *phydev) in phy_check_downshift() argument
321 phydev->downshifted_rate = 0; in phy_check_downshift()
323 if (phydev->autoneg == AUTONEG_DISABLE || in phy_check_downshift()
324 phydev->speed == SPEED_UNKNOWN) in phy_check_downshift()
327 linkmode_and(common, phydev->lp_advertising, phydev->advertising); in phy_check_downshift()
333 if (speed == SPEED_UNKNOWN || phydev->speed >= speed) in phy_check_downshift()
336 …phydev_warn(phydev, "Downshift occurred from negotiated speed %s to actual speed %s, check cabling… in phy_check_downshift()
337 phy_speed_to_str(speed), phy_speed_to_str(phydev->speed)); in phy_check_downshift()
339 phydev->downshifted_rate = 1; in phy_check_downshift()
342 static int phy_resolve_min_speed(struct phy_device *phydev, bool fdx_only) in phy_resolve_min_speed() argument
347 linkmode_and(common, phydev->lp_advertising, phydev->advertising); in phy_resolve_min_speed()
356 int phy_speed_down_core(struct phy_device *phydev) in phy_speed_down_core() argument
358 int min_common_speed = phy_resolve_min_speed(phydev, true); in phy_speed_down_core()
363 phy_caps_linkmode_max_speed(min_common_speed, phydev->advertising); in phy_speed_down_core()
415 int __phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) in __phy_read_mmd() argument
420 if (phydev->drv && phydev->drv->read_mmd) in __phy_read_mmd()
421 return phydev->drv->read_mmd(phydev, devad, regnum); in __phy_read_mmd()
423 return mmd_phy_read(phydev->mdio.bus, phydev->mdio.addr, in __phy_read_mmd()
424 phydev->is_c45, devad, regnum); in __phy_read_mmd()
437 int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) in phy_read_mmd() argument
441 phy_lock_mdio_bus(phydev); in phy_read_mmd()
442 ret = __phy_read_mmd(phydev, devad, regnum); in phy_read_mmd()
443 phy_unlock_mdio_bus(phydev); in phy_read_mmd()
459 int __phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) in __phy_write_mmd() argument
464 if (phydev->drv && phydev->drv->write_mmd) in __phy_write_mmd()
465 return phydev->drv->write_mmd(phydev, devad, regnum, val); in __phy_write_mmd()
467 return mmd_phy_write(phydev->mdio.bus, phydev->mdio.addr, in __phy_write_mmd()
468 phydev->is_c45, devad, regnum, val); in __phy_write_mmd()
482 int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) in phy_write_mmd() argument
486 phy_lock_mdio_bus(phydev); in phy_write_mmd()
487 ret = __phy_write_mmd(phydev, devad, regnum, val); in phy_write_mmd()
488 phy_unlock_mdio_bus(phydev); in phy_write_mmd()
507 int phy_modify_changed(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in phy_modify_changed() argument
511 phy_lock_mdio_bus(phydev); in phy_modify_changed()
512 ret = __phy_modify_changed(phydev, regnum, mask, set); in phy_modify_changed()
513 phy_unlock_mdio_bus(phydev); in phy_modify_changed()
530 int __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in __phy_modify() argument
534 ret = __phy_modify_changed(phydev, regnum, mask, set); in __phy_modify()
551 int phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in phy_modify() argument
555 phy_lock_mdio_bus(phydev); in phy_modify()
556 ret = __phy_modify(phydev, regnum, mask, set); in phy_modify()
557 phy_unlock_mdio_bus(phydev); in phy_modify()
576 int __phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, in __phy_modify_mmd_changed() argument
581 ret = __phy_read_mmd(phydev, devad, regnum); in __phy_modify_mmd_changed()
589 ret = __phy_write_mmd(phydev, devad, regnum, new); in __phy_modify_mmd_changed()
609 int phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, in phy_modify_mmd_changed() argument
614 phy_lock_mdio_bus(phydev); in phy_modify_mmd_changed()
615 ret = __phy_modify_mmd_changed(phydev, devad, regnum, mask, set); in phy_modify_mmd_changed()
616 phy_unlock_mdio_bus(phydev); in phy_modify_mmd_changed()
634 int __phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, in __phy_modify_mmd() argument
639 ret = __phy_modify_mmd_changed(phydev, devad, regnum, mask, set); in __phy_modify_mmd()
657 int phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, in phy_modify_mmd() argument
662 phy_lock_mdio_bus(phydev); in phy_modify_mmd()
663 ret = __phy_modify_mmd(phydev, devad, regnum, mask, set); in phy_modify_mmd()
664 phy_unlock_mdio_bus(phydev); in phy_modify_mmd()
670 static int __phy_read_page(struct phy_device *phydev) in __phy_read_page() argument
672 …if (WARN_ONCE(!phydev->drv->read_page, "read_page callback not available, PHY driver not loaded?\n… in __phy_read_page()
675 return phydev->drv->read_page(phydev); in __phy_read_page()
678 static int __phy_write_page(struct phy_device *phydev, int page) in __phy_write_page() argument
680 …if (WARN_ONCE(!phydev->drv->write_page, "write_page callback not available, PHY driver not loaded?… in __phy_write_page()
683 return phydev->drv->write_page(phydev, page); in __phy_write_page()
694 int phy_save_page(struct phy_device *phydev) in phy_save_page() argument
696 phy_lock_mdio_bus(phydev); in phy_save_page()
697 return __phy_read_page(phydev); in phy_save_page()
712 int phy_select_page(struct phy_device *phydev, int page) in phy_select_page() argument
716 oldpage = ret = phy_save_page(phydev); in phy_select_page()
721 ret = __phy_write_page(phydev, page); in phy_select_page()
746 int phy_restore_page(struct phy_device *phydev, int oldpage, int ret) in phy_restore_page() argument
751 r = __phy_write_page(phydev, oldpage); in phy_restore_page()
763 phy_unlock_mdio_bus(phydev); in phy_restore_page()
777 int phy_read_paged(struct phy_device *phydev, int page, u32 regnum) in phy_read_paged() argument
781 oldpage = phy_select_page(phydev, page); in phy_read_paged()
783 ret = __phy_read(phydev, regnum); in phy_read_paged()
785 return phy_restore_page(phydev, oldpage, ret); in phy_read_paged()
798 int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val) in phy_write_paged() argument
802 oldpage = phy_select_page(phydev, page); in phy_write_paged()
804 ret = __phy_write(phydev, regnum, val); in phy_write_paged()
806 return phy_restore_page(phydev, oldpage, ret); in phy_write_paged()
820 int phy_modify_paged_changed(struct phy_device *phydev, int page, u32 regnum, in phy_modify_paged_changed() argument
825 oldpage = phy_select_page(phydev, page); in phy_modify_paged_changed()
827 ret = __phy_modify_changed(phydev, regnum, mask, set); in phy_modify_paged_changed()
829 return phy_restore_page(phydev, oldpage, ret); in phy_modify_paged_changed()
843 int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, in phy_modify_paged() argument
846 int ret = phy_modify_paged_changed(phydev, page, regnum, mask, set); in phy_modify_paged()