diff options
Diffstat (limited to 'include/linux/phy.h')
| -rw-r--r-- | include/linux/phy.h | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h index 3b051f761450..333b56d8f746 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h | |||
| @@ -48,6 +48,7 @@ extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_features) __ro_after_init; | |||
| 48 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_fibre_features) __ro_after_init; | 48 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_fibre_features) __ro_after_init; |
| 49 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_all_ports_features) __ro_after_init; | 49 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_gbit_all_ports_features) __ro_after_init; |
| 50 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_features) __ro_after_init; | 50 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_features) __ro_after_init; |
| 51 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_fec_features) __ro_after_init; | ||
| 51 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_init; | 52 | extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_init; |
| 52 | 53 | ||
| 53 | #define PHY_BASIC_FEATURES ((unsigned long *)&phy_basic_features) | 54 | #define PHY_BASIC_FEATURES ((unsigned long *)&phy_basic_features) |
| @@ -56,6 +57,7 @@ extern __ETHTOOL_DECLARE_LINK_MODE_MASK(phy_10gbit_full_features) __ro_after_ini | |||
| 56 | #define PHY_GBIT_FIBRE_FEATURES ((unsigned long *)&phy_gbit_fibre_features) | 57 | #define PHY_GBIT_FIBRE_FEATURES ((unsigned long *)&phy_gbit_fibre_features) |
| 57 | #define PHY_GBIT_ALL_PORTS_FEATURES ((unsigned long *)&phy_gbit_all_ports_features) | 58 | #define PHY_GBIT_ALL_PORTS_FEATURES ((unsigned long *)&phy_gbit_all_ports_features) |
| 58 | #define PHY_10GBIT_FEATURES ((unsigned long *)&phy_10gbit_features) | 59 | #define PHY_10GBIT_FEATURES ((unsigned long *)&phy_10gbit_features) |
| 60 | #define PHY_10GBIT_FEC_FEATURES ((unsigned long *)&phy_10gbit_fec_features) | ||
| 59 | #define PHY_10GBIT_FULL_FEATURES ((unsigned long *)&phy_10gbit_full_features) | 61 | #define PHY_10GBIT_FULL_FEATURES ((unsigned long *)&phy_10gbit_full_features) |
| 60 | 62 | ||
| 61 | extern const int phy_10_100_features_array[4]; | 63 | extern const int phy_10_100_features_array[4]; |
| @@ -467,8 +469,8 @@ struct phy_device { | |||
| 467 | * only works for PHYs with IDs which match this field | 469 | * only works for PHYs with IDs which match this field |
| 468 | * name: The friendly name of this PHY type | 470 | * name: The friendly name of this PHY type |
| 469 | * phy_id_mask: Defines the important bits of the phy_id | 471 | * phy_id_mask: Defines the important bits of the phy_id |
| 470 | * features: A list of features (speed, duplex, etc) supported | 472 | * features: A mandatory list of features (speed, duplex, etc) |
| 471 | * by this PHY | 473 | * supported by this PHY |
| 472 | * flags: A bitfield defining certain other features this PHY | 474 | * flags: A bitfield defining certain other features this PHY |
| 473 | * supports (like interrupts) | 475 | * supports (like interrupts) |
| 474 | * | 476 | * |
| @@ -672,26 +674,13 @@ phy_lookup_setting(int speed, int duplex, const unsigned long *mask, | |||
| 672 | size_t phy_speeds(unsigned int *speeds, size_t size, | 674 | size_t phy_speeds(unsigned int *speeds, size_t size, |
| 673 | unsigned long *mask); | 675 | unsigned long *mask); |
| 674 | 676 | ||
| 675 | static inline bool __phy_is_started(struct phy_device *phydev) | ||
| 676 | { | ||
| 677 | WARN_ON(!mutex_is_locked(&phydev->lock)); | ||
| 678 | |||
| 679 | return phydev->state >= PHY_UP; | ||
| 680 | } | ||
| 681 | |||
| 682 | /** | 677 | /** |
| 683 | * phy_is_started - Convenience function to check whether PHY is started | 678 | * phy_is_started - Convenience function to check whether PHY is started |
| 684 | * @phydev: The phy_device struct | 679 | * @phydev: The phy_device struct |
| 685 | */ | 680 | */ |
| 686 | static inline bool phy_is_started(struct phy_device *phydev) | 681 | static inline bool phy_is_started(struct phy_device *phydev) |
| 687 | { | 682 | { |
| 688 | bool started; | 683 | return phydev->state >= PHY_UP; |
| 689 | |||
| 690 | mutex_lock(&phydev->lock); | ||
| 691 | started = __phy_is_started(phydev); | ||
| 692 | mutex_unlock(&phydev->lock); | ||
| 693 | |||
| 694 | return started; | ||
| 695 | } | 684 | } |
| 696 | 685 | ||
| 697 | void phy_resolve_aneg_linkmode(struct phy_device *phydev); | 686 | void phy_resolve_aneg_linkmode(struct phy_device *phydev); |
| @@ -1003,6 +992,14 @@ static inline int genphy_no_soft_reset(struct phy_device *phydev) | |||
| 1003 | { | 992 | { |
| 1004 | return 0; | 993 | return 0; |
| 1005 | } | 994 | } |
| 995 | static inline int genphy_no_ack_interrupt(struct phy_device *phydev) | ||
| 996 | { | ||
| 997 | return 0; | ||
| 998 | } | ||
| 999 | static inline int genphy_no_config_intr(struct phy_device *phydev) | ||
| 1000 | { | ||
| 1001 | return 0; | ||
| 1002 | } | ||
| 1006 | int genphy_read_mmd_unsupported(struct phy_device *phdev, int devad, | 1003 | int genphy_read_mmd_unsupported(struct phy_device *phdev, int devad, |
| 1007 | u16 regnum); | 1004 | u16 regnum); |
| 1008 | int genphy_write_mmd_unsupported(struct phy_device *phdev, int devnum, | 1005 | int genphy_write_mmd_unsupported(struct phy_device *phdev, int devnum, |
