diff options
author | Stephen Boyd <sboyd@codeaurora.org> | 2012-09-05 15:28:51 -0400 |
---|---|---|
committer | David Brown <davidb@codeaurora.org> | 2012-09-13 14:14:29 -0400 |
commit | 66a8950949c12a2600ff62e78b24f42ef8f6d28e (patch) | |
tree | c348c8ba6bf082bafaa44e390f3129ce2dd45b4c | |
parent | e8ea1ea90bfd90d3047924b77a3f76cf2147ada1 (diff) |
ARM: msm: Don't touch GIC registers outside of GIC code
The MSM code has some antiquated register writes to set up the
PPIs to be edge triggered. Now that we have the percpu irq
interface we don't need this code so let's remove it and update
the percpu irq user (msm_timer) to set the irq type.
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: David Brown <davidb@codeaurora.org>
-rw-r--r-- | arch/arm/mach-msm/board-msm8960.c | 13 | ||||
-rw-r--r-- | arch/arm/mach-msm/board-msm8x60.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-msm/platsmp.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-msm/timer.c | 4 |
4 files changed, 2 insertions, 26 deletions
diff --git a/arch/arm/mach-msm/board-msm8960.c b/arch/arm/mach-msm/board-msm8960.c index 65f4a1daa2e5..bdafe791fd0b 100644 --- a/arch/arm/mach-msm/board-msm8960.c +++ b/arch/arm/mach-msm/board-msm8960.c | |||
@@ -55,24 +55,11 @@ static void __init msm8960_map_io(void) | |||
55 | 55 | ||
56 | static void __init msm8960_init_irq(void) | 56 | static void __init msm8960_init_irq(void) |
57 | { | 57 | { |
58 | unsigned int i; | ||
59 | gic_init(0, GIC_PPI_START, MSM_QGIC_DIST_BASE, | 58 | gic_init(0, GIC_PPI_START, MSM_QGIC_DIST_BASE, |
60 | (void *)MSM_QGIC_CPU_BASE); | 59 | (void *)MSM_QGIC_CPU_BASE); |
61 | 60 | ||
62 | /* Edge trigger PPIs except AVS_SVICINT and AVS_SVICINTSWDONE */ | ||
63 | writel(0xFFFFD7FF, MSM_QGIC_DIST_BASE + GIC_DIST_CONFIG + 4); | ||
64 | |||
65 | if (machine_is_msm8960_rumi3()) | 61 | if (machine_is_msm8960_rumi3()) |
66 | writel(0x0000FFFF, MSM_QGIC_DIST_BASE + GIC_DIST_ENABLE_SET); | 62 | writel(0x0000FFFF, MSM_QGIC_DIST_BASE + GIC_DIST_ENABLE_SET); |
67 | |||
68 | /* FIXME: Not installing AVS_SVICINT and AVS_SVICINTSWDONE yet | ||
69 | * as they are configured as level, which does not play nice with | ||
70 | * handle_percpu_irq. | ||
71 | */ | ||
72 | for (i = GIC_PPI_START; i < GIC_SPI_START; i++) { | ||
73 | if (i != AVS_SVICINT && i != AVS_SVICINTSWDONE) | ||
74 | irq_set_handler(i, handle_percpu_irq); | ||
75 | } | ||
76 | } | 63 | } |
77 | 64 | ||
78 | static struct platform_device *sim_devices[] __initdata = { | 65 | static struct platform_device *sim_devices[] __initdata = { |
diff --git a/arch/arm/mach-msm/board-msm8x60.c b/arch/arm/mach-msm/board-msm8x60.c index 13ca9bb5a4d6..9df5c8357495 100644 --- a/arch/arm/mach-msm/board-msm8x60.c +++ b/arch/arm/mach-msm/board-msm8x60.c | |||
@@ -67,9 +67,6 @@ static void __init msm8x60_init_irq(void) | |||
67 | of_irq_init(msm_dt_gic_match); | 67 | of_irq_init(msm_dt_gic_match); |
68 | #endif | 68 | #endif |
69 | 69 | ||
70 | /* Edge trigger PPIs except AVS_SVICINT and AVS_SVICINTSWDONE */ | ||
71 | writel(0xFFFFD7FF, MSM_QGIC_DIST_BASE + GIC_DIST_CONFIG + 4); | ||
72 | |||
73 | /* RUMI does not adhere to GIC spec by enabling STIs by default. | 70 | /* RUMI does not adhere to GIC spec by enabling STIs by default. |
74 | * Enable/clear is supposed to be RO for STIs, but is RW on RUMI. | 71 | * Enable/clear is supposed to be RO for STIs, but is RW on RUMI. |
75 | */ | 72 | */ |
diff --git a/arch/arm/mach-msm/platsmp.c b/arch/arm/mach-msm/platsmp.c index db0117ec55f4..b119f9947dfe 100644 --- a/arch/arm/mach-msm/platsmp.c +++ b/arch/arm/mach-msm/platsmp.c | |||
@@ -22,17 +22,12 @@ | |||
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/smp_plat.h> | 23 | #include <asm/smp_plat.h> |
24 | 24 | ||
25 | #include <mach/msm_iomap.h> | ||
26 | |||
27 | #include "scm-boot.h" | 25 | #include "scm-boot.h" |
28 | 26 | ||
29 | #define VDD_SC1_ARRAY_CLAMP_GFS_CTL 0x15A0 | 27 | #define VDD_SC1_ARRAY_CLAMP_GFS_CTL 0x15A0 |
30 | #define SCSS_CPU1CORE_RESET 0xD80 | 28 | #define SCSS_CPU1CORE_RESET 0xD80 |
31 | #define SCSS_DBG_STATUS_CORE_PWRDUP 0xE64 | 29 | #define SCSS_DBG_STATUS_CORE_PWRDUP 0xE64 |
32 | 30 | ||
33 | /* Mask for edge trigger PPIs except AVS_SVICINT and AVS_SVICINTSWDONE */ | ||
34 | #define GIC_PPI_EDGE_MASK 0xFFFFD7FF | ||
35 | |||
36 | extern void msm_secondary_startup(void); | 31 | extern void msm_secondary_startup(void); |
37 | /* | 32 | /* |
38 | * control for which core is the next to come out of the secondary | 33 | * control for which core is the next to come out of the secondary |
@@ -50,9 +45,6 @@ static inline int get_core_count(void) | |||
50 | 45 | ||
51 | void __cpuinit platform_secondary_init(unsigned int cpu) | 46 | void __cpuinit platform_secondary_init(unsigned int cpu) |
52 | { | 47 | { |
53 | /* Configure edge-triggered PPIs */ | ||
54 | writel(GIC_PPI_EDGE_MASK, MSM_QGIC_DIST_BASE + GIC_DIST_CONFIG + 4); | ||
55 | |||
56 | /* | 48 | /* |
57 | * if any interrupts are already enabled for the primary | 49 | * if any interrupts are already enabled for the primary |
58 | * core (e.g. timer irq), then they will not have been enabled | 50 | * core (e.g. timer irq), then they will not have been enabled |
diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c index 812808254936..36bbc60b699f 100644 --- a/arch/arm/mach-msm/timer.c +++ b/arch/arm/mach-msm/timer.c | |||
@@ -151,7 +151,7 @@ static int __cpuinit msm_local_timer_setup(struct clock_event_device *evt) | |||
151 | 151 | ||
152 | *__this_cpu_ptr(msm_evt.percpu_evt) = evt; | 152 | *__this_cpu_ptr(msm_evt.percpu_evt) = evt; |
153 | clockevents_register_device(evt); | 153 | clockevents_register_device(evt); |
154 | enable_percpu_irq(evt->irq, 0); | 154 | enable_percpu_irq(evt->irq, IRQ_TYPE_EDGE_RISING); |
155 | return 0; | 155 | return 0; |
156 | } | 156 | } |
157 | 157 | ||
@@ -219,7 +219,7 @@ static void __init msm_timer_init(void) | |||
219 | res = request_percpu_irq(ce->irq, msm_timer_interrupt, | 219 | res = request_percpu_irq(ce->irq, msm_timer_interrupt, |
220 | ce->name, msm_evt.percpu_evt); | 220 | ce->name, msm_evt.percpu_evt); |
221 | if (!res) { | 221 | if (!res) { |
222 | enable_percpu_irq(ce->irq, 0); | 222 | enable_percpu_irq(ce->irq, IRQ_TYPE_EDGE_RISING); |
223 | #ifdef CONFIG_LOCAL_TIMERS | 223 | #ifdef CONFIG_LOCAL_TIMERS |
224 | local_timer_register(&msm_local_timer_ops); | 224 | local_timer_register(&msm_local_timer_ops); |
225 | #endif | 225 | #endif |