diff options
Diffstat (limited to 'arch/arm/mach-omap2/irq.c')
-rw-r--r-- | arch/arm/mach-omap2/irq.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c index 3af2b7a1045e..3a12f7586a4c 100644 --- a/arch/arm/mach-omap2/irq.c +++ b/arch/arm/mach-omap2/irq.c | |||
@@ -141,25 +141,20 @@ omap_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num) | |||
141 | IRQ_NOREQUEST | IRQ_NOPROBE, 0); | 141 | IRQ_NOREQUEST | IRQ_NOPROBE, 0); |
142 | } | 142 | } |
143 | 143 | ||
144 | void __init omap_init_irq(void) | 144 | static void __init omap_init_irq(u32 base, int nr_irqs) |
145 | { | 145 | { |
146 | unsigned long nr_of_irqs = 0; | 146 | unsigned long nr_of_irqs = 0; |
147 | unsigned int nr_banks = 0; | 147 | unsigned int nr_banks = 0; |
148 | int i, j; | 148 | int i, j; |
149 | 149 | ||
150 | omap_irq_base = ioremap(base, SZ_4K); | ||
151 | if (WARN_ON(!omap_irq_base)) | ||
152 | return; | ||
153 | |||
150 | for (i = 0; i < ARRAY_SIZE(irq_banks); i++) { | 154 | for (i = 0; i < ARRAY_SIZE(irq_banks); i++) { |
151 | unsigned long base = 0; | ||
152 | struct omap_irq_bank *bank = irq_banks + i; | 155 | struct omap_irq_bank *bank = irq_banks + i; |
153 | 156 | ||
154 | if (cpu_is_omap24xx()) | 157 | bank->nr_irqs = nr_irqs; |
155 | base = OMAP24XX_IC_BASE; | ||
156 | else if (cpu_is_omap34xx()) | ||
157 | base = OMAP34XX_IC_BASE; | ||
158 | |||
159 | BUG_ON(!base); | ||
160 | |||
161 | if (cpu_is_ti816x()) | ||
162 | bank->nr_irqs = 128; | ||
163 | 158 | ||
164 | /* Static mapping, never released */ | 159 | /* Static mapping, never released */ |
165 | bank->base_reg = ioremap(base, SZ_4K); | 160 | bank->base_reg = ioremap(base, SZ_4K); |
@@ -181,6 +176,21 @@ void __init omap_init_irq(void) | |||
181 | nr_of_irqs, nr_banks, nr_banks > 1 ? "s" : ""); | 176 | nr_of_irqs, nr_banks, nr_banks > 1 ? "s" : ""); |
182 | } | 177 | } |
183 | 178 | ||
179 | void __init omap2_init_irq(void) | ||
180 | { | ||
181 | omap_init_irq(OMAP24XX_IC_BASE, 96); | ||
182 | } | ||
183 | |||
184 | void __init omap3_init_irq(void) | ||
185 | { | ||
186 | omap_init_irq(OMAP34XX_IC_BASE, 96); | ||
187 | } | ||
188 | |||
189 | void __init ti816x_init_irq(void) | ||
190 | { | ||
191 | omap_init_irq(OMAP34XX_IC_BASE, 128); | ||
192 | } | ||
193 | |||
184 | #ifdef CONFIG_ARCH_OMAP3 | 194 | #ifdef CONFIG_ARCH_OMAP3 |
185 | static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)]; | 195 | static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)]; |
186 | 196 | ||