Lines Matching full:irq
59 #define IRQ_PERMITTED(irq) (((1U << (irq)) & PERMITTED_IRQS) != 0) argument
61 /* IRQ count to disable an IRQ. */
77 * Returns true if this pin is enabled with a valid IRQ. Setting the
78 * register to a reserved IRQ causes interrupts to not be asserted as
117 pci_irq_reserve(int irq) in pci_irq_reserve() argument
120 assert(irq >= 0 && irq < NIRQ_COUNTS); in pci_irq_reserve()
122 assert(irq_counts[irq] == 0 || irq_counts[irq] == IRQ_DISABLED); in pci_irq_reserve()
123 irq_counts[irq] = IRQ_DISABLED; in pci_irq_reserve()
127 pci_irq_use(int irq) in pci_irq_use() argument
130 assert(irq >= 0 && irq < NIRQ_COUNTS); in pci_irq_use()
132 assert(irq_counts[irq] != IRQ_DISABLED); in pci_irq_use()
133 irq_counts[irq]++; in pci_irq_use()
161 pin = pi->pi_lintr.irq.pirq_pin; in pci_irq_assert()
169 pi->pi_lintr.irq.ioapic_irq); in pci_irq_assert()
175 vm_ioapic_assert_irq(pi->pi_vmctx, pi->pi_lintr.irq.ioapic_irq); in pci_irq_assert()
184 pin = pi->pi_lintr.irq.pirq_pin; in pci_irq_deassert()
192 pi->pi_lintr.irq.ioapic_irq); in pci_irq_deassert()
198 vm_ioapic_deassert_irq(pi->pi_vmctx, pi->pi_lintr.irq.ioapic_irq); in pci_irq_deassert()
205 int best_count, best_irq, best_pin, irq, pin; in pirq_alloc_pin() local
225 /* Second, route this pin to an IRQ. */ in pirq_alloc_pin()
229 for (irq = 0; irq < NIRQ_COUNTS; irq++) { in pirq_alloc_pin()
230 if (irq_counts[irq] == IRQ_DISABLED) in pirq_alloc_pin()
232 if (best_irq == -1 || irq_counts[irq] < best_count) { in pirq_alloc_pin()
233 best_irq = irq; in pirq_alloc_pin()
234 best_count = irq_counts[irq]; in pirq_alloc_pin()
254 pci_irq_route(struct pci_devinst *pi, struct pci_irq *irq) in pci_irq_route() argument
260 if (irq->ioapic_irq == 0) in pci_irq_route()
261 irq->ioapic_irq = ioapic_pci_alloc_irq(pi); in pci_irq_route()
262 assert(irq->ioapic_irq > 0); in pci_irq_route()
268 if (irq->pirq_pin == 0) in pci_irq_route()
269 irq->pirq_pin = pirq_alloc_pin(pi); in pci_irq_route()
270 assert(irq->pirq_pin > 0); in pci_irq_route()
279 int irq, pin; in pirq_dsdt() local
282 for (irq = 0; irq < NIRQ_COUNTS; irq++) { in pirq_dsdt()
283 if (!IRQ_PERMITTED(irq)) in pirq_dsdt()
286 asprintf(&irq_prs, "%d", irq); in pirq_dsdt()
289 asprintf(&irq_prs, "%s,%d", old, irq); in pirq_dsdt()
340 dsdt_line(" IRQ (Level, ActiveLow, Shared, )"); in pirq_dsdt()
345 dsdt_line(" IRQ (Level, ActiveLow, Shared, )"); in pirq_dsdt()