x86: Wrap calls to 8259 with CONFIG_I8259_PIC
authorBin Meng <bmeng.cn@gmail.com>
Fri, 30 Nov 2018 03:57:21 +0000 (19:57 -0800)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 10 Dec 2018 02:14:30 +0000 (10:14 +0800)
mask_irq(), unmask_irq() and specific_eoi() are provided by the
i8259 PIC driver and should be wrapped with CONFIG_I8259_PIC.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested-by: Hannes Schmelzer <oe5hpm@oevsv.at>
arch/x86/lib/interrupts.c

index 297067df71052b8098569fe695433f7fc4543361..39f8deaed137a37f31e12bf7e762fd93372bb01a 100644 (file)
@@ -64,7 +64,8 @@ void irq_install_handler(int irq, interrupt_handler_t *handler, void *arg)
        irq_handlers[irq].arg = arg;
        irq_handlers[irq].count = 0;
 
-       unmask_irq(irq);
+       if (CONFIG_IS_ENABLED(I8259_PIC))
+               unmask_irq(irq);
 
        if (status)
                enable_interrupts();
@@ -83,7 +84,8 @@ void irq_free_handler(int irq)
 
        status = disable_interrupts();
 
-       mask_irq(irq);
+       if (CONFIG_IS_ENABLED(I8259_PIC))
+               mask_irq(irq);
 
        irq_handlers[irq].handler = NULL;
        irq_handlers[irq].arg = NULL;
@@ -104,14 +106,16 @@ void do_irq(int hw_irq)
        }
 
        if (irq_handlers[irq].handler) {
-               mask_irq(irq);
+               if (CONFIG_IS_ENABLED(I8259_PIC))
+                       mask_irq(irq);
 
                irq_handlers[irq].handler(irq_handlers[irq].arg);
                irq_handlers[irq].count++;
 
-               unmask_irq(irq);
-               specific_eoi(irq);
-
+               if (CONFIG_IS_ENABLED(I8259_PIC)) {
+                       unmask_irq(irq);
+                       specific_eoi(irq);
+               }
        } else {
                if ((irq & 7) != 7) {
                        spurious_irq_cnt++;