irq_create_acpi_mapping is not ACPI specific and assumes to use default domain. By passing NULL domain to irq_create_mapping we can obtain the same result.
Signed-off-by: Tomasz Nowicki tomasz.nowicki@linaro.org --- drivers/acpi/plat/arm-core.c | 15 ++++++++++++--- include/linux/acpi.h | 2 -- kernel/irq/irqdomain.c | 27 --------------------------- 3 files changed, 12 insertions(+), 32 deletions(-)
diff --git a/drivers/acpi/plat/arm-core.c b/drivers/acpi/plat/arm-core.c index 509b847..1c5cca7 100644 --- a/drivers/acpi/plat/arm-core.c +++ b/drivers/acpi/plat/arm-core.c @@ -453,7 +453,7 @@ EXPORT_SYMBOL_GPL(acpi_gsi_to_irq); */ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger, int polarity) { - unsigned int irq; + unsigned int virq; unsigned int irq_type;
/* @@ -484,8 +484,17 @@ int acpi_register_gsi(struct device *dev, u32 gsi, int trigger, int polarity) else irq_type = IRQ_TYPE_NONE;
- irq = irq_create_acpi_mapping(gsi, irq_type); - return irq; + /* Create mapping, use default domain */ + virq = irq_create_mapping(NULL, gsi); + if (!virq) + return virq; + + /* Set type if specified and different than the current one */ + if (irq_type != IRQ_TYPE_NONE && + irq_type != irq_get_trigger_type(virq)) + irq_set_irq_type(virq, irq_type); + + return virq; } EXPORT_SYMBOL_GPL(acpi_register_gsi);
diff --git a/include/linux/acpi.h b/include/linux/acpi.h index aeda856..a2dbe67 100644 --- a/include/linux/acpi.h +++ b/include/linux/acpi.h @@ -136,8 +136,6 @@ int acpi_map_lsapic(acpi_handle handle, int physid, int *pcpu); int acpi_unmap_lsapic(int cpu); #endif /* CONFIG_ACPI_HOTPLUG_CPU */
-unsigned int irq_create_acpi_mapping(irq_hw_number_t hwirq, - unsigned int type); int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base); int acpi_unregister_ioapic(acpi_handle handle, u32 gsi_base); void acpi_irq_stats_init(void); diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index c661552..cf68bb3 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -501,33 +501,6 @@ unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data) } EXPORT_SYMBOL_GPL(irq_create_of_mapping);
-#ifdef CONFIG_ACPI -unsigned int irq_create_acpi_mapping(irq_hw_number_t hwirq, - unsigned int type) -{ - struct irq_domain *domain; - unsigned int virq; - - domain = irq_default_domain; - if (!domain) { - pr_warn("no irq domain found !\n"); - return 0; - } - - /* Create mapping */ - virq = irq_create_mapping(domain, hwirq); - if (!virq) - return virq; - - /* Set type if specified and different than the current one */ - if (type != IRQ_TYPE_NONE && - type != irq_get_trigger_type(virq)) - irq_set_irq_type(virq, type); - return virq; -} -EXPORT_SYMBOL_GPL(irq_create_acpi_mapping); -#endif - /** * irq_dispose_mapping() - Unmap an interrupt * @virq: linux irq number of the interrupt to unmap