Merge tag 'defconfig-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / arch / mips / ath25 / ar2315.c
index 9dbed7b..76e43a7 100644 (file)
@@ -69,24 +69,24 @@ static void ar2315_misc_irq_handler(struct irq_desc *desc)
 {
        u32 pending = ar2315_rst_reg_read(AR2315_ISR) &
                      ar2315_rst_reg_read(AR2315_IMR);
-       unsigned nr, misc_irq = 0;
+       unsigned nr;
+       int ret = 0;
 
        if (pending) {
                struct irq_domain *domain = irq_desc_get_handler_data(desc);
 
                nr = __ffs(pending);
-               misc_irq = irq_find_mapping(domain, nr);
-       }
 
-       if (misc_irq) {
                if (nr == AR2315_MISC_IRQ_GPIO)
                        ar2315_rst_reg_write(AR2315_ISR, AR2315_ISR_GPIO);
                else if (nr == AR2315_MISC_IRQ_WATCHDOG)
                        ar2315_rst_reg_write(AR2315_ISR, AR2315_ISR_WD);
-               generic_handle_irq(misc_irq);
-       } else {
-               spurious_interrupt();
+
+               ret = generic_handle_domain_irq(domain, nr);
        }
+
+       if (!pending || ret)
+               spurious_interrupt();
 }
 
 static void ar2315_misc_irq_unmask(struct irq_data *d)