On 11/19/18 11:49 AM, Bin Meng wrote:
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...@gmail.com>
---

  arch/x86/lib/interrupts.c | 9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/arch/x86/lib/interrupts.c b/arch/x86/lib/interrupts.c
index 297067d..b1dc6e1 100644
--- a/arch/x86/lib/interrupts.c
+++ b/arch/x86/lib/interrupts.c
@@ -64,7 +64,9 @@ void irq_install_handler(int irq, interrupt_handler_t 
*handler, void *arg)
        irq_handlers[irq].arg = arg;
        irq_handlers[irq].count = 0;
+#if CONFIG_IS_ENABLED(I8259_PIC)
        unmask_irq(irq);
+#endif
if (status)
                enable_interrupts();
@@ -83,7 +85,9 @@ void irq_free_handler(int irq)
status = disable_interrupts(); +#if CONFIG_IS_ENABLED(I8259_PIC)
        mask_irq(irq);
+#endif
irq_handlers[irq].handler = NULL;
        irq_handlers[irq].arg = NULL;
@@ -104,14 +108,17 @@ void do_irq(int hw_irq)
        }
if (irq_handlers[irq].handler) {
+#if CONFIG_IS_ENABLED(I8259_PIC)
                mask_irq(irq);
+#endif
irq_handlers[irq].handler(irq_handlers[irq].arg);
                irq_handlers[irq].count++;
+#if CONFIG_IS_ENABLED(I8259_PIC)
                unmask_irq(irq);
                specific_eoi(irq);
-
+#endif
        } else {
                if ((irq & 7) != 7) {
                        spurious_irq_cnt++;

Tested-by: Hannes Schmelzer <oe5...@oevsv.at>

Hi Bin,
thanks for this patch. This is working for my board.

With this we may drop my X86-noirq patch.

cheers,
Hannes


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to