19 #include <linux/kernel.h>
26 #include <asm/exception.h>
28 #include <mach/common.h>
30 #define HW_ICOLL_VECTOR 0x0000
31 #define HW_ICOLL_LEVELACK 0x0010
32 #define HW_ICOLL_CTRL 0x0020
33 #define HW_ICOLL_STAT_OFFSET 0x0070
34 #define HW_ICOLL_INTERRUPTn_SET(n) (0x0124 + (n) * 0x10)
35 #define HW_ICOLL_INTERRUPTn_CLR(n) (0x0128 + (n) * 0x10)
36 #define BM_ICOLL_INTERRUPTn_ENABLE 0x00000004
37 #define BV_ICOLL_LEVELACK_IRQLEVELACK__LEVEL0 0x1
39 #define ICOLL_NUM_IRQS 128
44 static void icoll_ack_irq(
struct irq_data *
d)
55 static void icoll_mask_irq(
struct irq_data *
d)
61 static void icoll_unmask_irq(
struct irq_data *d)
67 static struct irq_chip mxs_icoll_chip = {
68 .irq_ack = icoll_ack_irq,
69 .irq_mask = icoll_mask_irq,
70 .irq_unmask = icoll_unmask_irq,
89 static int icoll_irq_domain_map(
struct irq_domain *d,
unsigned int virq,
99 .map = icoll_irq_domain_map,
113 &icoll_irq_domain_ops,
NULL);