1/* arch/arm/plat-samsung/include/plat/pm.h 2 * 3 * Copyright (c) 2004 Simtec Electronics 4 * http://armlinux.simtec.co.uk/ 5 * Written by Ben Dooks, <ben@simtec.co.uk> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10*/ 11 12/* s3c_pm_init 13 * 14 * called from board at initialisation time to setup the power 15 * management 16*/ 17 18#include <plat/pm-common.h> 19 20struct device; 21 22#ifdef CONFIG_SAMSUNG_PM 23 24extern __init int s3c_pm_init(void); 25extern __init int s3c64xx_pm_init(void); 26 27#else 28 29static inline int s3c_pm_init(void) 30{ 31 return 0; 32} 33 34static inline int s3c64xx_pm_init(void) 35{ 36 return 0; 37} 38#endif 39 40/* configuration for the IRQ mask over sleep */ 41extern unsigned long s3c_irqwake_intmask; 42extern unsigned long s3c_irqwake_eintmask; 43 44/* IRQ masks for IRQs allowed to go to sleep (see irq.c) */ 45extern unsigned long s3c_irqwake_intallow; 46#ifdef CONFIG_PM_SLEEP 47extern unsigned long s3c_irqwake_eintallow; 48#else 49#define s3c_irqwake_eintallow 0 50#endif 51 52/* per-cpu sleep functions */ 53 54extern void (*pm_cpu_prep)(void); 55extern int (*pm_cpu_sleep)(unsigned long); 56 57/* Flags for PM Control */ 58 59extern unsigned long s3c_pm_flags; 60 61/* from sleep.S */ 62 63extern int s3c2410_cpu_suspend(unsigned long); 64 65#ifdef CONFIG_PM_SLEEP 66extern int s3c_irq_wake(struct irq_data *data, unsigned int state); 67extern void s3c_cpu_resume(void); 68#else 69#define s3c_irq_wake NULL 70#define s3c_cpu_resume NULL 71#endif 72 73#ifdef CONFIG_SAMSUNG_PM 74extern int s3c_irqext_wake(struct irq_data *data, unsigned int state); 75#else 76#define s3c_irqext_wake NULL 77#endif 78 79#ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK 80/** 81 * s3c_pm_debug_smdkled() - Debug PM suspend/resume via SMDK Board LEDs 82 * @set: set bits for the state of the LEDs 83 * @clear: clear bits for the state of the LEDs. 84 */ 85extern void s3c_pm_debug_smdkled(u32 set, u32 clear); 86 87#else 88static inline void s3c_pm_debug_smdkled(u32 set, u32 clear) { } 89#endif /* CONFIG_S3C_PM_DEBUG_LED_SMDK */ 90 91/** 92 * s3c_pm_configure_extint() - ensure pins are correctly set for IRQ 93 * 94 * Setup all the necessary GPIO pins for waking the system on external 95 * interrupt. 96 */ 97extern void s3c_pm_configure_extint(void); 98 99#ifdef CONFIG_GPIO_SAMSUNG 100/** 101 * samsung_pm_restore_gpios() - restore the state of the gpios after sleep. 102 * 103 * Restore the state of the GPIO pins after sleep, which may involve ensuring 104 * that we do not glitch the state of the pins from that the bootloader's 105 * resume code has done. 106*/ 107extern void samsung_pm_restore_gpios(void); 108 109/** 110 * samsung_pm_save_gpios() - save the state of the GPIOs for restoring after sleep. 111 * 112 * Save the GPIO states for resotration on resume. See samsung_pm_restore_gpios(). 113 */ 114extern void samsung_pm_save_gpios(void); 115#else 116static inline void samsung_pm_restore_gpios(void) {} 117static inline void samsung_pm_save_gpios(void) {} 118#endif 119 120extern void s3c_pm_save_core(void); 121extern void s3c_pm_restore_core(void); 122