1 /* linux/include/asm-arm/plat-s3c24xx/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 s3c2410_pm_init(void)23static 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 74