Lines Matching +full:irq +full:- +full:start

1 // SPDX-License-Identifier: GPL-2.0-or-later
15 static volatile void __iomem *pci_intack; /* RO, gives us the irq vector */
26 * Acknowledge the IRQ using either the PCI host bridge's interrupt
29 * IBM and Motorola PReP boxes so we must use the int-ack feature on them.
33 int irq; in i8259_irq() local
36 /* Either int-ack or poll for the IRQ */ in i8259_irq()
38 irq = readb(pci_intack); in i8259_irq()
45 irq = inb(0x20) & 7; in i8259_irq()
46 if (irq == 2 ) { in i8259_irq()
52 irq = (inb(0xA0) & 7) + 8; in i8259_irq()
56 if (irq == 7) { in i8259_irq()
67 irq = 0; in i8259_irq()
68 } else if (irq == 0xff) in i8259_irq()
69 irq = 0; in i8259_irq()
73 return irq; in i8259_irq()
81 if (d->irq > 7) { in i8259_mask_and_ack_irq()
82 cached_A1 |= 1 << (d->irq-8); in i8259_mask_and_ack_irq()
85 outb(0x20, 0xA0); /* Non-specific EOI */ in i8259_mask_and_ack_irq()
86 outb(0x20, 0x20); /* Non-specific EOI to cascade */ in i8259_mask_and_ack_irq()
88 cached_21 |= 1 << d->irq; in i8259_mask_and_ack_irq()
91 outb(0x20, 0x20); /* Non-specific EOI */ in i8259_mask_and_ack_irq()
106 pr_debug("i8259_mask_irq(%d)\n", d->irq); in i8259_mask_irq()
109 if (d->irq < 8) in i8259_mask_irq()
110 cached_21 |= 1 << d->irq; in i8259_mask_irq()
112 cached_A1 |= 1 << (d->irq-8); in i8259_mask_irq()
113 i8259_set_irq_mask(d->irq); in i8259_mask_irq()
121 pr_debug("i8259_unmask_irq(%d)\n", d->irq); in i8259_unmask_irq()
124 if (d->irq < 8) in i8259_unmask_irq()
125 cached_21 &= ~(1 << d->irq); in i8259_unmask_irq()
127 cached_A1 &= ~(1 << (d->irq-8)); in i8259_unmask_irq()
128 i8259_set_irq_mask(d->irq); in i8259_unmask_irq()
142 .start = 0x20,
149 .start = 0xa0,
156 .start = 0x4d0,
217 * i8259_init - Initialize the legacy controller
221 * the active irq from the 8259
235 outb(0x11, 0x20); /* Start init sequence */ in i8259_init()
241 outb(0x11, 0xA0); /* Start init sequence */ in i8259_init()
266 printk(KERN_ERR "i8259: failed to allocate irq host !\n"); in i8259_init()