summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-05-30 15:02:33 -0700
committerDavid S. Miller <davem@davemloft.net>2019-05-30 15:02:33 -0700
commit655887fe39273cb3c86d25b245bce25a85935f82 (patch)
tree7d7ec060b20abfcf99fae544c2cb9c392dc0e2bd /include/linux
parent8e2ea3ea962535c64800e82e03e3e1b6cfd9c64f (diff)
parent97b33bdf9bddb6bebc2e87148df3e30aa7a13b2d (diff)
downloadcachepc-linux-655887fe39273cb3c86d25b245bce25a85935f82.tar.gz
cachepc-linux-655887fe39273cb3c86d25b245bce25a85935f82.zip
Merge branch 'complex-c45-phys'
Heiner Kallweit says: ==================== net: phy: improve handling of more complex C45 PHY's This series tries to address few problematic aspects raised by Russell. Concrete example is the Marvell 88x3310, the changes should be helpful for other complex C45 PHY's too. v2: - added patch enabling interrupts also if phylib state machine isn't started - removed patch dealing with the double link status read This one needs little bit more thinking and will go separately. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/phy.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 7180b1d1e5e3..dc4b51060ebc 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -188,7 +188,6 @@ static inline const char *phy_modes(phy_interface_t interface)
#define PHY_INIT_TIMEOUT 100000
-#define PHY_STATE_TIME 1
#define PHY_FORCE_TIMEOUT 10
#define PHY_MAX_ADDR 32
@@ -537,6 +536,9 @@ struct phy_driver {
*/
int (*did_interrupt)(struct phy_device *phydev);
+ /* Override default interrupt handling */
+ int (*handle_interrupt)(struct phy_device *phydev);
+
/* Clears up any memory if needed */
void (*remove)(struct phy_device *phydev);
@@ -1137,6 +1139,7 @@ int phy_driver_register(struct phy_driver *new_driver, struct module *owner);
int phy_drivers_register(struct phy_driver *new_driver, int n,
struct module *owner);
void phy_state_machine(struct work_struct *work);
+void phy_queue_state_machine(struct phy_device *phydev, unsigned long jiffies);
void phy_mac_interrupt(struct phy_device *phydev);
void phy_start_machine(struct phy_device *phydev);
void phy_stop_machine(struct phy_device *phydev);
@@ -1147,6 +1150,7 @@ int phy_ethtool_ksettings_set(struct phy_device *phydev,
const struct ethtool_link_ksettings *cmd);
int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd);
void phy_request_interrupt(struct phy_device *phydev);
+void phy_free_interrupt(struct phy_device *phydev);
void phy_print_status(struct phy_device *phydev);
int phy_set_max_speed(struct phy_device *phydev, u32 max_speed);
void phy_remove_link_mode(struct phy_device *phydev, u32 link_mode);