Lines Matching refs:phydev

160 static void __set_phy_supported(struct phy_device *phydev, u32 max_speed)  in __set_phy_supported()  argument
162 phy_caps_linkmode_max_speed(max_speed, phydev->supported); in __set_phy_supported()
175 void phy_set_max_speed(struct phy_device *phydev, u32 max_speed) in phy_set_max_speed() argument
177 __set_phy_supported(phydev, max_speed); in phy_set_max_speed()
179 phy_advertise_supported(phydev); in phy_set_max_speed()
183 void of_set_phy_supported(struct phy_device *phydev) in of_set_phy_supported() argument
185 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_supported()
195 __set_phy_supported(phydev, max_speed); in of_set_phy_supported()
198 void of_set_phy_eee_broken(struct phy_device *phydev) in of_set_phy_eee_broken() argument
200 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_eee_broken()
201 unsigned long *modes = phydev->eee_disabled_modes; in of_set_phy_eee_broken()
229 void of_set_phy_timing_role(struct phy_device *phydev) in of_set_phy_timing_role() argument
231 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_timing_role()
244 phydev->master_slave_set = MASTER_SLAVE_CFG_MASTER_FORCE; in of_set_phy_timing_role()
246 phydev->master_slave_set = MASTER_SLAVE_CFG_SLAVE_FORCE; in of_set_phy_timing_role()
248 phydev->master_slave_set = MASTER_SLAVE_CFG_MASTER_PREFERRED; in of_set_phy_timing_role()
250 phydev->master_slave_set = MASTER_SLAVE_CFG_SLAVE_PREFERRED; in of_set_phy_timing_role()
252 phydev_warn(phydev, "Unknown master-slave mode %s\n", master); in of_set_phy_timing_role()
265 void phy_resolve_aneg_pause(struct phy_device *phydev) in phy_resolve_aneg_pause() argument
267 if (phydev->duplex == DUPLEX_FULL) { in phy_resolve_aneg_pause()
268 phydev->pause = linkmode_test_bit(ETHTOOL_LINK_MODE_Pause_BIT, in phy_resolve_aneg_pause()
269 phydev->lp_advertising); in phy_resolve_aneg_pause()
270 phydev->asym_pause = linkmode_test_bit( in phy_resolve_aneg_pause()
272 phydev->lp_advertising); in phy_resolve_aneg_pause()
285 void phy_resolve_aneg_linkmode(struct phy_device *phydev) in phy_resolve_aneg_linkmode() argument
290 linkmode_and(common, phydev->lp_advertising, phydev->advertising); in phy_resolve_aneg_linkmode()
294 phydev->speed = c->speed; in phy_resolve_aneg_linkmode()
295 phydev->duplex = c->duplex; in phy_resolve_aneg_linkmode()
298 phy_resolve_aneg_pause(phydev); in phy_resolve_aneg_linkmode()
311 void phy_check_downshift(struct phy_device *phydev) in phy_check_downshift() argument
317 phydev->downshifted_rate = 0; in phy_check_downshift()
319 if (phydev->autoneg == AUTONEG_DISABLE || in phy_check_downshift()
320 phydev->speed == SPEED_UNKNOWN) in phy_check_downshift()
323 linkmode_and(common, phydev->lp_advertising, phydev->advertising); in phy_check_downshift()
329 if (speed == SPEED_UNKNOWN || phydev->speed >= speed) in phy_check_downshift()
332 …phydev_warn(phydev, "Downshift occurred from negotiated speed %s to actual speed %s, check cabling… in phy_check_downshift()
333 phy_speed_to_str(speed), phy_speed_to_str(phydev->speed)); in phy_check_downshift()
335 phydev->downshifted_rate = 1; in phy_check_downshift()
338 static int phy_resolve_min_speed(struct phy_device *phydev, bool fdx_only) in phy_resolve_min_speed() argument
343 linkmode_and(common, phydev->lp_advertising, phydev->advertising); in phy_resolve_min_speed()
352 int phy_speed_down_core(struct phy_device *phydev) in phy_speed_down_core() argument
354 int min_common_speed = phy_resolve_min_speed(phydev, true); in phy_speed_down_core()
359 phy_caps_linkmode_max_speed(min_common_speed, phydev->advertising); in phy_speed_down_core()
409 int __phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) in __phy_read_mmd() argument
414 if (phydev->drv && phydev->drv->read_mmd) in __phy_read_mmd()
415 return phydev->drv->read_mmd(phydev, devad, regnum); in __phy_read_mmd()
417 return mmd_phy_read(phydev->mdio.bus, phydev->mdio.addr, in __phy_read_mmd()
418 phydev->is_c45, devad, regnum); in __phy_read_mmd()
431 int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) in phy_read_mmd() argument
435 phy_lock_mdio_bus(phydev); in phy_read_mmd()
436 ret = __phy_read_mmd(phydev, devad, regnum); in phy_read_mmd()
437 phy_unlock_mdio_bus(phydev); in phy_read_mmd()
453 int __phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) in __phy_write_mmd() argument
458 if (phydev->drv && phydev->drv->write_mmd) in __phy_write_mmd()
459 return phydev->drv->write_mmd(phydev, devad, regnum, val); in __phy_write_mmd()
461 return mmd_phy_write(phydev->mdio.bus, phydev->mdio.addr, in __phy_write_mmd()
462 phydev->is_c45, devad, regnum, val); in __phy_write_mmd()
476 int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) in phy_write_mmd() argument
480 phy_lock_mdio_bus(phydev); in phy_write_mmd()
481 ret = __phy_write_mmd(phydev, devad, regnum, val); in phy_write_mmd()
482 phy_unlock_mdio_bus(phydev); in phy_write_mmd()
503 int __phy_package_read_mmd(struct phy_device *phydev, in __phy_package_read_mmd() argument
507 int addr = phy_package_address(phydev, addr_offset); in __phy_package_read_mmd()
515 return mmd_phy_read(phydev->mdio.bus, addr, phydev->is_c45, devad, in __phy_package_read_mmd()
536 int __phy_package_write_mmd(struct phy_device *phydev, in __phy_package_write_mmd() argument
540 int addr = phy_package_address(phydev, addr_offset); in __phy_package_write_mmd()
548 return mmd_phy_write(phydev->mdio.bus, addr, phydev->is_c45, devad, in __phy_package_write_mmd()
566 int phy_modify_changed(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in phy_modify_changed() argument
570 phy_lock_mdio_bus(phydev); in phy_modify_changed()
571 ret = __phy_modify_changed(phydev, regnum, mask, set); in phy_modify_changed()
572 phy_unlock_mdio_bus(phydev); in phy_modify_changed()
589 int __phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in __phy_modify() argument
593 ret = __phy_modify_changed(phydev, regnum, mask, set); in __phy_modify()
610 int phy_modify(struct phy_device *phydev, u32 regnum, u16 mask, u16 set) in phy_modify() argument
614 phy_lock_mdio_bus(phydev); in phy_modify()
615 ret = __phy_modify(phydev, regnum, mask, set); in phy_modify()
616 phy_unlock_mdio_bus(phydev); in phy_modify()
635 int __phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, in __phy_modify_mmd_changed() argument
640 ret = __phy_read_mmd(phydev, devad, regnum); in __phy_modify_mmd_changed()
648 ret = __phy_write_mmd(phydev, devad, regnum, new); in __phy_modify_mmd_changed()
668 int phy_modify_mmd_changed(struct phy_device *phydev, int devad, u32 regnum, in phy_modify_mmd_changed() argument
673 phy_lock_mdio_bus(phydev); in phy_modify_mmd_changed()
674 ret = __phy_modify_mmd_changed(phydev, devad, regnum, mask, set); in phy_modify_mmd_changed()
675 phy_unlock_mdio_bus(phydev); in phy_modify_mmd_changed()
693 int __phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, in __phy_modify_mmd() argument
698 ret = __phy_modify_mmd_changed(phydev, devad, regnum, mask, set); in __phy_modify_mmd()
716 int phy_modify_mmd(struct phy_device *phydev, int devad, u32 regnum, in phy_modify_mmd() argument
721 phy_lock_mdio_bus(phydev); in phy_modify_mmd()
722 ret = __phy_modify_mmd(phydev, devad, regnum, mask, set); in phy_modify_mmd()
723 phy_unlock_mdio_bus(phydev); in phy_modify_mmd()
729 static int __phy_read_page(struct phy_device *phydev) in __phy_read_page() argument
731 …if (WARN_ONCE(!phydev->drv->read_page, "read_page callback not available, PHY driver not loaded?\n… in __phy_read_page()
734 return phydev->drv->read_page(phydev); in __phy_read_page()
737 static int __phy_write_page(struct phy_device *phydev, int page) in __phy_write_page() argument
739 …if (WARN_ONCE(!phydev->drv->write_page, "write_page callback not available, PHY driver not loaded?… in __phy_write_page()
742 return phydev->drv->write_page(phydev, page); in __phy_write_page()
753 int phy_save_page(struct phy_device *phydev) in phy_save_page() argument
755 phy_lock_mdio_bus(phydev); in phy_save_page()
756 return __phy_read_page(phydev); in phy_save_page()
771 int phy_select_page(struct phy_device *phydev, int page) in phy_select_page() argument
775 oldpage = ret = phy_save_page(phydev); in phy_select_page()
780 ret = __phy_write_page(phydev, page); in phy_select_page()
805 int phy_restore_page(struct phy_device *phydev, int oldpage, int ret) in phy_restore_page() argument
810 r = __phy_write_page(phydev, oldpage); in phy_restore_page()
822 phy_unlock_mdio_bus(phydev); in phy_restore_page()
836 int phy_read_paged(struct phy_device *phydev, int page, u32 regnum) in phy_read_paged() argument
840 oldpage = phy_select_page(phydev, page); in phy_read_paged()
842 ret = __phy_read(phydev, regnum); in phy_read_paged()
844 return phy_restore_page(phydev, oldpage, ret); in phy_read_paged()
857 int phy_write_paged(struct phy_device *phydev, int page, u32 regnum, u16 val) in phy_write_paged() argument
861 oldpage = phy_select_page(phydev, page); in phy_write_paged()
863 ret = __phy_write(phydev, regnum, val); in phy_write_paged()
865 return phy_restore_page(phydev, oldpage, ret); in phy_write_paged()
879 int phy_modify_paged_changed(struct phy_device *phydev, int page, u32 regnum, in phy_modify_paged_changed() argument
884 oldpage = phy_select_page(phydev, page); in phy_modify_paged_changed()
886 ret = __phy_modify_changed(phydev, regnum, mask, set); in phy_modify_paged_changed()
888 return phy_restore_page(phydev, oldpage, ret); in phy_modify_paged_changed()
902 int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, in phy_modify_paged() argument
905 int ret = phy_modify_paged_changed(phydev, page, regnum, mask, set); in phy_modify_paged()