mirror of
https://xff.cz/git/u-boot/
synced 2025-09-03 01:32:47 +02:00
x86: Wrap calls to 8259 with CONFIG_I8259_PIC
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>
This commit is contained in:
@@ -64,7 +64,8 @@ void irq_install_handler(int irq, interrupt_handler_t *handler, void *arg)
|
|||||||
irq_handlers[irq].arg = arg;
|
irq_handlers[irq].arg = arg;
|
||||||
irq_handlers[irq].count = 0;
|
irq_handlers[irq].count = 0;
|
||||||
|
|
||||||
unmask_irq(irq);
|
if (CONFIG_IS_ENABLED(I8259_PIC))
|
||||||
|
unmask_irq(irq);
|
||||||
|
|
||||||
if (status)
|
if (status)
|
||||||
enable_interrupts();
|
enable_interrupts();
|
||||||
@@ -83,7 +84,8 @@ void irq_free_handler(int irq)
|
|||||||
|
|
||||||
status = disable_interrupts();
|
status = disable_interrupts();
|
||||||
|
|
||||||
mask_irq(irq);
|
if (CONFIG_IS_ENABLED(I8259_PIC))
|
||||||
|
mask_irq(irq);
|
||||||
|
|
||||||
irq_handlers[irq].handler = NULL;
|
irq_handlers[irq].handler = NULL;
|
||||||
irq_handlers[irq].arg = NULL;
|
irq_handlers[irq].arg = NULL;
|
||||||
@@ -104,14 +106,16 @@ void do_irq(int hw_irq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (irq_handlers[irq].handler) {
|
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].handler(irq_handlers[irq].arg);
|
||||||
irq_handlers[irq].count++;
|
irq_handlers[irq].count++;
|
||||||
|
|
||||||
unmask_irq(irq);
|
if (CONFIG_IS_ENABLED(I8259_PIC)) {
|
||||||
specific_eoi(irq);
|
unmask_irq(irq);
|
||||||
|
specific_eoi(irq);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((irq & 7) != 7) {
|
if ((irq & 7) != 7) {
|
||||||
spurious_irq_cnt++;
|
spurious_irq_cnt++;
|
||||||
|
Reference in New Issue
Block a user