arm64: Use irqchip_init() for interrupt controller initialisation
This patch uses the generic irqchip_init() function for initialising the interrupt controller on arm64. It also adds several definitions required by the ARM GIC irqchip driver but does not enable ARM_GIC yet. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
This commit is contained in:
Родитель
a9a193ffe5
Коммит
e851b58cb7
|
@ -19,5 +19,6 @@
|
|||
#define __ASM_EXCEPTION_H
|
||||
|
||||
#define __exception __attribute__((section(".exception.text")))
|
||||
#define __exception_irq_entry __exception
|
||||
|
||||
#endif /* __ASM_EXCEPTION_H */
|
||||
|
|
|
@ -49,4 +49,9 @@ static inline void ack_bad_irq(unsigned int irq)
|
|||
|
||||
extern void handle_IRQ(unsigned int, struct pt_regs *);
|
||||
|
||||
/*
|
||||
* No arch-specific IRQ flags.
|
||||
*/
|
||||
#define set_irq_flags(irq, flags)
|
||||
|
||||
#endif /* __ASM_HARDIRQ_H */
|
||||
|
|
|
@ -4,5 +4,6 @@
|
|||
#include <asm-generic/irq.h>
|
||||
|
||||
extern void (*handle_arch_irq)(struct pt_regs *);
|
||||
extern void set_handle_irq(void (*handle_irq)(struct pt_regs *));
|
||||
|
||||
#endif
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include <linux/irq.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/irqchip.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/ratelimit.h>
|
||||
|
||||
|
@ -67,18 +67,17 @@ void handle_IRQ(unsigned int irq, struct pt_regs *regs)
|
|||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
/*
|
||||
* Interrupt controllers supported by the kernel.
|
||||
*/
|
||||
static const struct of_device_id intctrl_of_match[] __initconst = {
|
||||
/* IRQ controllers { .compatible, .data } info to go here */
|
||||
{}
|
||||
};
|
||||
void __init set_handle_irq(void (*handle_irq)(struct pt_regs *))
|
||||
{
|
||||
if (handle_arch_irq)
|
||||
return;
|
||||
|
||||
handle_arch_irq = handle_irq;
|
||||
}
|
||||
|
||||
void __init init_IRQ(void)
|
||||
{
|
||||
of_irq_init(intctrl_of_match);
|
||||
|
||||
irqchip_init();
|
||||
if (!handle_arch_irq)
|
||||
panic("No interrupt controller found.");
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче