aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/irq.c')
-rw-r--r--arch/powerpc/kernel/irq.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index d806b18d9ff9..a3351561d283 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -616,6 +616,30 @@ static int irq_setup_virq(struct irq_host *host, unsigned int virq,
616 return 0; 616 return 0;
617} 617}
618 618
619unsigned int irq_create_direct_mapping(struct irq_host *host)
620{
621 unsigned int virq;
622
623 if (host == NULL)
624 host = irq_default_host;
625
626 BUG_ON(host == NULL);
627 WARN_ON(host->revmap_type != IRQ_HOST_MAP_NOMAP);
628
629 virq = irq_alloc_virt(host, 1, 0);
630 if (virq == NO_IRQ) {
631 pr_debug("irq: create_direct virq allocation failed\n");
632 return NO_IRQ;
633 }
634
635 pr_debug("irq: create_direct obtained virq %d\n", virq);
636
637 if (irq_setup_virq(host, virq, virq))
638 return NO_IRQ;
639
640 return virq;
641}
642
619unsigned int irq_create_mapping(struct irq_host *host, 643unsigned int irq_create_mapping(struct irq_host *host,
620 irq_hw_number_t hwirq) 644 irq_hw_number_t hwirq)
621{ 645{