19 #include <linux/kernel.h>
26 #include <mach/irqs.h>
163 static struct intc_group intca_groups[] __initdata = {
187 static struct intc_mask_reg intca_mask_registers[] __initdata = {
188 { 0xe6940080, 0xe69400c0, 8,
191 { 0xe6940084, 0xe69400c4, 8,
194 { 0xe6940088, 0xe69400c8, 8,
197 { 0xe694008c, 0xe69400cc, 8,
200 { 0xe6940090, 0xe69400d0, 8,
203 { 0xe6940094, 0xe69400d4, 8,
206 { 0xe6940098, 0xe69400d8, 8,
209 { 0xe694009c, 0xe69400dc, 8,
212 { 0xe69400a0, 0xe69400e0, 8,
215 { 0xe69400a4, 0xe69400e4, 8,
218 { 0xe69400a8, 0xe69400e8, 8,
221 { 0xe69400ac, 0xe69400ec, 8,
224 { 0xe69400b0, 0xe69400f0, 8,
227 { 0xe69400b4, 0xe69400f4, 8,
230 { 0xe6950080, 0xe69500c0, 8,
233 { 0xe6950090, 0xe69500d0, 8,
236 { 0xe6950094, 0xe69500d4, 8,
239 { 0xe6950098, 0xe69500d8, 8,
243 { 0xe695009c, 0xe69500dc, 8,
248 static struct intc_prio_reg intca_prio_registers[] __initdata = {
269 { 0xe6940038, 0, 16, 4, { 0, 0,
DIRC, 0 } },
270 { 0xe6950000, 0, 16, 4, {
SHWYSTAT, 0, 0, 0 } },
271 { 0xe6950020, 0, 16, 4, {
ICUSB, 0, 0, 0 } },
272 { 0xe6950024, 0, 16, 4, {
ICUDMC, 0, 0, 0 } },
274 { 0xe695002c, 0, 16, 4, {
SCUV, 0, 0, 0 } },
276 { 0xe6950034, 0, 16, 4, {
AP_ARM2, 0, 0, 0 } },
279 { 0xe694003c, 0, 16, 4, {
SCIFA6, 0, 0, 0 } },
282 static struct intc_desc intca_desc __initdata = {
283 .name =
"sh7377-intca",
287 intca_mask_registers, intca_prio_registers,
295 #define __IGNORE(a...)
296 #define __IGNORE0(a...) 0
361 #define INTCS_INTVECT 0x0F80
362 static struct intc_vect intcs_vectors[] __initdata = {
433 static struct intc_group intcs_groups[] __initdata = {
436 RTDMAC1_1_DEI2, RTDMAC1_1_DEI3),
455 { 0xE6940184, 0xE69401C4, 8,
458 { 0xE6940188, 0xE69401C8, 8,
461 { 0xE694018C, 0xE69401CC, 8,
464 { 0xE6940190, 0xE69401D0, 8,
467 { 0xE6940194, 0xE69401D4, 8,
470 __IGNORE({ 0xE6940198, 0xE69401D8, 8,
473 { 0xE694019C, 0xE69401DC, 8,
476 __IGNORE({ 0xE69401A0, 0xE69401E0, 8,
479 { 0xE69401A4, 0xE69401E4, 8,
482 { 0xE69401A8, 0xE69401E8, 8,
485 { 0xE69401AC, 0xE69401EC, 8,
488 { 0xE6950180, 0xE69501C0, 8,
491 { 0xE6950190, 0xE69501D0, 8,
494 __IGNORE({ 0xE6950194, 0xE69501D4, 8,
497 { 0xE6950198, 0xE69501D8, 8,
500 { 0xE695019C, 0xE69501DC, 8,
504 { 0, 0, 0, 0, 0, 0, 0, 0,
505 0, 0, 0, 0, 0, 0, 0,
INTCS } }
508 static struct intc_prio_reg intcs_prio_registers[] __initdata = {
518 { 0xFFD20014, 0, 16, 4,
531 { 0xFFD2002C, 0, 16, 4, {
IPMMU, 0, 0,
HQE } },
533 { 0xFFD20030, 0, 16, 4,
536 { 0xFFD50000, 0, 16, 4, {
RTDMAC2_1, 0, 0, 0 } },
538 { 0xFFD50004, 0, 16, 4, {
RTDMAC2_2, 0, 0, 0 } },
540 { 0xFFD50020, 0, 16, 4, {
FRC, 0, 0, 0 } },
548 { 0xFFD50030, 0, 16, 4, {
TMU1, 0, 0,
TSIF2 } },
550 { 0xFFD50034, 0, 16, 4, {
CMT4, 0, 0, 0 } },
555 static struct resource intcs_resources[] __initdata = {
563 static struct intc_desc intcs_desc __initdata = {
564 .
name =
"sh7377-intcs",
565 .resource = intcs_resources,
568 intcs_mask_registers, intcs_prio_registers,
572 static void intcs_demux(
unsigned int irq,
struct irq_desc *
desc)
574 void __iomem *
reg = (
void *)irq_get_handler_data(irq);
575 unsigned int evtcodeas =
ioread32(reg);
580 #define INTEVTSA 0xFFD20100