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 19extern __init int s3c2410_pm_init(void); 20 21#else 22 23static inline int s3c2410_pm_init(void) 24{ 25 return 0; 26} 27#endif 28 29/* configuration for the IRQ mask over sleep */ 30extern unsigned long s3c_irqwake_intmask; 31extern unsigned long s3c_irqwake_eintmask; 32 33/* IRQ masks for IRQs allowed to go to sleep (see irq.c) */ 34extern unsigned long s3c_irqwake_intallow; 35extern unsigned long s3c_irqwake_eintallow; 36 37/* per-cpu sleep functions */ 38 39extern void (*pm_cpu_prep)(void); 40extern void (*pm_cpu_sleep)(void); 41 42/* Flags for PM Control */ 43 44extern unsigned long s3c_pm_flags; 45 46/* from sleep.S */ 47 48extern int s3c2410_cpu_save(unsigned long *saveblk); 49extern void s3c2410_cpu_suspend(void); 50extern void s3c2410_cpu_resume(void); 51 52extern unsigned long s3c2410_sleep_save_phys; 53 54/* sleep save info */ 55 56struct sleep_save { 57 void __iomem *reg; 58 unsigned long val; 59}; 60 61#define SAVE_ITEM(x) \ 62 { .reg = (x) } 63 64extern void s3c2410_pm_do_save(struct sleep_save *ptr, int count); 65extern void s3c2410_pm_do_restore(struct sleep_save *ptr, int count); 66 67#ifdef CONFIG_PM 68extern int s3c24xx_irq_suspend(struct sys_device *dev, pm_message_t state); 69extern 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