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