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 cc8d4bd6d0f7..699774cbf112 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); |
@@ -202,27 +201,14 @@ void __init exynos4_init_clocks(int xtal) | |||
202 | exynos4_setup_clocks(); | 201 | exynos4_setup_clocks(); |
203 | } | 202 | } |
204 | 203 | ||
205 | static void exynos4_gic_irq_fix_base(struct irq_data *d) | ||
206 | { | ||
207 | struct gic_chip_data *gic_data = irq_data_get_irq_chip_data(d); | ||
208 | |||
209 | gic_data->cpu_base = S5P_VA_GIC_CPU + | ||
210 | (gic_bank_offset * smp_processor_id()); | ||
211 | |||
212 | gic_data->dist_base = S5P_VA_GIC_DIST + | ||
213 | (gic_bank_offset * smp_processor_id()); | ||
214 | } | ||
215 | |||
216 | void __init exynos4_init_irq(void) | 204 | void __init exynos4_init_irq(void) |
217 | { | 205 | { |
218 | int irq; | 206 | int irq; |
207 | unsigned int gic_bank_offset; | ||
219 | 208 | ||
220 | gic_bank_offset = soc_is_exynos4412() ? 0x4000 : 0x8000; | 209 | gic_bank_offset = soc_is_exynos4412() ? 0x4000 : 0x8000; |
221 | 210 | ||
222 | gic_init(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU); | 211 | gic_init_bases(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU, gic_bank_offset); |
223 | gic_arch_extn.irq_eoi = exynos4_gic_irq_fix_base; | ||
224 | gic_arch_extn.irq_unmask = exynos4_gic_irq_fix_base; | ||
225 | gic_arch_extn.irq_mask = exynos4_gic_irq_fix_base; | ||
226 | 212 | ||
227 | for (irq = 0; irq < MAX_COMBINER_NR; irq++) { | 213 | for (irq = 0; irq < MAX_COMBINER_NR; irq++) { |
228 | 214 | ||