diff options
Diffstat (limited to 'arch/sh/kernel/cpu/irq/intc-sh5.c')
-rw-r--r-- | arch/sh/kernel/cpu/irq/intc-sh5.c | 36 |
1 files changed, 3 insertions, 33 deletions
diff --git a/arch/sh/kernel/cpu/irq/intc-sh5.c b/arch/sh/kernel/cpu/irq/intc-sh5.c index 726f0335da76..6c092f1f5557 100644 --- a/arch/sh/kernel/cpu/irq/intc-sh5.c +++ b/arch/sh/kernel/cpu/irq/intc-sh5.c | |||
@@ -84,7 +84,7 @@ static void disable_intc_irq(unsigned int irq); | |||
84 | static void mask_and_ack_intc(unsigned int); | 84 | static void mask_and_ack_intc(unsigned int); |
85 | static void end_intc_irq(unsigned int irq); | 85 | static void end_intc_irq(unsigned int irq); |
86 | 86 | ||
87 | static struct hw_interrupt_type intc_irq_type = { | 87 | static struct irq_chip intc_irq_type = { |
88 | .typename = "INTC", | 88 | .typename = "INTC", |
89 | .startup = startup_intc_irq, | 89 | .startup = startup_intc_irq, |
90 | .shutdown = shutdown_intc_irq, | 90 | .shutdown = shutdown_intc_irq, |
@@ -152,43 +152,13 @@ static void end_intc_irq(unsigned int irq) | |||
152 | enable_intc_irq(irq); | 152 | enable_intc_irq(irq); |
153 | } | 153 | } |
154 | 154 | ||
155 | /* For future use, if we ever support IRLM=0) */ | ||
156 | void make_intc_irq(unsigned int irq) | ||
157 | { | ||
158 | disable_irq_nosync(irq); | ||
159 | irq_desc[irq].chip = &intc_irq_type; | ||
160 | disable_intc_irq(irq); | ||
161 | } | ||
162 | |||
163 | #if defined(CONFIG_PROC_FS) && defined(CONFIG_SYSCTL) | ||
164 | static int IRQ_to_vectorN[NR_INTC_IRQS] = { | ||
165 | 0x12, 0x15, 0x18, 0x1B, 0x40, 0x41, 0x42, 0x43, /* 0- 7 */ | ||
166 | -1, -1, -1, -1, 0x50, 0x51, 0x52, 0x53, /* 8-15 */ | ||
167 | 0x54, 0x55, 0x32, 0x33, 0x34, 0x35, 0x36, -1, /* 16-23 */ | ||
168 | -1, -1, -1, -1, -1, -1, -1, -1, /* 24-31 */ | ||
169 | 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x38, /* 32-39 */ | ||
170 | 0x39, 0x3A, 0x3B, -1, -1, -1, -1, -1, /* 40-47 */ | ||
171 | -1, -1, -1, -1, -1, -1, -1, -1, /* 48-55 */ | ||
172 | -1, -1, -1, -1, -1, -1, -1, 0x2B, /* 56-63 */ | ||
173 | |||
174 | }; | ||
175 | |||
176 | int intc_irq_describe(char* p, int irq) | ||
177 | { | ||
178 | if (irq < NR_INTC_IRQS) | ||
179 | return sprintf(p, "(0x%3x)", IRQ_to_vectorN[irq]*0x20); | ||
180 | else | ||
181 | return 0; | ||
182 | } | ||
183 | #endif | ||
184 | |||
185 | void __init plat_irq_setup(void) | 155 | void __init plat_irq_setup(void) |
186 | { | 156 | { |
187 | unsigned long long __dummy0, __dummy1=~0x00000000100000f0; | 157 | unsigned long long __dummy0, __dummy1=~0x00000000100000f0; |
188 | unsigned long reg; | 158 | unsigned long reg; |
189 | int i; | 159 | int i; |
190 | 160 | ||
191 | intc_virt = onchip_remap(INTC_BASE, 1024, "INTC"); | 161 | intc_virt = (unsigned long)ioremap_nocache(INTC_BASE, 1024); |
192 | if (!intc_virt) { | 162 | if (!intc_virt) { |
193 | panic("Unable to remap INTC\n"); | 163 | panic("Unable to remap INTC\n"); |
194 | } | 164 | } |
@@ -196,7 +166,7 @@ void __init plat_irq_setup(void) | |||
196 | 166 | ||
197 | /* Set default: per-line enable/disable, priority driven ack/eoi */ | 167 | /* Set default: per-line enable/disable, priority driven ack/eoi */ |
198 | for (i = 0; i < NR_INTC_IRQS; i++) | 168 | for (i = 0; i < NR_INTC_IRQS; i++) |
199 | irq_desc[i].chip = &intc_irq_type; | 169 | set_irq_chip_and_handler(i, &intc_irq_type, handle_level_irq); |
200 | 170 | ||
201 | 171 | ||
202 | /* Disable all interrupts and set all priorities to 0 to avoid trouble */ | 172 | /* Disable all interrupts and set all priorities to 0 to avoid trouble */ |