|
@@ -20,47 +20,6 @@
|
|
|
#include <plat/orion-gpio.h>
|
|
|
#include <mach/bridge-regs.h>
|
|
|
|
|
|
-#ifdef CONFIG_MULTI_IRQ_HANDLER
|
|
|
-/*
|
|
|
- * Compiling with both non-DT and DT support enabled, will
|
|
|
- * break asm irq handler used by non-DT boards. Therefore,
|
|
|
- * we provide a C-style irq handler even for non-DT boards,
|
|
|
- * if MULTI_IRQ_HANDLER is set.
|
|
|
- *
|
|
|
- * Notes:
|
|
|
- * - this is prepared for Kirkwood and Dove only, update
|
|
|
- * accordingly if you add Orion5x or MV78x00.
|
|
|
- * - Orion5x uses different macro names and has only one
|
|
|
- * set of CAUSE/MASK registers.
|
|
|
- * - MV78x00 uses the same macro names but has a third
|
|
|
- * set of CAUSE/MASK registers.
|
|
|
- *
|
|
|
- */
|
|
|
-
|
|
|
-static void __iomem *orion_irq_base = IRQ_VIRT_BASE;
|
|
|
-
|
|
|
-asmlinkage void
|
|
|
-__exception_irq_entry orion_legacy_handle_irq(struct pt_regs *regs)
|
|
|
-{
|
|
|
- u32 stat;
|
|
|
-
|
|
|
- stat = readl_relaxed(orion_irq_base + IRQ_CAUSE_LOW_OFF);
|
|
|
- stat &= readl_relaxed(orion_irq_base + IRQ_MASK_LOW_OFF);
|
|
|
- if (stat) {
|
|
|
- unsigned int hwirq = __fls(stat);
|
|
|
- handle_IRQ(hwirq, regs);
|
|
|
- return;
|
|
|
- }
|
|
|
- stat = readl_relaxed(orion_irq_base + IRQ_CAUSE_HIGH_OFF);
|
|
|
- stat &= readl_relaxed(orion_irq_base + IRQ_MASK_HIGH_OFF);
|
|
|
- if (stat) {
|
|
|
- unsigned int hwirq = 32 + __fls(stat);
|
|
|
- handle_IRQ(hwirq, regs);
|
|
|
- return;
|
|
|
- }
|
|
|
-}
|
|
|
-#endif
|
|
|
-
|
|
|
void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr)
|
|
|
{
|
|
|
struct irq_chip_generic *gc;
|
|
@@ -78,10 +37,6 @@ void __init orion_irq_init(unsigned int irq_start, void __iomem *maskaddr)
|
|
|
ct->chip.irq_unmask = irq_gc_mask_set_bit;
|
|
|
irq_setup_generic_chip(gc, IRQ_MSK(32), IRQ_GC_INIT_MASK_CACHE,
|
|
|
IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE);
|
|
|
-
|
|
|
-#ifdef CONFIG_MULTI_IRQ_HANDLER
|
|
|
- set_handle_irq(orion_legacy_handle_irq);
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_OF
|