Lines Matching +full:eee +full:- +full:broken +full:- +full:10 +full:gkr
1 // SPDX-License-Identifier: GPL-2.0+
10 #include "phylib-internal.h"
11 #include "phy-caps.h"
14 * phy_speed_to_str - Return a string representing the PHY link speed
27 return "10Mbps"; in phy_speed_to_str()
37 return "10Gbps"; in phy_speed_to_str()
61 return "Unsupported (update phy-core.c)"; in phy_speed_to_str()
67 * phy_duplex_to_str - Return string describing the duplex
79 return "Unsupported (update phy-core.c)"; in phy_duplex_to_str()
84 * phy_rate_matching_to_str - Return a string describing the rate matching
98 return "open-loop"; in phy_rate_matching_to_str()
100 return "Unsupported (update phy-core.c)"; in phy_rate_matching_to_str()
105 * phy_interface_num_ports - Return the number of links that can be carried by
106 * a given MAC-PHY physical link. Returns 0 if this is
162 phy_caps_linkmode_max_speed(max_speed, phydev->supported); in __set_phy_supported()
166 * phy_set_max_speed - Set the maximum speed the PHY should support
185 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_supported()
194 if (!of_property_read_u32(node, "max-speed", &max_speed)) in of_set_phy_supported()
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()
208 if (of_property_read_bool(node, "eee-broken-100tx")) in of_set_phy_eee_broken()
210 if (of_property_read_bool(node, "eee-broken-1000t")) in of_set_phy_eee_broken()
212 if (of_property_read_bool(node, "eee-broken-10gt")) in of_set_phy_eee_broken()
214 if (of_property_read_bool(node, "eee-broken-1000kx")) in of_set_phy_eee_broken()
216 if (of_property_read_bool(node, "eee-broken-10gkx4")) in of_set_phy_eee_broken()
218 if (of_property_read_bool(node, "eee-broken-10gkr")) in of_set_phy_eee_broken()
223 * of_set_phy_timing_role - Set the master/slave mode of the PHY
231 struct device_node *node = phydev->mdio.dev.of_node; in of_set_phy_timing_role()
240 if (of_property_read_string(node, "timing-role", &master)) in of_set_phy_timing_role()
243 if (strcmp(master, "forced-master") == 0) in of_set_phy_timing_role()
244 phydev->master_slave_set = MASTER_SLAVE_CFG_MASTER_FORCE; in of_set_phy_timing_role()
245 else if (strcmp(master, "forced-slave") == 0) in of_set_phy_timing_role()
246 phydev->master_slave_set = MASTER_SLAVE_CFG_SLAVE_FORCE; in of_set_phy_timing_role()
247 else if (strcmp(master, "preferred-master") == 0) in of_set_phy_timing_role()
248 phydev->master_slave_set = MASTER_SLAVE_CFG_MASTER_PREFERRED; in of_set_phy_timing_role()
249 else if (strcmp(master, "preferred-slave") == 0) 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()
256 * phy_resolve_aneg_pause - Determine pause autoneg results
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()
278 * phy_resolve_aneg_linkmode - resolve the advertisements into PHY settings
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()
303 * phy_check_downshift - check whether downshift occurred
309 * read_status callback and sets phydev->speed to the actual link speed.
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()
327 speed = c->speed; in phy_check_downshift()
329 if (speed == SPEED_UNKNOWN || phydev->speed >= speed) 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()
343 linkmode_and(common, phydev->lp_advertising, phydev->advertising); in phy_resolve_min_speed()
347 return c->speed; in phy_resolve_min_speed()
357 return -EINVAL; in phy_speed_down_core()
359 phy_caps_linkmode_max_speed(min_common_speed, phydev->advertising); in phy_speed_down_core()
401 * __phy_read_mmd - Convenience function for reading a register
412 return -EINVAL; in __phy_read_mmd()
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()
423 * phy_read_mmd - Convenience function for reading a register
444 * __phy_write_mmd - Convenience function for writing a register
456 return -EINVAL; in __phy_write_mmd()
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()
467 * phy_write_mmd - Convenience function for writing a register
489 * __phy_package_read_mmd - read MMD reg relative to PHY package base addr
513 return -EINVAL; in __phy_package_read_mmd()
515 return mmd_phy_read(phydev->mdio.bus, addr, phydev->is_c45, devad, in __phy_package_read_mmd()
521 * __phy_package_write_mmd - write MMD reg relative to PHY package base addr
546 return -EINVAL; in __phy_package_write_mmd()
548 return mmd_phy_write(phydev->mdio.bus, addr, phydev->is_c45, devad, in __phy_package_write_mmd()
554 * phy_modify_changed - Function for modifying a PHY register
579 * __phy_modify - Convenience function for modifying a PHY register
600 * phy_modify - Convenience function for modifying a given PHY register
623 * __phy_modify_mmd_changed - Function for modifying a register on MMD
655 * phy_modify_mmd_changed - Function for modifying a register on MMD
682 * __phy_modify_mmd - Convenience function for modifying a register on MMD
705 * phy_modify_mmd - Convenience function for modifying a register on MMD
731 …if (WARN_ONCE(!phydev->drv->read_page, "read_page callback not available, PHY driver not loaded?\n… in __phy_read_page()
732 return -EOPNOTSUPP; in __phy_read_page()
734 return phydev->drv->read_page(phydev); in __phy_read_page()
739 …if (WARN_ONCE(!phydev->drv->write_page, "write_page callback not available, PHY driver not loaded?… in __phy_write_page()
740 return -EOPNOTSUPP; in __phy_write_page()
742 return phydev->drv->write_page(phydev, page); in __phy_write_page()
746 * phy_save_page() - take the bus lock and save the current page
761 * phy_select_page() - take the bus lock, save the current page, and set a page
790 * phy_restore_page() - restore the page register and release the bus lock
829 * phy_read_paged() - Convenience function for reading a paged register
849 * phy_write_paged() - Convenience function for writing a paged register
870 * phy_modify_paged_changed() - Function for modifying a paged register
893 * phy_modify_paged() - Convenience function for modifying a paged register