diff options
author | Magnus Damm <damm@opensource.se> | 2011-10-12 03:21:34 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2011-11-04 12:02:51 -0400 |
commit | da5713ef03aba15761eeeade4f4938e5db98b1e2 (patch) | |
tree | fa8e548f5d7b66c8b43c422d3e381e455c159ab4 | |
parent | e1b3aa85b2887c06f59c9d38aa3653f797a867cb (diff) |
ARM: mach-shmobile: Use common INTC IRQ code on sh7372
Make use of INTC_IRQ_PINS_32() for INTCA on sh7372.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
-rw-r--r-- | arch/arm/mach-shmobile/intc-sh7372.c | 72 |
1 files changed, 8 insertions, 64 deletions
diff --git a/arch/arm/mach-shmobile/intc-sh7372.c b/arch/arm/mach-shmobile/intc-sh7372.c index 29cdc0522d9c..2d8856df80e2 100644 --- a/arch/arm/mach-shmobile/intc-sh7372.c +++ b/arch/arm/mach-shmobile/intc-sh7372.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | #include <linux/sh_intc.h> | 24 | #include <linux/sh_intc.h> |
25 | #include <mach/intc.h> | ||
25 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
26 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
27 | 28 | ||
@@ -29,10 +30,6 @@ enum { | |||
29 | UNUSED_INTCA = 0, | 30 | UNUSED_INTCA = 0, |
30 | 31 | ||
31 | /* interrupt sources INTCA */ | 32 | /* interrupt sources INTCA */ |
32 | IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A, | ||
33 | IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A, | ||
34 | IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A, | ||
35 | IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A, | ||
36 | DIRC, | 33 | DIRC, |
37 | CRYPT_STD, | 34 | CRYPT_STD, |
38 | IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1, | 35 | IIC1_ALI1, IIC1_TACKI1, IIC1_WAITI1, IIC1_DTEI1, |
@@ -86,22 +83,6 @@ enum { | |||
86 | }; | 83 | }; |
87 | 84 | ||
88 | static struct intc_vect intca_vectors[] __initdata = { | 85 | static struct intc_vect intca_vectors[] __initdata = { |
89 | INTC_VECT(IRQ0A, 0x0200), INTC_VECT(IRQ1A, 0x0220), | ||
90 | INTC_VECT(IRQ2A, 0x0240), INTC_VECT(IRQ3A, 0x0260), | ||
91 | INTC_VECT(IRQ4A, 0x0280), INTC_VECT(IRQ5A, 0x02a0), | ||
92 | INTC_VECT(IRQ6A, 0x02c0), INTC_VECT(IRQ7A, 0x02e0), | ||
93 | INTC_VECT(IRQ8A, 0x0300), INTC_VECT(IRQ9A, 0x0320), | ||
94 | INTC_VECT(IRQ10A, 0x0340), INTC_VECT(IRQ11A, 0x0360), | ||
95 | INTC_VECT(IRQ12A, 0x0380), INTC_VECT(IRQ13A, 0x03a0), | ||
96 | INTC_VECT(IRQ14A, 0x03c0), INTC_VECT(IRQ15A, 0x03e0), | ||
97 | INTC_VECT(IRQ16A, 0x3200), INTC_VECT(IRQ17A, 0x3220), | ||
98 | INTC_VECT(IRQ18A, 0x3240), INTC_VECT(IRQ19A, 0x3260), | ||
99 | INTC_VECT(IRQ20A, 0x3280), INTC_VECT(IRQ21A, 0x32a0), | ||
100 | INTC_VECT(IRQ22A, 0x32c0), INTC_VECT(IRQ23A, 0x32e0), | ||
101 | INTC_VECT(IRQ24A, 0x3300), INTC_VECT(IRQ25A, 0x3320), | ||
102 | INTC_VECT(IRQ26A, 0x3340), INTC_VECT(IRQ27A, 0x3360), | ||
103 | INTC_VECT(IRQ28A, 0x3380), INTC_VECT(IRQ29A, 0x33a0), | ||
104 | INTC_VECT(IRQ30A, 0x33c0), INTC_VECT(IRQ31A, 0x33e0), | ||
105 | INTC_VECT(DIRC, 0x0560), | 86 | INTC_VECT(DIRC, 0x0560), |
106 | INTC_VECT(CRYPT_STD, 0x0700), | 87 | INTC_VECT(CRYPT_STD, 0x0700), |
107 | INTC_VECT(IIC1_ALI1, 0x0780), INTC_VECT(IIC1_TACKI1, 0x07a0), | 88 | INTC_VECT(IIC1_ALI1, 0x0780), INTC_VECT(IIC1_TACKI1, 0x07a0), |
@@ -203,15 +184,6 @@ static struct intc_group intca_groups[] __initdata = { | |||
203 | }; | 184 | }; |
204 | 185 | ||
205 | static struct intc_mask_reg intca_mask_registers[] __initdata = { | 186 | static struct intc_mask_reg intca_mask_registers[] __initdata = { |
206 | { 0xe6900040, 0xe6900060, 8, /* INTMSK00A / INTMSKCLR00A */ | ||
207 | { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } }, | ||
208 | { 0xe6900044, 0xe6900064, 8, /* INTMSK10A / INTMSKCLR10A */ | ||
209 | { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } }, | ||
210 | { 0xe6900048, 0xe6900068, 8, /* INTMSK20A / INTMSKCLR20A */ | ||
211 | { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } }, | ||
212 | { 0xe690004c, 0xe690006c, 8, /* INTMSK30A / INTMSKCLR30A */ | ||
213 | { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, | ||
214 | |||
215 | { 0xe6940080, 0xe69400c0, 8, /* IMR0A / IMCR0A */ | 187 | { 0xe6940080, 0xe69400c0, 8, /* IMR0A / IMCR0A */ |
216 | { DMAC2_1_DEI3, DMAC2_1_DEI2, DMAC2_1_DEI1, DMAC2_1_DEI0, | 188 | { DMAC2_1_DEI3, DMAC2_1_DEI2, DMAC2_1_DEI1, DMAC2_1_DEI0, |
217 | AP_ARM_IRQPMU, 0, AP_ARM_COMMTX, AP_ARM_COMMRX } }, | 189 | AP_ARM_IRQPMU, 0, AP_ARM_COMMTX, AP_ARM_COMMRX } }, |
@@ -282,15 +254,6 @@ static struct intc_mask_reg intca_mask_registers[] __initdata = { | |||
282 | }; | 254 | }; |
283 | 255 | ||
284 | static struct intc_prio_reg intca_prio_registers[] __initdata = { | 256 | static struct intc_prio_reg intca_prio_registers[] __initdata = { |
285 | { 0xe6900010, 0, 32, 4, /* INTPRI00A */ | ||
286 | { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } }, | ||
287 | { 0xe6900014, 0, 32, 4, /* INTPRI10A */ | ||
288 | { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } }, | ||
289 | { 0xe6900018, 0, 32, 4, /* INTPRI20A */ | ||
290 | { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } }, | ||
291 | { 0xe690001c, 0, 32, 4, /* INTPRI30A */ | ||
292 | { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, | ||
293 | |||
294 | { 0xe6940000, 0, 16, 4, /* IPRAA */ { DMAC3_1, DMAC3_2, CMT2, 0 } }, | 257 | { 0xe6940000, 0, 16, 4, /* IPRAA */ { DMAC3_1, DMAC3_2, CMT2, 0 } }, |
295 | { 0xe6940004, 0, 16, 4, /* IPRBA */ { IRDA, 0, BBIF1, BBIF2 } }, | 258 | { 0xe6940004, 0, 16, 4, /* IPRBA */ { IRDA, 0, BBIF1, BBIF2 } }, |
296 | { 0xe6940008, 0, 16, 4, /* IPRCA */ { 0, CRYPT_STD, | 259 | { 0xe6940008, 0, 16, 4, /* IPRCA */ { 0, CRYPT_STD, |
@@ -336,33 +299,13 @@ static struct intc_prio_reg intca_prio_registers[] __initdata = { | |||
336 | { 0xe6950050, 0, 16, 4, /* IPRUA3 */ { USBHSDMAC1_USHDMI, 0, 0, 0 } }, | 299 | { 0xe6950050, 0, 16, 4, /* IPRUA3 */ { USBHSDMAC1_USHDMI, 0, 0, 0 } }, |
337 | }; | 300 | }; |
338 | 301 | ||
339 | static struct intc_sense_reg intca_sense_registers[] __initdata = { | 302 | static DECLARE_INTC_DESC(intca_desc, "sh7372-intca", |
340 | { 0xe6900000, 32, 4, /* ICR1A */ | 303 | intca_vectors, intca_groups, |
341 | { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } }, | 304 | intca_mask_registers, intca_prio_registers, |
342 | { 0xe6900004, 32, 4, /* ICR2A */ | 305 | NULL); |
343 | { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } }, | ||
344 | { 0xe6900008, 32, 4, /* ICR3A */ | ||
345 | { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } }, | ||
346 | { 0xe690000c, 32, 4, /* ICR4A */ | ||
347 | { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, | ||
348 | }; | ||
349 | |||
350 | static struct intc_mask_reg intca_ack_registers[] __initdata = { | ||
351 | { 0xe6900020, 0, 8, /* INTREQ00A */ | ||
352 | { IRQ0A, IRQ1A, IRQ2A, IRQ3A, IRQ4A, IRQ5A, IRQ6A, IRQ7A } }, | ||
353 | { 0xe6900024, 0, 8, /* INTREQ10A */ | ||
354 | { IRQ8A, IRQ9A, IRQ10A, IRQ11A, IRQ12A, IRQ13A, IRQ14A, IRQ15A } }, | ||
355 | { 0xe6900028, 0, 8, /* INTREQ20A */ | ||
356 | { IRQ16A, IRQ17A, IRQ18A, IRQ19A, IRQ20A, IRQ21A, IRQ22A, IRQ23A } }, | ||
357 | { 0xe690002c, 0, 8, /* INTREQ30A */ | ||
358 | { IRQ24A, IRQ25A, IRQ26A, IRQ27A, IRQ28A, IRQ29A, IRQ30A, IRQ31A } }, | ||
359 | }; | ||
360 | |||
361 | static DECLARE_INTC_DESC_ACK(intca_desc, "sh7372-intca", | ||
362 | intca_vectors, intca_groups, | ||
363 | intca_mask_registers, intca_prio_registers, | ||
364 | intca_sense_registers, intca_ack_registers); | ||
365 | 306 | ||
307 | INTC_IRQ_PINS_32(intca_irq_pins, 0xe6900000, | ||
308 | INTC_VECT, "sh7372-intca-irq-pins"); | ||
366 | enum { | 309 | enum { |
367 | UNUSED_INTCS = 0, | 310 | UNUSED_INTCS = 0, |
368 | ENABLED_INTCS, | 311 | ENABLED_INTCS, |
@@ -618,6 +561,7 @@ void __init sh7372_init_irq(void) | |||
618 | intcs_ffd5 = ioremap_nocache(0xffd50000, PAGE_SIZE); | 561 | intcs_ffd5 = ioremap_nocache(0xffd50000, PAGE_SIZE); |
619 | 562 | ||
620 | register_intc_controller(&intca_desc); | 563 | register_intc_controller(&intca_desc); |
564 | register_intc_controller(&intca_irq_pins_desc); | ||
621 | register_intc_controller(&intcs_desc); | 565 | register_intc_controller(&intcs_desc); |
622 | 566 | ||
623 | /* demux using INTEVTSA */ | 567 | /* demux using INTEVTSA */ |