20 #include <linux/types.h>
22 #include <linux/kernel.h>
28 #include <asm/traps.h>
33 #define MCFSIM_ICR_LEVEL(l) ((l)<<3)
34 #define MCFSIM_ICR_PRI(p) (p)
50 static void intc_irq_mask(
struct irq_data *
d)
53 unsigned long imraddr;
62 imrbit = 0x1 << (irq & 0x1f);
68 static void intc_irq_unmask(
struct irq_data *
d)
71 unsigned long imraddr;
80 imrbit = 0x1 << (irq & 0x1f);
83 if ((irq & 0x20) == 0)
96 static void intc_irq_ack(
struct irq_data *d)
98 unsigned int irq = d->
irq;
112 static unsigned int intc_irq_startup(
struct irq_data *d)
115 unsigned long icraddr;
145 static int intc_irq_set_type(
struct irq_data *d,
unsigned int type)
147 unsigned int irq = d->
irq;
171 pa = (pa & ~(0x3 << (irq * 2))) | (tb << (irq * 2));
177 static struct irq_chip intc_irq_chip = {
179 .irq_startup = intc_irq_startup,
180 .irq_mask = intc_irq_mask,
181 .irq_unmask = intc_irq_unmask,
184 static struct irq_chip intc_irq_chip_edge_port = {
185 .name =
"CF-INTC-EP",
186 .irq_startup = intc_irq_startup,
187 .irq_mask = intc_irq_mask,
188 .irq_unmask = intc_irq_unmask,
189 .irq_ack = intc_irq_ack,
190 .irq_set_type = intc_irq_set_type,