diff options
Diffstat (limited to 'arch/arm/kernel/irq.c')
| -rw-r--r-- | arch/arm/kernel/irq.c | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 896165096d6..9723d17b8f3 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c @@ -26,6 +26,7 @@  #include <linux/ioport.h>  #include <linux/interrupt.h>  #include <linux/irq.h> +#include <linux/irqchip.h>  #include <linux/random.h>  #include <linux/smp.h>  #include <linux/init.h> @@ -114,9 +115,22 @@ EXPORT_SYMBOL_GPL(set_irq_flags);  void __init init_IRQ(void)  { -	machine_desc->init_irq(); +	if (IS_ENABLED(CONFIG_OF) && !machine_desc->init_irq) +		irqchip_init(); +	else +		machine_desc->init_irq();  } +#ifdef CONFIG_MULTI_IRQ_HANDLER +void __init set_handle_irq(void (*handle_irq)(struct pt_regs *)) +{ +	if (handle_arch_irq) +		return; + +	handle_arch_irq = handle_irq; +} +#endif +  #ifdef CONFIG_SPARSE_IRQ  int __init arch_probe_nr_irqs(void)  {  |