phy.h (c0f00d270eba3cba688dd62a7b1a742ad289b879) | phy.h (a87ae8a963bde755b0962bcc18db83d611f63e7a) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Framework and drivers for configuring and reading different PHYs 4 * Based on code in sungem_phy.c and (long-removed) gianfar_phy.c 5 * 6 * Author: Andy Fleming 7 * 8 * Copyright (c) 2004 Freescale Semiconductor, Inc. 9 */ 10 11#ifndef __PHY_H 12#define __PHY_H 13 14#include <linux/compiler.h> 15#include <linux/spinlock.h> 16#include <linux/ethtool.h> 17#include <linux/linkmode.h> 18#include <linux/mdio.h> 19#include <linux/mii.h> | 1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Framework and drivers for configuring and reading different PHYs 4 * Based on code in sungem_phy.c and (long-removed) gianfar_phy.c 5 * 6 * Author: Andy Fleming 7 * 8 * Copyright (c) 2004 Freescale Semiconductor, Inc. 9 */ 10 11#ifndef __PHY_H 12#define __PHY_H 13 14#include <linux/compiler.h> 15#include <linux/spinlock.h> 16#include <linux/ethtool.h> 17#include <linux/linkmode.h> 18#include <linux/mdio.h> 19#include <linux/mii.h> |
20#include <linux/mii_timestamper.h> |
|
20#include <linux/module.h> 21#include <linux/timer.h> 22#include <linux/workqueue.h> 23#include <linux/mod_devicetable.h> | 21#include <linux/module.h> 22#include <linux/timer.h> 23#include <linux/workqueue.h> 24#include <linux/mod_devicetable.h> |
25#include <linux/u64_stats_sync.h> |
|
24 25#include <linux/atomic.h> 26 27#define PHY_DEFAULT_FEATURES (SUPPORTED_Autoneg | \ 28 SUPPORTED_TP | \ 29 SUPPORTED_MII) 30 31#define PHY_10BT_FEATURES (SUPPORTED_10baseT_Half | \ --- 62 unchanged lines hidden (view full) --- 94 PHY_INTERFACE_MODE_XGMII, 95 PHY_INTERFACE_MODE_MOCA, 96 PHY_INTERFACE_MODE_QSGMII, 97 PHY_INTERFACE_MODE_TRGMII, 98 PHY_INTERFACE_MODE_1000BASEX, 99 PHY_INTERFACE_MODE_2500BASEX, 100 PHY_INTERFACE_MODE_RXAUI, 101 PHY_INTERFACE_MODE_XAUI, | 26 27#include <linux/atomic.h> 28 29#define PHY_DEFAULT_FEATURES (SUPPORTED_Autoneg | \ 30 SUPPORTED_TP | \ 31 SUPPORTED_MII) 32 33#define PHY_10BT_FEATURES (SUPPORTED_10baseT_Half | \ --- 62 unchanged lines hidden (view full) --- 96 PHY_INTERFACE_MODE_XGMII, 97 PHY_INTERFACE_MODE_MOCA, 98 PHY_INTERFACE_MODE_QSGMII, 99 PHY_INTERFACE_MODE_TRGMII, 100 PHY_INTERFACE_MODE_1000BASEX, 101 PHY_INTERFACE_MODE_2500BASEX, 102 PHY_INTERFACE_MODE_RXAUI, 103 PHY_INTERFACE_MODE_XAUI, |
102 /* 10GBASE-KR, XFI, SFI - single lane 10G Serdes */ 103 PHY_INTERFACE_MODE_10GKR, | 104 /* 10GBASE-R, XFI, SFI - single lane 10G Serdes */ 105 PHY_INTERFACE_MODE_10GBASER, |
104 PHY_INTERFACE_MODE_USXGMII, | 106 PHY_INTERFACE_MODE_USXGMII, |
107 /* 10GBASE-KR - with Clause 73 AN */ 108 PHY_INTERFACE_MODE_10GKR, |
|
105 PHY_INTERFACE_MODE_MAX, 106} phy_interface_t; 107 108/** 109 * phy_supported_speeds - return all speeds currently supported by a phy device 110 * @phy: The phy device to return supported speeds of. 111 * @speeds: buffer to store supported speeds in. 112 * @size: size of speeds buffer. --- 57 unchanged lines hidden (view full) --- 170 case PHY_INTERFACE_MODE_1000BASEX: 171 return "1000base-x"; 172 case PHY_INTERFACE_MODE_2500BASEX: 173 return "2500base-x"; 174 case PHY_INTERFACE_MODE_RXAUI: 175 return "rxaui"; 176 case PHY_INTERFACE_MODE_XAUI: 177 return "xaui"; | 109 PHY_INTERFACE_MODE_MAX, 110} phy_interface_t; 111 112/** 113 * phy_supported_speeds - return all speeds currently supported by a phy device 114 * @phy: The phy device to return supported speeds of. 115 * @speeds: buffer to store supported speeds in. 116 * @size: size of speeds buffer. --- 57 unchanged lines hidden (view full) --- 174 case PHY_INTERFACE_MODE_1000BASEX: 175 return "1000base-x"; 176 case PHY_INTERFACE_MODE_2500BASEX: 177 return "2500base-x"; 178 case PHY_INTERFACE_MODE_RXAUI: 179 return "rxaui"; 180 case PHY_INTERFACE_MODE_XAUI: 181 return "xaui"; |
178 case PHY_INTERFACE_MODE_10GKR: 179 return "10gbase-kr"; | 182 case PHY_INTERFACE_MODE_10GBASER: 183 return "10gbase-r"; |
180 case PHY_INTERFACE_MODE_USXGMII: 181 return "usxgmii"; | 184 case PHY_INTERFACE_MODE_USXGMII: 185 return "usxgmii"; |
186 case PHY_INTERFACE_MODE_10GKR: 187 return "10gbase-kr"; |
|
182 default: 183 return "unknown"; 184 } 185} 186 187 188#define PHY_INIT_TIMEOUT 100000 189#define PHY_FORCE_TIMEOUT 10 --- 12 unchanged lines hidden (view full) --- 202#define MII_REGADDR_C45_MASK GENMASK(15, 0) 203 204struct device; 205struct phylink; 206struct sfp_bus; 207struct sfp_upstream_ops; 208struct sk_buff; 209 | 188 default: 189 return "unknown"; 190 } 191} 192 193 194#define PHY_INIT_TIMEOUT 100000 195#define PHY_FORCE_TIMEOUT 10 --- 12 unchanged lines hidden (view full) --- 208#define MII_REGADDR_C45_MASK GENMASK(15, 0) 209 210struct device; 211struct phylink; 212struct sfp_bus; 213struct sfp_upstream_ops; 214struct sk_buff; 215 |
216struct mdio_bus_stats { 217 u64_stats_t transfers; 218 u64_stats_t errors; 219 u64_stats_t writes; 220 u64_stats_t reads; 221 /* Must be last, add new statistics above */ 222 struct u64_stats_sync syncp; 223}; 224 |
|
210/* 211 * The Bus class for PHYs. Devices which provide access to 212 * PHYs should register using this structure 213 */ 214struct mii_bus { 215 struct module *owner; 216 const char *name; 217 char id[MII_BUS_ID_SIZE]; 218 void *priv; 219 int (*read)(struct mii_bus *bus, int addr, int regnum); 220 int (*write)(struct mii_bus *bus, int addr, int regnum, u16 val); 221 int (*reset)(struct mii_bus *bus); | 225/* 226 * The Bus class for PHYs. Devices which provide access to 227 * PHYs should register using this structure 228 */ 229struct mii_bus { 230 struct module *owner; 231 const char *name; 232 char id[MII_BUS_ID_SIZE]; 233 void *priv; 234 int (*read)(struct mii_bus *bus, int addr, int regnum); 235 int (*write)(struct mii_bus *bus, int addr, int regnum, u16 val); 236 int (*reset)(struct mii_bus *bus); |
237 struct mdio_bus_stats stats[PHY_MAX_ADDR]; |
|
222 223 /* 224 * A lock to ensure that only one thing can read/write 225 * the MDIO bus at a time 226 */ 227 struct mutex mdio_lock; 228 229 struct device *parent; --- 92 unchanged lines hidden (view full) --- 322 * @devices_in_package: Bit vector of devices present. 323 * @device_ids: The device identifer for each present device. 324 */ 325struct phy_c45_device_ids { 326 u32 devices_in_package; 327 u32 device_ids[8]; 328}; 329 | 238 239 /* 240 * A lock to ensure that only one thing can read/write 241 * the MDIO bus at a time 242 */ 243 struct mutex mdio_lock; 244 245 struct device *parent; --- 92 unchanged lines hidden (view full) --- 338 * @devices_in_package: Bit vector of devices present. 339 * @device_ids: The device identifer for each present device. 340 */ 341struct phy_c45_device_ids { 342 u32 devices_in_package; 343 u32 device_ids[8]; 344}; 345 |
346struct macsec_context; 347struct macsec_ops; 348 |
|
330/* phy_device: An instance of a PHY 331 * 332 * drv: Pointer to the driver for this PHY instance 333 * phy_id: UID for this device found during discovery 334 * c45_ids: 802.3-c45 Device Identifers if is_c45. 335 * is_c45: Set to true if this phy uses clause 45 addressing. 336 * is_internal: Set to true if this phy is internal to a MAC. 337 * is_pseudo_fixed_link: Set to true if this phy is an Ethernet switch, etc. --- 6 unchanged lines hidden (view full) --- 344 * dev_flags: Device-specific flags used by the PHY driver. 345 * irq: IRQ number of the PHY's interrupt (-1 if none) 346 * phy_timer: The timer for handling the state machine 347 * sfp_bus_attached: flag indicating whether the SFP bus has been attached 348 * sfp_bus: SFP bus attached to this PHY's fiber port 349 * attached_dev: The attached enet driver's device instance ptr 350 * adjust_link: Callback for the enet controller to respond to 351 * changes in the link state. | 349/* phy_device: An instance of a PHY 350 * 351 * drv: Pointer to the driver for this PHY instance 352 * phy_id: UID for this device found during discovery 353 * c45_ids: 802.3-c45 Device Identifers if is_c45. 354 * is_c45: Set to true if this phy uses clause 45 addressing. 355 * is_internal: Set to true if this phy is internal to a MAC. 356 * is_pseudo_fixed_link: Set to true if this phy is an Ethernet switch, etc. --- 6 unchanged lines hidden (view full) --- 363 * dev_flags: Device-specific flags used by the PHY driver. 364 * irq: IRQ number of the PHY's interrupt (-1 if none) 365 * phy_timer: The timer for handling the state machine 366 * sfp_bus_attached: flag indicating whether the SFP bus has been attached 367 * sfp_bus: SFP bus attached to this PHY's fiber port 368 * attached_dev: The attached enet driver's device instance ptr 369 * adjust_link: Callback for the enet controller to respond to 370 * changes in the link state. |
371 * macsec_ops: MACsec offloading ops. |
|
352 * 353 * speed, duplex, pause, supported, advertising, lp_advertising, 354 * and autoneg are used like in mii_if_info 355 * 356 * interrupts currently only supports enabled or disabled, 357 * but could be changed in the future to support enabling 358 * and disabling specific interrupts 359 * --- 76 unchanged lines hidden (view full) --- 436 437 struct mutex lock; 438 439 /* This may be modified under the rtnl lock */ 440 bool sfp_bus_attached; 441 struct sfp_bus *sfp_bus; 442 struct phylink *phylink; 443 struct net_device *attached_dev; | 372 * 373 * speed, duplex, pause, supported, advertising, lp_advertising, 374 * and autoneg are used like in mii_if_info 375 * 376 * interrupts currently only supports enabled or disabled, 377 * but could be changed in the future to support enabling 378 * and disabling specific interrupts 379 * --- 76 unchanged lines hidden (view full) --- 456 457 struct mutex lock; 458 459 /* This may be modified under the rtnl lock */ 460 bool sfp_bus_attached; 461 struct sfp_bus *sfp_bus; 462 struct phylink *phylink; 463 struct net_device *attached_dev; |
464 struct mii_timestamper *mii_ts; |
|
444 445 u8 mdix; 446 u8 mdix_ctrl; 447 448 void (*phy_link_change)(struct phy_device *, bool up, bool do_carrier); 449 void (*adjust_link)(struct net_device *dev); | 465 466 u8 mdix; 467 u8 mdix_ctrl; 468 469 void (*phy_link_change)(struct phy_device *, bool up, bool do_carrier); 470 void (*adjust_link)(struct net_device *dev); |
471 472#if IS_ENABLED(CONFIG_MACSEC) 473 /* MACsec management functions */ 474 const struct macsec_ops *macsec_ops; 475#endif |
|
450}; 451#define to_phy_device(d) container_of(to_mdio_device(d), \ 452 struct phy_device, mdio) 453 454/* struct phy_driver: Driver structure for a particular PHY type 455 * 456 * driver_data: static driver data 457 * phy_id: The result of reading the UID registers of this PHY --- 83 unchanged lines hidden (view full) --- 541 void (*remove)(struct phy_device *phydev); 542 543 /* Returns true if this is a suitable driver for the given 544 * phydev. If NULL, matching is based on phy_id and 545 * phy_id_mask. 546 */ 547 int (*match_phy_device)(struct phy_device *phydev); 548 | 476}; 477#define to_phy_device(d) container_of(to_mdio_device(d), \ 478 struct phy_device, mdio) 479 480/* struct phy_driver: Driver structure for a particular PHY type 481 * 482 * driver_data: static driver data 483 * phy_id: The result of reading the UID registers of this PHY --- 83 unchanged lines hidden (view full) --- 567 void (*remove)(struct phy_device *phydev); 568 569 /* Returns true if this is a suitable driver for the given 570 * phydev. If NULL, matching is based on phy_id and 571 * phy_id_mask. 572 */ 573 int (*match_phy_device)(struct phy_device *phydev); 574 |
549 /* Handles ethtool queries for hardware time stamping. */ 550 int (*ts_info)(struct phy_device *phydev, struct ethtool_ts_info *ti); 551 552 /* Handles SIOCSHWTSTAMP ioctl for hardware time stamping. */ 553 int (*hwtstamp)(struct phy_device *phydev, struct ifreq *ifr); 554 555 /* 556 * Requests a Rx timestamp for 'skb'. If the skb is accepted, 557 * the phy driver promises to deliver it using netif_rx() as 558 * soon as a timestamp becomes available. One of the 559 * PTP_CLASS_ values is passed in 'type'. The function must 560 * return true if the skb is accepted for delivery. 561 */ 562 bool (*rxtstamp)(struct phy_device *dev, struct sk_buff *skb, int type); 563 564 /* 565 * Requests a Tx timestamp for 'skb'. The phy driver promises 566 * to deliver it using skb_complete_tx_timestamp() as soon as a 567 * timestamp becomes available. One of the PTP_CLASS_ values 568 * is passed in 'type'. 569 */ 570 void (*txtstamp)(struct phy_device *dev, struct sk_buff *skb, int type); 571 | |
572 /* Some devices (e.g. qnap TS-119P II) require PHY register changes to 573 * enable Wake on LAN, so set_wol is provided to be called in the 574 * ethernet driver's set_wol function. */ 575 int (*set_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); 576 577 /* See set_wol, but for checking whether Wake on LAN is enabled. */ 578 void (*get_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); 579 --- 352 unchanged lines hidden (view full) --- 932 * @phydev: the phy_device struct 933 */ 934static inline bool phy_polling_mode(struct phy_device *phydev) 935{ 936 return phydev->irq == PHY_POLL; 937} 938 939/** | 575 /* Some devices (e.g. qnap TS-119P II) require PHY register changes to 576 * enable Wake on LAN, so set_wol is provided to be called in the 577 * ethernet driver's set_wol function. */ 578 int (*set_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); 579 580 /* See set_wol, but for checking whether Wake on LAN is enabled. */ 581 void (*get_wol)(struct phy_device *dev, struct ethtool_wolinfo *wol); 582 --- 352 unchanged lines hidden (view full) --- 935 * @phydev: the phy_device struct 936 */ 937static inline bool phy_polling_mode(struct phy_device *phydev) 938{ 939 return phydev->irq == PHY_POLL; 940} 941 942/** |
943 * phy_has_hwtstamp - Tests whether a PHY time stamp configuration. 944 * @phydev: the phy_device struct 945 */ 946static inline bool phy_has_hwtstamp(struct phy_device *phydev) 947{ 948 return phydev && phydev->mii_ts && phydev->mii_ts->hwtstamp; 949} 950 951/** 952 * phy_has_rxtstamp - Tests whether a PHY supports receive time stamping. 953 * @phydev: the phy_device struct 954 */ 955static inline bool phy_has_rxtstamp(struct phy_device *phydev) 956{ 957 return phydev && phydev->mii_ts && phydev->mii_ts->rxtstamp; 958} 959 960/** 961 * phy_has_tsinfo - Tests whether a PHY reports time stamping and/or 962 * PTP hardware clock capabilities. 963 * @phydev: the phy_device struct 964 */ 965static inline bool phy_has_tsinfo(struct phy_device *phydev) 966{ 967 return phydev && phydev->mii_ts && phydev->mii_ts->ts_info; 968} 969 970/** 971 * phy_has_txtstamp - Tests whether a PHY supports transmit time stamping. 972 * @phydev: the phy_device struct 973 */ 974static inline bool phy_has_txtstamp(struct phy_device *phydev) 975{ 976 return phydev && phydev->mii_ts && phydev->mii_ts->txtstamp; 977} 978 979static inline int phy_hwtstamp(struct phy_device *phydev, struct ifreq *ifr) 980{ 981 return phydev->mii_ts->hwtstamp(phydev->mii_ts, ifr); 982} 983 984static inline bool phy_rxtstamp(struct phy_device *phydev, struct sk_buff *skb, 985 int type) 986{ 987 return phydev->mii_ts->rxtstamp(phydev->mii_ts, skb, type); 988} 989 990static inline int phy_ts_info(struct phy_device *phydev, 991 struct ethtool_ts_info *tsinfo) 992{ 993 return phydev->mii_ts->ts_info(phydev->mii_ts, tsinfo); 994} 995 996static inline void phy_txtstamp(struct phy_device *phydev, struct sk_buff *skb, 997 int type) 998{ 999 phydev->mii_ts->txtstamp(phydev->mii_ts, skb, type); 1000} 1001 1002/** |
|
940 * phy_is_internal - Convenience function for testing if a PHY is internal 941 * @phydev: the phy_device struct 942 */ 943static inline bool phy_is_internal(struct phy_device *phydev) 944{ 945 return phydev->is_internal; 946} 947 --- 135 unchanged lines hidden (view full) --- 1083 1084static inline void phy_unlock_mdio_bus(struct phy_device *phydev) 1085{ 1086 mutex_unlock(&phydev->mdio.bus->mdio_lock); 1087} 1088 1089void phy_attached_print(struct phy_device *phydev, const char *fmt, ...) 1090 __printf(2, 3); | 1003 * phy_is_internal - Convenience function for testing if a PHY is internal 1004 * @phydev: the phy_device struct 1005 */ 1006static inline bool phy_is_internal(struct phy_device *phydev) 1007{ 1008 return phydev->is_internal; 1009} 1010 --- 135 unchanged lines hidden (view full) --- 1146 1147static inline void phy_unlock_mdio_bus(struct phy_device *phydev) 1148{ 1149 mutex_unlock(&phydev->mdio.bus->mdio_lock); 1150} 1151 1152void phy_attached_print(struct phy_device *phydev, const char *fmt, ...) 1153 __printf(2, 3); |
1154char *phy_attached_info_irq(struct phy_device *phydev) 1155 __malloc; |
|
1091void phy_attached_info(struct phy_device *phydev); 1092 1093/* Clause 22 PHY */ 1094int genphy_read_abilities(struct phy_device *phydev); 1095int genphy_setup_forced(struct phy_device *phydev); 1096int genphy_restart_aneg(struct phy_device *phydev); | 1156void phy_attached_info(struct phy_device *phydev); 1157 1158/* Clause 22 PHY */ 1159int genphy_read_abilities(struct phy_device *phydev); 1160int genphy_setup_forced(struct phy_device *phydev); 1161int genphy_restart_aneg(struct phy_device *phydev); |
1162int genphy_check_and_restart_aneg(struct phy_device *phydev, bool restart); |
|
1097int genphy_config_eee_advert(struct phy_device *phydev); 1098int __genphy_config_aneg(struct phy_device *phydev, bool changed); 1099int genphy_aneg_done(struct phy_device *phydev); 1100int genphy_update_link(struct phy_device *phydev); 1101int genphy_read_lpa(struct phy_device *phydev); | 1163int genphy_config_eee_advert(struct phy_device *phydev); 1164int __genphy_config_aneg(struct phy_device *phydev, bool changed); 1165int genphy_aneg_done(struct phy_device *phydev); 1166int genphy_update_link(struct phy_device *phydev); 1167int genphy_read_lpa(struct phy_device *phydev); |
1168int genphy_read_status_fixed(struct phy_device *phydev); |
|
1102int genphy_read_status(struct phy_device *phydev); 1103int genphy_suspend(struct phy_device *phydev); 1104int genphy_resume(struct phy_device *phydev); 1105int genphy_loopback(struct phy_device *phydev, bool enable); 1106int genphy_soft_reset(struct phy_device *phydev); 1107 1108static inline int genphy_config_aneg(struct phy_device *phydev) 1109{ --- 60 unchanged lines hidden (view full) --- 1170void phy_mac_interrupt(struct phy_device *phydev); 1171void phy_start_machine(struct phy_device *phydev); 1172void phy_stop_machine(struct phy_device *phydev); 1173void phy_ethtool_ksettings_get(struct phy_device *phydev, 1174 struct ethtool_link_ksettings *cmd); 1175int phy_ethtool_ksettings_set(struct phy_device *phydev, 1176 const struct ethtool_link_ksettings *cmd); 1177int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd); | 1169int genphy_read_status(struct phy_device *phydev); 1170int genphy_suspend(struct phy_device *phydev); 1171int genphy_resume(struct phy_device *phydev); 1172int genphy_loopback(struct phy_device *phydev, bool enable); 1173int genphy_soft_reset(struct phy_device *phydev); 1174 1175static inline int genphy_config_aneg(struct phy_device *phydev) 1176{ --- 60 unchanged lines hidden (view full) --- 1237void phy_mac_interrupt(struct phy_device *phydev); 1238void phy_start_machine(struct phy_device *phydev); 1239void phy_stop_machine(struct phy_device *phydev); 1240void phy_ethtool_ksettings_get(struct phy_device *phydev, 1241 struct ethtool_link_ksettings *cmd); 1242int phy_ethtool_ksettings_set(struct phy_device *phydev, 1243 const struct ethtool_link_ksettings *cmd); 1244int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd); |
1245int phy_do_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd); 1246int phy_do_ioctl_running(struct net_device *dev, struct ifreq *ifr, int cmd); |
|
1178void phy_request_interrupt(struct phy_device *phydev); 1179void phy_free_interrupt(struct phy_device *phydev); 1180void phy_print_status(struct phy_device *phydev); 1181int phy_set_max_speed(struct phy_device *phydev, u32 max_speed); 1182void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode); 1183void phy_advertise_supported(struct phy_device *phydev); 1184void phy_support_sym_pause(struct phy_device *phydev); 1185void phy_support_asym_pause(struct phy_device *phydev); 1186void phy_set_sym_pause(struct phy_device *phydev, bool rx, bool tx, 1187 bool autoneg); 1188void phy_set_asym_pause(struct phy_device *phydev, bool rx, bool tx); 1189bool phy_validate_pause(struct phy_device *phydev, 1190 struct ethtool_pauseparam *pp); | 1247void phy_request_interrupt(struct phy_device *phydev); 1248void phy_free_interrupt(struct phy_device *phydev); 1249void phy_print_status(struct phy_device *phydev); 1250int phy_set_max_speed(struct phy_device *phydev, u32 max_speed); 1251void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode); 1252void phy_advertise_supported(struct phy_device *phydev); 1253void phy_support_sym_pause(struct phy_device *phydev); 1254void phy_support_asym_pause(struct phy_device *phydev); 1255void phy_set_sym_pause(struct phy_device *phydev, bool rx, bool tx, 1256 bool autoneg); 1257void phy_set_asym_pause(struct phy_device *phydev, bool rx, bool tx); 1258bool phy_validate_pause(struct phy_device *phydev, 1259 struct ethtool_pauseparam *pp); |
1260void phy_get_pause(struct phy_device *phydev, bool *tx_pause, bool *rx_pause); 1261void phy_resolve_pause(unsigned long *local_adv, unsigned long *partner_adv, 1262 bool *tx_pause, bool *rx_pause); |
|
1191 1192int phy_register_fixup(const char *bus_id, u32 phy_uid, u32 phy_uid_mask, 1193 int (*run)(struct phy_device *)); 1194int phy_register_fixup_for_id(const char *bus_id, 1195 int (*run)(struct phy_device *)); 1196int phy_register_fixup_for_uid(u32 phy_uid, u32 phy_uid_mask, 1197 int (*run)(struct phy_device *)); 1198 --- 116 unchanged lines hidden --- | 1263 1264int phy_register_fixup(const char *bus_id, u32 phy_uid, u32 phy_uid_mask, 1265 int (*run)(struct phy_device *)); 1266int phy_register_fixup_for_id(const char *bus_id, 1267 int (*run)(struct phy_device *)); 1268int phy_register_fixup_for_uid(u32 phy_uid, u32 phy_uid_mask, 1269 int (*run)(struct phy_device *)); 1270 --- 116 unchanged lines hidden --- |