diff options
author | Alex Elder <elder@linaro.org> | 2021-07-27 14:46:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2021-07-27 21:02:06 +0100 |
commit | fe6a32797971db3d5770a5ddcd0cec15f561e501 (patch) | |
tree | d40255ca73951f6e0a0c562578bd7e2630f3bd9b | |
parent | e70e410f8e7c000b5f44ecba8a1b40d2a2b8c6f1 (diff) |
net: ipa: get rid of some unneeded IPA interrupt code
The pending IPA interrupts are checked by ipa_isr_thread(), and
interrupts are processed only if an enabled interrupt has a
condition pending. But ipa_interrupt_process_all() now makes the
same check, so the one in ipa_isr_thread() can just be skipped.
Also in ipa_isr_thread(), any interrupt conditions pending which are
not enabled are cleared. Here too, ipa_interrupt_process_all() now
clears such excess interrupt conditions, so ipa_isr_thread() doesn't
have to.
Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ipa/ipa_interrupt.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/drivers/net/ipa/ipa_interrupt.c b/drivers/net/ipa/ipa_interrupt.c index c12d0c33557c..d149e496ffa7 100644 --- a/drivers/net/ipa/ipa_interrupt.c +++ b/drivers/net/ipa/ipa_interrupt.c @@ -116,26 +116,11 @@ static irqreturn_t ipa_isr_thread(int irq, void *dev_id) { struct ipa_interrupt *interrupt = dev_id; struct ipa *ipa = interrupt->ipa; - u32 offset; - u32 mask; ipa_clock_get(ipa); - offset = ipa_reg_irq_stts_offset(ipa->version); - mask = ioread32(ipa->reg_virt + offset); - if (mask & interrupt->enabled) { - ipa_interrupt_process_all(interrupt); - goto out_clock_put; - } - - /* Nothing in the mask was supposed to cause an interrupt */ - offset = ipa_reg_irq_clr_offset(ipa->version); - iowrite32(mask, ipa->reg_virt + offset); - - dev_err(&ipa->pdev->dev, "%s: unexpected interrupt, mask 0x%08x\n", - __func__, mask); + ipa_interrupt_process_all(interrupt); -out_clock_put: ipa_clock_put(ipa); return IRQ_HANDLED; |