diff options
Diffstat (limited to 'arch/arm/mach-exynos/cpu.c')
-rw-r--r-- | arch/arm/mach-exynos/cpu.c | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/arch/arm/mach-exynos/cpu.c b/arch/arm/mach-exynos/cpu.c index 90ec247f3b3..22316cb31a8 100644 --- a/arch/arm/mach-exynos/cpu.c +++ b/arch/arm/mach-exynos/cpu.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/mach/irq.h> | 15 | #include <asm/mach/irq.h> |
16 | 16 | ||
17 | #include <asm/proc-fns.h> | 17 | #include <asm/proc-fns.h> |
18 | #include <asm/exception.h> | ||
18 | #include <asm/hardware/cache-l2x0.h> | 19 | #include <asm/hardware/cache-l2x0.h> |
19 | #include <asm/hardware/gic.h> | 20 | #include <asm/hardware/gic.h> |
20 | 21 | ||
@@ -33,8 +34,6 @@ | |||
33 | #include <mach/regs-irq.h> | 34 | #include <mach/regs-irq.h> |
34 | #include <mach/regs-pmu.h> | 35 | #include <mach/regs-pmu.h> |
35 | 36 | ||
36 | unsigned int gic_bank_offset __read_mostly; | ||
37 | |||
38 | extern int combiner_init(unsigned int combiner_nr, void __iomem *base, | 37 | extern int combiner_init(unsigned int combiner_nr, void __iomem *base, |
39 | unsigned int irq_start); | 38 | unsigned int irq_start); |
40 | extern void combiner_cascade_irq(unsigned int combiner_nr, unsigned int irq); | 39 | extern void combiner_cascade_irq(unsigned int combiner_nr, unsigned int irq); |
@@ -207,27 +206,14 @@ void __init exynos4_init_clocks(int xtal) | |||
207 | exynos4_setup_clocks(); | 206 | exynos4_setup_clocks(); |
208 | } | 207 | } |
209 | 208 | ||
210 | static void exynos4_gic_irq_fix_base(struct irq_data *d) | ||
211 | { | ||
212 | struct gic_chip_data *gic_data = irq_data_get_irq_chip_data(d); | ||
213 | |||
214 | gic_data->cpu_base = S5P_VA_GIC_CPU + | ||
215 | (gic_bank_offset * smp_processor_id()); | ||
216 | |||
217 | gic_data->dist_base = S5P_VA_GIC_DIST + | ||
218 | (gic_bank_offset * smp_processor_id()); | ||
219 | } | ||
220 | |||
221 | void __init exynos4_init_irq(void) | 209 | void __init exynos4_init_irq(void) |
222 | { | 210 | { |
223 | int irq; | 211 | int irq; |
212 | unsigned int gic_bank_offset; | ||
224 | 213 | ||
225 | gic_bank_offset = soc_is_exynos4412() ? 0x4000 : 0x8000; | 214 | gic_bank_offset = soc_is_exynos4412() ? 0x4000 : 0x8000; |
226 | 215 | ||
227 | gic_init(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU); | 216 | gic_init_bases(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU, gic_bank_offset); |
228 | gic_arch_extn.irq_eoi = exynos4_gic_irq_fix_base; | ||
229 | gic_arch_extn.irq_unmask = exynos4_gic_irq_fix_base; | ||
230 | gic_arch_extn.irq_mask = exynos4_gic_irq_fix_base; | ||
231 | 217 | ||
232 | for (irq = 0; irq < MAX_COMBINER_NR; irq++) { | 218 | for (irq = 0; irq < MAX_COMBINER_NR; irq++) { |
233 | 219 | ||