diff options
author | Magnus Damm <damm@igel.co.jp> | 2007-06-14 21:41:54 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2007-06-14 21:41:54 -0400 |
commit | d619500aed2f9b841b2310bc94f8056ae9ca2a73 (patch) | |
tree | 42ca07266afbf0406d419e57dde404ad89cd316d /arch/sh/kernel/cpu/sh4a/setup-sh7780.c | |
parent | d3efbdd6c5e8c823b732df26a355ec931ccab374 (diff) |
sh: rework intc2 code
The shared intc2 code currently contains cpu-specific #ifdefs.
This is a tad unclean and it prevents us from using the shared code
to drive board-specific irqs on the se7780 board.
This patch reworks the intc2 code by moving the base addresses of
the intc2 registers into struct intc2_desc. This new structure also
contains the name of the controller in struct irq_chip. The idea
behind putting struct irq_chip in there is that we can use offsetof()
to locate the base addresses in the irq_chip callbacks.
One logic change has been made - the original shared intc2 code
enabled the interrupts by default but with this patch they are all
disabled by default.
Signed-off-by: Magnus Damm <damm@igel.co.jp>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/kernel/cpu/sh4a/setup-sh7780.c')
-rw-r--r-- | arch/sh/kernel/cpu/sh4a/setup-sh7780.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c index 9aeaa2ddaa28..b57c760bffde 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c | |||
@@ -102,7 +102,20 @@ static struct intc2_data intc2_irq_table[] = { | |||
102 | { 68, 0x14, 8, 0, 18, 2 }, /* PCIC4 */ | 102 | { 68, 0x14, 8, 0, 18, 2 }, /* PCIC4 */ |
103 | }; | 103 | }; |
104 | 104 | ||
105 | static struct intc2_desc intc2_irq_desc __read_mostly = { | ||
106 | .prio_base = 0xffd40000, | ||
107 | .msk_base = 0xffd40038, | ||
108 | .mskclr_base = 0xffd4003c, | ||
109 | |||
110 | .intc2_data = intc2_irq_table, | ||
111 | .nr_irqs = ARRAY_SIZE(intc2_irq_table), | ||
112 | |||
113 | .chip = { | ||
114 | .name = "INTC2-sh7780", | ||
115 | }, | ||
116 | }; | ||
117 | |||
105 | void __init init_IRQ_intc2(void) | 118 | void __init init_IRQ_intc2(void) |
106 | { | 119 | { |
107 | make_intc2_irq(intc2_irq_table, ARRAY_SIZE(intc2_irq_table)); | 120 | register_intc2_controller(&intc2_irq_desc); |
108 | } | 121 | } |