diff options
author | Wolfram Sang <wsa@kernel.org> | 2022-09-27 21:33:37 +0200 |
---|---|---|
committer | Wolfram Sang <wsa@kernel.org> | 2022-09-27 21:33:37 +0200 |
commit | 85f17d677f6c40069287617630f202eb20fcfe36 (patch) | |
tree | a0a7de12ddf19068b14124d7a64d79cf697e0710 /drivers/net/phy/micrel.c | |
parent | macintosh/ams: Adapt declaration of ams_i2c_remove() to earlier change (diff) | |
parent | Linux 6.0-rc7 (diff) | |
download | linux-dev-85f17d677f6c40069287617630f202eb20fcfe36.tar.xz linux-dev-85f17d677f6c40069287617630f202eb20fcfe36.zip |
Merge branch 'master' into i2c/for-mergewindow
Diffstat (limited to 'drivers/net/phy/micrel.c')
-rw-r--r-- | drivers/net/phy/micrel.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/drivers/net/phy/micrel.c b/drivers/net/phy/micrel.c index 6f52b4fb6888..38234d7e14c5 100644 --- a/drivers/net/phy/micrel.c +++ b/drivers/net/phy/micrel.c @@ -2679,16 +2679,19 @@ static int lan8804_config_init(struct phy_device *phydev) static irqreturn_t lan8814_handle_interrupt(struct phy_device *phydev) { int irq_status, tsu_irq_status; + int ret = IRQ_NONE; irq_status = phy_read(phydev, LAN8814_INTS); - if (irq_status > 0 && (irq_status & LAN8814_INT_LINK)) - phy_trigger_machine(phydev); - if (irq_status < 0) { phy_error(phydev); return IRQ_NONE; } + if (irq_status & LAN8814_INT_LINK) { + phy_trigger_machine(phydev); + ret = IRQ_HANDLED; + } + while (1) { tsu_irq_status = lanphy_read_page_reg(phydev, 4, LAN8814_INTR_STS_REG); @@ -2697,12 +2700,15 @@ static irqreturn_t lan8814_handle_interrupt(struct phy_device *phydev) (tsu_irq_status & (LAN8814_INTR_STS_REG_1588_TSU0_ | LAN8814_INTR_STS_REG_1588_TSU1_ | LAN8814_INTR_STS_REG_1588_TSU2_ | - LAN8814_INTR_STS_REG_1588_TSU3_))) + LAN8814_INTR_STS_REG_1588_TSU3_))) { lan8814_handle_ptp_interrupt(phydev); - else + ret = IRQ_HANDLED; + } else { break; + } } - return IRQ_HANDLED; + + return ret; } static int lan8814_ack_interrupt(struct phy_device *phydev) |