diff options
| author | 2016-10-17 11:18:09 -0400 | |
|---|---|---|
| committer | 2016-10-17 11:18:09 -0400 | |
| commit | 3aaf8630bf104906043211bafdf491a889972502 (patch) | |
| tree | 411be33c45d2f53b2c09e573062f5039cdf41b9f /include/linux | |
| parent | rds: Remove duplicate prefix from rds_conn_path_error use (diff) | |
| parent | arm: vf610: zii devel b: Add support for switch interrupts (diff) | |
Merge branch 'mv88e6xxx-interrupt-support'
Andrew Lunn says:
====================
Interrupt support for mv88e6xxx
This patchset add interrupt controller support to the MV88E6xxx. This
allows access to the interrupts the internal PHY generate. These
interrupts can then be associated to a PHY device in the device tree
and used by the PHY lib, rather than polling.
Since interrupt handling needs to make MDIO bus accesses, threaded
interrupts are used. The phylib needs to request the PHY interrupt
using the threaded IRQ API. This in term allows some simplification to
the code, in that the phylib interrupt handler can directly call
phy_change(), rather than use a work queue. The work queue is however
retained for the phy_mac_interrupt() call, which can be called in hard
interrupt context.
Since RFC v1:
Keep phy_mac_interrupt() callable in hard IRQ context.
The fix to trigger the phy state machine transitions on interrupts has
already been submitted, so is dropped from here.
Added back shared interrupts support.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/phy.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/include/linux/phy.h b/include/linux/phy.h index e25f1830fbcf..c47378c93607 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h @@ -343,7 +343,7 @@ struct phy_c45_device_ids { * giving up on the current attempt at acquiring a link * irq: IRQ number of the PHY's interrupt (-1 if none) * phy_timer: The timer for handling the state machine - * phy_queue: A work_queue for the interrupt + * phy_queue: A work_queue for the phy_mac_interrupt * attached_dev: The attached enet driver's device instance ptr * adjust_link: Callback for the enet controller to respond to * changes in the link state. @@ -802,7 +802,8 @@ 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_change(struct work_struct *work); +void phy_change(struct phy_device *phydev); +void phy_change_work(struct work_struct *work); void phy_mac_interrupt(struct phy_device *phydev, int new_link); void phy_start_machine(struct phy_device *phydev); void phy_stop_machine(struct phy_device *phydev); |
