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 ---