19 #include <linux/kernel.h>
26 #include <mach/irqs.h>
136 static struct intc_group intca_groups[] __initdata = {
157 static struct intc_mask_reg intca_mask_registers[] __initdata = {
158 { 0xe6940080, 0xe69400c0, 8,
161 { 0xe6940084, 0xe69400c4, 8,
164 { 0xe6940088, 0xe69400c8, 8,
167 { 0xe694008c, 0xe69400cc, 8,
170 { 0xe6940090, 0xe69400d0, 8,
173 { 0xe6940094, 0xe69400d4, 8,
176 { 0xe6940098, 0xe69400d8, 8,
179 { 0xe694009c, 0xe69400dc, 8,
182 { 0xe69400a0, 0xe69400e0, 8,
185 { 0xe69400a4, 0xe69400e4, 8,
188 { 0xe69400a8, 0xe69400e8, 8,
191 { 0xe69400ac, 0xe69400ec, 8,
194 { 0xe69400b0, 0xe69400f0, 8,
197 { 0xe69400b4, 0xe69400f4, 8,
202 static struct intc_prio_reg intca_prio_registers[] __initdata = {
223 { 0xe6940038, 0, 16, 4, { 0, 0,
DIRC,
SDHI2 } },
226 static struct intc_desc intca_desc __initdata = {
227 .name =
"sh7367-intca",
231 intca_mask_registers, intca_prio_registers,
274 static struct intc_vect intcs_vectors[] = {
312 static struct intc_group intcs_groups[] __initdata = {
326 { 0xffd20184, 0xffd201c4, 8,
329 { 0xffd20188, 0xffd201c8, 8,
332 { 0xffd2018c, 0xffd201cc, 8,
335 { 0xffd20190, 0xffd201d0, 8,
338 { 0xffd20194, 0xffd201d4, 8,
341 { 0xffd20198, 0xffd201d8, 8,
344 { 0xffd2019c, 0xffd201dc, 8,
347 { 0xffd201a4, 0xffd201e4, 8,
350 { 0xffd201a8, 0xffd201e8, 8,
353 { 0xffd201ac, 0xffd201ec, 8,
357 { 0, 0, 0, 0, 0, 0, 0, 0,
358 0, 0, 0, 0, 0, 0, 0,
INTCS } },
364 { 0xffd20004, 0, 16, 4, {
JPEG,
LCDC, 0, 0 } },
365 { 0xffd20008, 0, 16, 4, {
BBIF2, 0, 0, 0 } },
372 { 0xffd20024, 0, 16, 4, { 0,
SGX530, 0, 0 } },
375 { 0xffd20030, 0, 16, 4, {
IIC2, 0, 0, 0 } },
378 static struct resource intcs_resources[] __initdata = {
386 static struct intc_desc intcs_desc __initdata = {
387 .
name =
"sh7367-intcs",
388 .resource = intcs_resources,
390 .hw =
INTC_HW_DESC(intcs_vectors, intcs_groups, intcs_mask_registers,
394 static void intcs_demux(
unsigned int irq,
struct irq_desc *
desc)
396 void __iomem *
reg = (
void *)irq_get_handler_data(irq);
397 unsigned int evtcodeas =
ioread32(reg);
412 irq_set_chained_handler(
evt2irq(0xf80), intcs_demux);