diff options
Diffstat (limited to 'arch/mips/au1000/common/power.c')
-rw-r--r-- | arch/mips/au1000/common/power.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/arch/mips/au1000/common/power.c b/arch/mips/au1000/common/power.c index c40daccbb5b1..f85093b8d54d 100644 --- a/arch/mips/au1000/common/power.c +++ b/arch/mips/au1000/common/power.c | |||
@@ -34,11 +34,13 @@ | |||
34 | #include <linux/pm.h> | 34 | #include <linux/pm.h> |
35 | #include <linux/slab.h> | 35 | #include <linux/slab.h> |
36 | #include <linux/sysctl.h> | 36 | #include <linux/sysctl.h> |
37 | #include <linux/jiffies.h> | ||
37 | 38 | ||
38 | #include <asm/string.h> | 39 | #include <asm/string.h> |
39 | #include <asm/uaccess.h> | 40 | #include <asm/uaccess.h> |
40 | #include <asm/io.h> | 41 | #include <asm/io.h> |
41 | #include <asm/system.h> | 42 | #include <asm/system.h> |
43 | #include <asm/cacheflush.h> | ||
42 | #include <asm/mach-au1x00/au1000.h> | 44 | #include <asm/mach-au1x00/au1000.h> |
43 | 45 | ||
44 | #ifdef CONFIG_PM | 46 | #ifdef CONFIG_PM |
@@ -50,7 +52,7 @@ | |||
50 | # define DPRINTK(fmt, args...) | 52 | # define DPRINTK(fmt, args...) |
51 | #endif | 53 | #endif |
52 | 54 | ||
53 | static void calibrate_delay(void); | 55 | static void au1000_calibrate_delay(void); |
54 | 56 | ||
55 | extern void set_au1x00_speed(unsigned int new_freq); | 57 | extern void set_au1x00_speed(unsigned int new_freq); |
56 | extern unsigned int get_au1x00_speed(void); | 58 | extern unsigned int get_au1x00_speed(void); |
@@ -260,7 +262,7 @@ int au_sleep(void) | |||
260 | } | 262 | } |
261 | 263 | ||
262 | static int pm_do_sleep(ctl_table * ctl, int write, struct file *file, | 264 | static int pm_do_sleep(ctl_table * ctl, int write, struct file *file, |
263 | void *buffer, size_t * len) | 265 | void __user *buffer, size_t * len, loff_t *ppos) |
264 | { | 266 | { |
265 | int retval = 0; | 267 | int retval = 0; |
266 | #ifdef SLEEP_TEST_TIMEOUT | 268 | #ifdef SLEEP_TEST_TIMEOUT |
@@ -294,10 +296,9 @@ static int pm_do_sleep(ctl_table * ctl, int write, struct file *file, | |||
294 | } | 296 | } |
295 | 297 | ||
296 | static int pm_do_suspend(ctl_table * ctl, int write, struct file *file, | 298 | static int pm_do_suspend(ctl_table * ctl, int write, struct file *file, |
297 | void *buffer, size_t * len) | 299 | void __user *buffer, size_t * len, loff_t *ppos) |
298 | { | 300 | { |
299 | int retval = 0; | 301 | int retval = 0; |
300 | void au1k_wait(void); | ||
301 | 302 | ||
302 | if (!write) { | 303 | if (!write) { |
303 | *len = 0; | 304 | *len = 0; |
@@ -306,7 +307,7 @@ static int pm_do_suspend(ctl_table * ctl, int write, struct file *file, | |||
306 | if (retval) | 307 | if (retval) |
307 | return retval; | 308 | return retval; |
308 | suspend_mode = 1; | 309 | suspend_mode = 1; |
309 | au1k_wait(); | 310 | |
310 | retval = pm_send_all(PM_RESUME, (void *) 0); | 311 | retval = pm_send_all(PM_RESUME, (void *) 0); |
311 | } | 312 | } |
312 | return retval; | 313 | return retval; |
@@ -314,7 +315,7 @@ static int pm_do_suspend(ctl_table * ctl, int write, struct file *file, | |||
314 | 315 | ||
315 | 316 | ||
316 | static int pm_do_freq(ctl_table * ctl, int write, struct file *file, | 317 | static int pm_do_freq(ctl_table * ctl, int write, struct file *file, |
317 | void *buffer, size_t * len) | 318 | void __user *buffer, size_t * len, loff_t *ppos) |
318 | { | 319 | { |
319 | int retval = 0, i; | 320 | int retval = 0, i; |
320 | unsigned long val, pll; | 321 | unsigned long val, pll; |
@@ -409,14 +410,14 @@ static int pm_do_freq(ctl_table * ctl, int write, struct file *file, | |||
409 | 410 | ||
410 | 411 | ||
411 | /* We don't want _any_ interrupts other than | 412 | /* We don't want _any_ interrupts other than |
412 | * match20. Otherwise our calibrate_delay() | 413 | * match20. Otherwise our au1000_calibrate_delay() |
413 | * calculation will be off, potentially a lot. | 414 | * calculation will be off, potentially a lot. |
414 | */ | 415 | */ |
415 | intc0_mask = save_local_and_disable(0); | 416 | intc0_mask = save_local_and_disable(0); |
416 | intc1_mask = save_local_and_disable(1); | 417 | intc1_mask = save_local_and_disable(1); |
417 | local_enable_irq(AU1000_TOY_MATCH2_INT); | 418 | local_enable_irq(AU1000_TOY_MATCH2_INT); |
418 | spin_unlock_irqrestore(&pm_lock, flags); | 419 | spin_unlock_irqrestore(&pm_lock, flags); |
419 | calibrate_delay(); | 420 | au1000_calibrate_delay(); |
420 | restore_local_and_enable(0, intc0_mask); | 421 | restore_local_and_enable(0, intc0_mask); |
421 | restore_local_and_enable(1, intc1_mask); | 422 | restore_local_and_enable(1, intc1_mask); |
422 | return retval; | 423 | return retval; |
@@ -456,7 +457,7 @@ __initcall(pm_init); | |||
456 | better than 1% */ | 457 | better than 1% */ |
457 | #define LPS_PREC 8 | 458 | #define LPS_PREC 8 |
458 | 459 | ||
459 | static void calibrate_delay(void) | 460 | static void au1000_calibrate_delay(void) |
460 | { | 461 | { |
461 | unsigned long ticks, loopbit; | 462 | unsigned long ticks, loopbit; |
462 | int lps_precision = LPS_PREC; | 463 | int lps_precision = LPS_PREC; |