aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2011-06-22 12:41:48 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2011-06-24 04:54:39 -0400
commit2c74a0cefa463a7a483b07ba4d2ea8e4ec7b996c (patch)
tree51fc396c9315b42448da071b40d2199fa1ff769f
parent14c79bbed7e06135bcbccb2b92c19df7115b4502 (diff)
ARM: pm: hide 1st and 2nd arguments to cpu_suspend from platform code
The first and second arguments shouldn't concern platform code, so hide them from each platforms caller. Tested-by: Kevin Hilman <khilman@ti.com> Acked-by: Jean Pihet <j-pihet@ti.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/include/asm/suspend.h19
-rw-r--r--arch/arm/include/asm/system.h2
-rw-r--r--arch/arm/kernel/sleep.S4
-rw-r--r--arch/arm/mach-omap2/pm34xx.c5
-rw-r--r--arch/arm/mach-pxa/palmz72.c1
-rw-r--r--arch/arm/mach-pxa/pxa25x.c4
-rw-r--r--arch/arm/mach-pxa/pxa27x.c4
-rw-r--r--arch/arm/mach-pxa/pxa3xx.c3
-rw-r--r--arch/arm/mach-pxa/zeus.c4
-rw-r--r--arch/arm/mach-sa1100/pm.c3
-rw-r--r--arch/arm/plat-samsung/pm.c3
11 files changed, 37 insertions, 15 deletions
diff --git a/arch/arm/include/asm/suspend.h b/arch/arm/include/asm/suspend.h
new file mode 100644
index 000000000000..8d5b4461c205
--- /dev/null
+++ b/arch/arm/include/asm/suspend.h
@@ -0,0 +1,19 @@
1#ifndef __ASM_ARM_SUSPEND_H
2#define __ASM_ARM_SUSPEND_H
3
4#include <asm/memory.h>
5
6extern void cpu_resume(void);
7
8/*
9 * Hide the first two arguments to __cpu_suspend - these are an implementation
10 * detail which platform code shouldn't have to know about.
11 */
12static inline void cpu_suspend(unsigned long arg, void (*fn)(unsigned long))
13{
14 extern void __cpu_suspend(int, long, unsigned long,
15 void (*)(unsigned long));
16 __cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, arg, fn);
17}
18
19#endif
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
index 50be6055df89..832888d0c20c 100644
--- a/arch/arm/include/asm/system.h
+++ b/arch/arm/include/asm/system.h
@@ -106,8 +106,6 @@ extern void __show_regs(struct pt_regs *);
106 106
107extern int cpu_architecture(void); 107extern int cpu_architecture(void);
108extern void cpu_init(void); 108extern void cpu_init(void);
109extern void cpu_suspend(int, long, unsigned long, void (*)(unsigned long));
110extern void cpu_resume(void);
111 109
112void arm_machine_restart(char mode, const char *cmd); 110void arm_machine_restart(char mode, const char *cmd);
113extern void (*arm_pm_restart)(char str, const char *cmd); 111extern void (*arm_pm_restart)(char str, const char *cmd);
diff --git a/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S
index 53922748d101..c156d0e5f455 100644
--- a/arch/arm/kernel/sleep.S
+++ b/arch/arm/kernel/sleep.S
@@ -14,7 +14,7 @@
14 * r3 = suspend function 14 * r3 = suspend function
15 * Note: does not return until system resumes 15 * Note: does not return until system resumes
16 */ 16 */
17ENTRY(cpu_suspend) 17ENTRY(__cpu_suspend)
18 stmfd sp!, {r4 - r11, lr} 18 stmfd sp!, {r4 - r11, lr}
19#ifdef MULTI_CPU 19#ifdef MULTI_CPU
20 ldr r10, =processor 20 ldr r10, =processor
@@ -56,7 +56,7 @@ ENTRY(cpu_suspend)
56 bl __cpuc_flush_kern_all 56 bl __cpuc_flush_kern_all
57#endif 57#endif
58 ldmfd sp!, {r0, pc} @ call suspend fn 58 ldmfd sp!, {r0, pc} @ call suspend fn
59ENDPROC(cpu_suspend) 59ENDPROC(__cpu_suspend)
60 .ltorg 60 .ltorg
61 61
62/* 62/*
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index ae4017750bbe..3e9a13e1ac57 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -31,6 +31,8 @@
31#include <linux/console.h> 31#include <linux/console.h>
32#include <trace/events/power.h> 32#include <trace/events/power.h>
33 33
34#include <asm/suspend.h>
35
34#include <plat/sram.h> 36#include <plat/sram.h>
35#include "clockdomain.h" 37#include "clockdomain.h"
36#include "powerdomain.h" 38#include "powerdomain.h"
@@ -411,8 +413,7 @@ void omap_sram_idle(void)
411 * from there before resuming. 413 * from there before resuming.
412 */ 414 */
413 if (save_state == 1 || save_state == 3) 415 if (save_state == 1 || save_state == 3)
414 cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, save_state, 416 cpu_suspend(save_state, omap34xx_do_sram_idle);
415 omap34xx_do_sram_idle);
416 else 417 else
417 omap34xx_do_sram_idle(save_state); 418 omap34xx_do_sram_idle(save_state);
418 419
diff --git a/arch/arm/mach-pxa/palmz72.c b/arch/arm/mach-pxa/palmz72.c
index 65f24f0b77e8..5a5329bc33f1 100644
--- a/arch/arm/mach-pxa/palmz72.c
+++ b/arch/arm/mach-pxa/palmz72.c
@@ -33,6 +33,7 @@
33#include <linux/i2c-gpio.h> 33#include <linux/i2c-gpio.h>
34 34
35#include <asm/mach-types.h> 35#include <asm/mach-types.h>
36#include <asm/suspend.h>
36#include <asm/mach/arch.h> 37#include <asm/mach/arch.h>
37#include <asm/mach/map.h> 38#include <asm/mach/map.h>
38 39
diff --git a/arch/arm/mach-pxa/pxa25x.c b/arch/arm/mach-pxa/pxa25x.c
index fd7725cb5c01..9c434d21a271 100644
--- a/arch/arm/mach-pxa/pxa25x.c
+++ b/arch/arm/mach-pxa/pxa25x.c
@@ -25,6 +25,7 @@
25#include <linux/irq.h> 25#include <linux/irq.h>
26 26
27#include <asm/mach/map.h> 27#include <asm/mach/map.h>
28#include <asm/suspend.h>
28#include <mach/hardware.h> 29#include <mach/hardware.h>
29#include <mach/irqs.h> 30#include <mach/irqs.h>
30#include <mach/gpio.h> 31#include <mach/gpio.h>
@@ -244,8 +245,7 @@ static void pxa25x_cpu_pm_enter(suspend_state_t state)
244 245
245 switch (state) { 246 switch (state) {
246 case PM_SUSPEND_MEM: 247 case PM_SUSPEND_MEM:
247 cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, PWRMODE_SLEEP, 248 cpu_suspend(PWRMODE_SLEEP, pxa25x_finish_suspend);
248 pxa25x_finish_suspend);
249 break; 249 break;
250 } 250 }
251} 251}
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index 824379d43758..9d2400b5f503 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -24,6 +24,7 @@
24#include <asm/mach/map.h> 24#include <asm/mach/map.h>
25#include <mach/hardware.h> 25#include <mach/hardware.h>
26#include <asm/irq.h> 26#include <asm/irq.h>
27#include <asm/suspend.h>
27#include <mach/irqs.h> 28#include <mach/irqs.h>
28#include <mach/gpio.h> 29#include <mach/gpio.h>
29#include <mach/pxa27x.h> 30#include <mach/pxa27x.h>
@@ -304,8 +305,7 @@ void pxa27x_cpu_pm_enter(suspend_state_t state)
304 pxa_cpu_standby(); 305 pxa_cpu_standby();
305 break; 306 break;
306 case PM_SUSPEND_MEM: 307 case PM_SUSPEND_MEM:
307 cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, pwrmode, 308 cpu_suspend(pwrmode, pxa27x_finish_suspend);
308 pxa27x_finish_suspend);
309#ifndef CONFIG_IWMMXT 309#ifndef CONFIG_IWMMXT
310 asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0)); 310 asm volatile("mar acc0, %Q0, %R0" : "=r" (acc0));
311#endif 311#endif
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index 220fd8c15dab..9fe947b5d5f7 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -24,6 +24,7 @@
24#include <linux/i2c/pxa-i2c.h> 24#include <linux/i2c/pxa-i2c.h>
25 25
26#include <asm/mach/map.h> 26#include <asm/mach/map.h>
27#include <asm/suspend.h>
27#include <mach/hardware.h> 28#include <mach/hardware.h>
28#include <mach/gpio.h> 29#include <mach/gpio.h>
29#include <mach/pxa3xx-regs.h> 30#include <mach/pxa3xx-regs.h>
@@ -167,7 +168,7 @@ static void pxa3xx_cpu_pm_suspend(void)
167 /* overwrite with the resume address */ 168 /* overwrite with the resume address */
168 *p = virt_to_phys(cpu_resume); 169 *p = virt_to_phys(cpu_resume);
169 170
170 cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, 0, pxa3xx_finish_suspend); 171 cpu_suspend(0, pxa3xx_finish_suspend);
171 172
172 *p = saved_data; 173 *p = saved_data;
173 174
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index 28eb410ca779..9b99cc164de5 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -31,6 +31,7 @@
31#include <linux/can/platform/mcp251x.h> 31#include <linux/can/platform/mcp251x.h>
32 32
33#include <asm/mach-types.h> 33#include <asm/mach-types.h>
34#include <asm/suspend.h>
34#include <asm/mach/arch.h> 35#include <asm/mach/arch.h>
35#include <asm/mach/map.h> 36#include <asm/mach/map.h>
36 37
@@ -676,8 +677,7 @@ static struct pxa2xx_udc_mach_info zeus_udc_info = {
676static void zeus_power_off(void) 677static void zeus_power_off(void)
677{ 678{
678 local_irq_disable(); 679 local_irq_disable();
679 cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, PWRMODE_DEEPSLEEP, 680 cpu_suspend(PWRMODE_DEEPSLEEP, pxa27x_finish_suspend);
680 pxa27x_finish_suspend);
681} 681}
682#else 682#else
683#define zeus_power_off NULL 683#define zeus_power_off NULL
diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c
index 259ed3bcc3fe..cf9a1e9fb70d 100644
--- a/arch/arm/mach-sa1100/pm.c
+++ b/arch/arm/mach-sa1100/pm.c
@@ -29,6 +29,7 @@
29 29
30#include <mach/hardware.h> 30#include <mach/hardware.h>
31#include <asm/memory.h> 31#include <asm/memory.h>
32#include <asm/suspend.h>
32#include <asm/system.h> 33#include <asm/system.h>
33#include <asm/mach/time.h> 34#include <asm/mach/time.h>
34 35
@@ -75,7 +76,7 @@ static int sa11x0_pm_enter(suspend_state_t state)
75 PSPR = virt_to_phys(cpu_resume); 76 PSPR = virt_to_phys(cpu_resume);
76 77
77 /* go zzz */ 78 /* go zzz */
78 cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, 0, sa1100_finish_suspend); 79 cpu_suspend(0, sa1100_finish_suspend);
79 80
80 /* 81 /*
81 * Ensure not to come back here if it wasn't intended 82 * Ensure not to come back here if it wasn't intended
diff --git a/arch/arm/plat-samsung/pm.c b/arch/arm/plat-samsung/pm.c
index 3a6d0768ba0c..69d6b040a019 100644
--- a/arch/arm/plat-samsung/pm.c
+++ b/arch/arm/plat-samsung/pm.c
@@ -20,6 +20,7 @@
20#include <linux/io.h> 20#include <linux/io.h>
21 21
22#include <asm/cacheflush.h> 22#include <asm/cacheflush.h>
23#include <asm/suspend.h>
23#include <mach/hardware.h> 24#include <mach/hardware.h>
24#include <mach/map.h> 25#include <mach/map.h>
25 26
@@ -298,7 +299,7 @@ static int s3c_pm_enter(suspend_state_t state)
298 * we resume as it saves its own register state and restores it 299 * we resume as it saves its own register state and restores it
299 * during the resume. */ 300 * during the resume. */
300 301
301 cpu_suspend(0, PHYS_OFFSET - PAGE_OFFSET, 0, pm_cpu_sleep); 302 cpu_suspend(0, pm_cpu_sleep);
302 303
303 /* restore the system state */ 304 /* restore the system state */
304 305