diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-09-14 04:29:35 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-09-14 04:29:35 -0400 |
commit | 3639dfb57d39747a3069678237e8ab810525fcb0 (patch) | |
tree | 02bfdc0cdd84b8c5b93930a2af8e0dc5a8015ed3 /arch/sh/kernel | |
parent | 2fd5a021071ef54c503ab8d9894acae3eccf4f92 (diff) |
sh: multi-evt support for SH-X3 proto CPU.
This adds support for multiple vectors per unique IRQ masking source on
the SH-X3 proto CPU.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel')
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-shx3.c | 55 |
1 files changed, 20 insertions, 35 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c index 07f078961c71..e848443deeb9 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-shx3.c +++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c | |||
@@ -268,11 +268,7 @@ enum { | |||
268 | UNUSED = 0, | 268 | UNUSED = 0, |
269 | 269 | ||
270 | /* interrupt sources */ | 270 | /* interrupt sources */ |
271 | IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, | 271 | IRL, IRQ0, IRQ1, IRQ2, IRQ3, |
272 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, | ||
273 | IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH, | ||
274 | IRL_HHLL, IRL_HHLH, IRL_HHHL, | ||
275 | IRQ0, IRQ1, IRQ2, IRQ3, | ||
276 | HUDII, | 272 | HUDII, |
277 | TMU0, TMU1, TMU2, TMU3, TMU4, TMU5, | 273 | TMU0, TMU1, TMU2, TMU3, TMU4, TMU5, |
278 | PCII0, PCII1, PCII2, PCII3, PCII4, | 274 | PCII0, PCII1, PCII2, PCII3, PCII4, |
@@ -287,10 +283,7 @@ enum { | |||
287 | DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, DMAC1_DMINT9, | 283 | DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, DMAC1_DMINT9, |
288 | DMAC1_DMINT10, DMAC1_DMINT11, DMAC1_DMAE, | 284 | DMAC1_DMINT10, DMAC1_DMINT11, DMAC1_DMAE, |
289 | IIC, VIN0, VIN1, VCORE0, ATAPI, | 285 | IIC, VIN0, VIN1, VCORE0, ATAPI, |
290 | DTU0_TEND, DTU0_AE, DTU0_TMISS, | 286 | DTU0, DTU1, DTU2, DTU3, |
291 | DTU1_TEND, DTU1_AE, DTU1_TMISS, | ||
292 | DTU2_TEND, DTU2_AE, DTU2_TMISS, | ||
293 | DTU3_TEND, DTU3_AE, DTU3_TMISS, | ||
294 | FE0, FE1, | 287 | FE0, FE1, |
295 | GPIO0, GPIO1, GPIO2, GPIO3, | 288 | GPIO0, GPIO1, GPIO2, GPIO3, |
296 | PAM, IRM, | 289 | PAM, IRM, |
@@ -298,8 +291,8 @@ enum { | |||
298 | INTICI4, INTICI5, INTICI6, INTICI7, | 291 | INTICI4, INTICI5, INTICI6, INTICI7, |
299 | 292 | ||
300 | /* interrupt groups */ | 293 | /* interrupt groups */ |
301 | IRL, PCII56789, SCIF0, SCIF1, SCIF2, SCIF3, | 294 | PCII56789, SCIF0, SCIF1, SCIF2, SCIF3, |
302 | DMAC0, DMAC1, DTU0, DTU1, DTU2, DTU3, | 295 | DMAC0, DMAC1, |
303 | }; | 296 | }; |
304 | 297 | ||
305 | static struct intc_vect vectors[] __initdata = { | 298 | static struct intc_vect vectors[] __initdata = { |
@@ -332,14 +325,14 @@ static struct intc_vect vectors[] __initdata = { | |||
332 | INTC_VECT(IIC, 0xae0), | 325 | INTC_VECT(IIC, 0xae0), |
333 | INTC_VECT(VIN0, 0xb00), INTC_VECT(VIN1, 0xb20), | 326 | INTC_VECT(VIN0, 0xb00), INTC_VECT(VIN1, 0xb20), |
334 | INTC_VECT(VCORE0, 0xb00), INTC_VECT(ATAPI, 0xb60), | 327 | INTC_VECT(VCORE0, 0xb00), INTC_VECT(ATAPI, 0xb60), |
335 | INTC_VECT(DTU0_TEND, 0xc00), INTC_VECT(DTU0_AE, 0xc20), | 328 | INTC_VECT(DTU0, 0xc00), INTC_VECT(DTU0, 0xc20), |
336 | INTC_VECT(DTU0_TMISS, 0xc40), | 329 | INTC_VECT(DTU0, 0xc40), |
337 | INTC_VECT(DTU1_TEND, 0xc60), INTC_VECT(DTU1_AE, 0xc80), | 330 | INTC_VECT(DTU1, 0xc60), INTC_VECT(DTU1, 0xc80), |
338 | INTC_VECT(DTU1_TMISS, 0xca0), | 331 | INTC_VECT(DTU1, 0xca0), |
339 | INTC_VECT(DTU2_TEND, 0xcc0), INTC_VECT(DTU2_AE, 0xce0), | 332 | INTC_VECT(DTU2, 0xcc0), INTC_VECT(DTU2, 0xce0), |
340 | INTC_VECT(DTU2_TMISS, 0xd00), | 333 | INTC_VECT(DTU2, 0xd00), |
341 | INTC_VECT(DTU3_TEND, 0xd20), INTC_VECT(DTU3_AE, 0xd40), | 334 | INTC_VECT(DTU3, 0xd20), INTC_VECT(DTU3, 0xd40), |
342 | INTC_VECT(DTU3_TMISS, 0xd60), | 335 | INTC_VECT(DTU3, 0xd60), |
343 | INTC_VECT(FE0, 0xe00), INTC_VECT(FE1, 0xe20), | 336 | INTC_VECT(FE0, 0xe00), INTC_VECT(FE1, 0xe20), |
344 | INTC_VECT(GPIO0, 0xe40), INTC_VECT(GPIO1, 0xe60), | 337 | INTC_VECT(GPIO0, 0xe40), INTC_VECT(GPIO1, 0xe60), |
345 | INTC_VECT(GPIO2, 0xe80), INTC_VECT(GPIO3, 0xea0), | 338 | INTC_VECT(GPIO2, 0xe80), INTC_VECT(GPIO3, 0xea0), |
@@ -351,10 +344,6 @@ static struct intc_vect vectors[] __initdata = { | |||
351 | }; | 344 | }; |
352 | 345 | ||
353 | static struct intc_group groups[] __initdata = { | 346 | static struct intc_group groups[] __initdata = { |
354 | INTC_GROUP(IRL, IRL_LLLL, IRL_LLLH, IRL_LLHL, IRL_LLHH, | ||
355 | IRL_LHLL, IRL_LHLH, IRL_LHHL, IRL_LHHH, | ||
356 | IRL_HLLL, IRL_HLLH, IRL_HLHL, IRL_HLHH, | ||
357 | IRL_HHLL, IRL_HHLH, IRL_HHHL), | ||
358 | INTC_GROUP(PCII56789, PCII5, PCII6, PCII7, PCII8, PCII9), | 347 | INTC_GROUP(PCII56789, PCII5, PCII6, PCII7, PCII8, PCII9), |
359 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), | 348 | INTC_GROUP(SCIF0, SCIF0_ERI, SCIF0_RXI, SCIF0_BRI, SCIF0_TXI), |
360 | INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), | 349 | INTC_GROUP(SCIF1, SCIF1_ERI, SCIF1_RXI, SCIF1_BRI, SCIF1_TXI), |
@@ -364,10 +353,6 @@ static struct intc_group groups[] __initdata = { | |||
364 | DMAC0_DMINT3, DMAC0_DMINT4, DMAC0_DMINT5, DMAC0_DMAE), | 353 | DMAC0_DMINT3, DMAC0_DMINT4, DMAC0_DMINT5, DMAC0_DMAE), |
365 | INTC_GROUP(DMAC1, DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, | 354 | INTC_GROUP(DMAC1, DMAC1_DMINT6, DMAC1_DMINT7, DMAC1_DMINT8, |
366 | DMAC1_DMINT9, DMAC1_DMINT10, DMAC1_DMINT11), | 355 | DMAC1_DMINT9, DMAC1_DMINT10, DMAC1_DMINT11), |
367 | INTC_GROUP(DTU0, DTU0_TEND, DTU0_AE, DTU0_TMISS), | ||
368 | INTC_GROUP(DTU1, DTU1_TEND, DTU1_AE, DTU1_TMISS), | ||
369 | INTC_GROUP(DTU2, DTU2_TEND, DTU2_AE, DTU2_TMISS), | ||
370 | INTC_GROUP(DTU3, DTU3_TEND, DTU3_AE, DTU3_TMISS), | ||
371 | }; | 356 | }; |
372 | 357 | ||
373 | static struct intc_mask_reg mask_registers[] __initdata = { | 358 | static struct intc_mask_reg mask_registers[] __initdata = { |
@@ -434,14 +419,14 @@ static DECLARE_INTC_DESC(intc_desc_irq, "shx3-irq", vectors_irq, groups, | |||
434 | 419 | ||
435 | /* External interrupt pins in IRL mode */ | 420 | /* External interrupt pins in IRL mode */ |
436 | static struct intc_vect vectors_irl[] __initdata = { | 421 | static struct intc_vect vectors_irl[] __initdata = { |
437 | INTC_VECT(IRL_LLLL, 0x200), INTC_VECT(IRL_LLLH, 0x220), | 422 | INTC_VECT(IRL, 0x200), INTC_VECT(IRL, 0x220), |
438 | INTC_VECT(IRL_LLHL, 0x240), INTC_VECT(IRL_LLHH, 0x260), | 423 | INTC_VECT(IRL, 0x240), INTC_VECT(IRL, 0x260), |
439 | INTC_VECT(IRL_LHLL, 0x280), INTC_VECT(IRL_LHLH, 0x2a0), | 424 | INTC_VECT(IRL, 0x280), INTC_VECT(IRL, 0x2a0), |
440 | INTC_VECT(IRL_LHHL, 0x2c0), INTC_VECT(IRL_LHHH, 0x2e0), | 425 | INTC_VECT(IRL, 0x2c0), INTC_VECT(IRL, 0x2e0), |
441 | INTC_VECT(IRL_HLLL, 0x300), INTC_VECT(IRL_HLLH, 0x320), | 426 | INTC_VECT(IRL, 0x300), INTC_VECT(IRL, 0x320), |
442 | INTC_VECT(IRL_HLHL, 0x340), INTC_VECT(IRL_HLHH, 0x360), | 427 | INTC_VECT(IRL, 0x340), INTC_VECT(IRL, 0x360), |
443 | INTC_VECT(IRL_HHLL, 0x380), INTC_VECT(IRL_HHLH, 0x3a0), | 428 | INTC_VECT(IRL, 0x380), INTC_VECT(IRL, 0x3a0), |
444 | INTC_VECT(IRL_HHHL, 0x3c0), | 429 | INTC_VECT(IRL, 0x3c0), |
445 | }; | 430 | }; |
446 | 431 | ||
447 | static DECLARE_INTC_DESC(intc_desc_irl, "shx3-irl", vectors_irl, groups, | 432 | static DECLARE_INTC_DESC(intc_desc_irl, "shx3-irl", vectors_irl, groups, |