Merge ../linus
[linux-drm-fsl-dcu.git] / arch / arm / mach-s3c2410 / pm.h
1 /* linux/arch/arm/mach-s3c2410/pm.h
2  *
3  * Copyright (c) 2004 Simtec Electronics
4  *      Written by Ben Dooks, <ben@simtec.co.uk>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9 */
10
11 /* s3c2410_pm_init
12  *
13  * called from board at initialisation time to setup the power
14  * management
15 */
16
17 #ifdef CONFIG_PM
18
19 extern __init int s3c2410_pm_init(void);
20
21 #else
22
23 static inline int s3c2410_pm_init(void)
24 {
25         return 0;
26 }
27 #endif
28
29 /* configuration for the IRQ mask over sleep */
30 extern unsigned long s3c_irqwake_intmask;
31 extern unsigned long s3c_irqwake_eintmask;
32
33 /* IRQ masks for IRQs allowed to go to sleep (see irq.c) */
34 extern unsigned long s3c_irqwake_intallow;
35 extern unsigned long s3c_irqwake_eintallow;
36
37 /* per-cpu sleep functions */
38
39 extern void (*pm_cpu_prep)(void);
40 extern void (*pm_cpu_sleep)(void);
41
42 /* Flags for PM Control */
43
44 extern unsigned long s3c_pm_flags;
45
46 /* from sleep.S */
47
48 extern int  s3c2410_cpu_save(unsigned long *saveblk);
49 extern void s3c2410_cpu_suspend(void);
50 extern void s3c2410_cpu_resume(void);
51
52 extern unsigned long s3c2410_sleep_save_phys;
53
54 /* sleep save info */
55
56 struct sleep_save {
57         void __iomem    *reg;
58         unsigned long   val;
59 };
60
61 #define SAVE_ITEM(x) \
62         { .reg = (x) }
63
64 extern void s3c2410_pm_do_save(struct sleep_save *ptr, int count);
65 extern void s3c2410_pm_do_restore(struct sleep_save *ptr, int count);
66
67 #ifdef CONFIG_PM
68 extern int s3c24xx_irq_suspend(struct sys_device *dev, pm_message_t state);
69 extern int s3c24xx_irq_resume(struct sys_device *dev);
70 #else
71 #define s3c24xx_irq_suspend NULL
72 #define s3c24xx_irq_resume  NULL
73 #endif