21 #include <linux/kernel.h>
22 #include <linux/bitops.h>
32 #define INTC_BLOCK_OFFSET 0x01000000
35 #define INTC_BASE PHYS_PERIPHERAL_BLOCK + \
39 #define INTC_ICR_SET (intc_virt + 0x0)
40 #define INTC_ICR_CLEAR (intc_virt + 0x8)
41 #define INTC_INTPRI_0 (intc_virt + 0x10)
42 #define INTC_INTSRC_0 (intc_virt + 0x50)
43 #define INTC_INTSRC_1 (intc_virt + 0x58)
44 #define INTC_INTREQ_0 (intc_virt + 0x60)
45 #define INTC_INTREQ_1 (intc_virt + 0x68)
46 #define INTC_INTENB_0 (intc_virt + 0x70)
47 #define INTC_INTENB_1 (intc_virt + 0x78)
48 #define INTC_INTDSB_0 (intc_virt + 0x80)
49 #define INTC_INTDSB_1 (intc_virt + 0x88)
51 #define INTC_ICR_IRLM 0x1
52 #define INTC_INTPRI_PREGS 8
53 #define INTC_INTPRI_PPREG 8
61 -1, -1, -1, -1, -1, -1, -1, -1,
62 -1, -1, -1, -1, -1, -1, -1, -1,
63 0, 0, 0, 0, 0, 1, 0, 0,
64 2, 0, 0, 3, 0, 0, 0, -1,
65 32, 33, 34, 35, 36, 37, 38, -1,
66 -1, -1, -1, 63, -1, -1, -1, -1,
67 -1, -1, 18, 19, 20, 21, 22, -1,
68 39, 40, 41, 42, -1, -1, -1, -1,
69 4, 5, 6, 7, -1, -1, -1, -1,
70 -1, -1, -1, -1, -1, -1, -1, -1,
71 12, 13, 14, 15, 16, 17, -1, -1,
72 -1, -1, -1, -1, -1, -1, -1, -1,
73 -1, -1, -1, -1, -1, -1, -1, -1,
74 -1, -1, -1, -1, -1, -1, -1, -1,
78 static unsigned long intc_virt;
83 unsigned int irq = data->
irq;
88 printk(
"Trying to use straight IRL0-3 with an encoding platform.\n");
95 bitmask = 1 << (irq - 32);
101 static void disable_intc_irq(
struct irq_data *data)
103 unsigned int irq = data->
irq;
112 bitmask = 1 << (irq - 32);
118 static struct irq_chip intc_irq_type = {
120 .irq_enable = enable_intc_irq,
121 .irq_disable = disable_intc_irq,
126 unsigned long long __dummy0, __dummy1=~0x00000000100000f0;
132 panic(
"Unable to remap INTC\n");
149 #ifdef CONFIG_SH_CAYMAN
165 printk(
"Trying to use encoded IRL0-3. IRLs unsupported.\n");
175 data |= platform_int_priority[
i] <<
194 "putcon %0, " __SR "\n\t"