PM: Introduce core framework for run-time PM of I/O devices (rev. 17)
[linux-2.6.git] / kernel / power / Kconfig
index 14b0e10..91e09d3 100644 (file)
@@ -19,16 +19,6 @@ config PM
          will issue the hlt instruction if nothing is to be done, thereby
          sending the processor to sleep and saving power.
 
-config PM_LEGACY
-       bool "Legacy Power Management API (DEPRECATED)"
-       depends on PM
-       default n
-       ---help---
-          Support for pm_register() and friends.  This old API is obsoleted
-          by the driver model.
-
-          If unsure, say N.
-
 config PM_DEBUG
        bool "Power Management Debug Support"
        depends on PM
@@ -44,28 +34,38 @@ config PM_VERBOSE
        ---help---
        This option enables verbose messages from the Power Management code.
 
-config DISABLE_CONSOLE_SUSPEND
-       bool "Keep console(s) enabled during suspend/resume (DANGEROUS)"
-       depends on PM_DEBUG && PM_SLEEP
-       default n
-       ---help---
-       This option turns off the console suspend mechanism that prevents
-       debug messages from reaching the console during the suspend/resume
-       operations.  This may be helpful when debugging device drivers'
-       suspend/resume routines, but may itself lead to problems, for example
-       if netconsole is used.
+config CAN_PM_TRACE
+       def_bool y
+       depends on PM_DEBUG && PM_SLEEP && EXPERIMENTAL
 
 config PM_TRACE
+       bool
+       help
+         This enables code to save the last PM event point across
+         reboot. The architecture needs to support this, x86 for
+         example does by saving things in the RTC, see below.
+
+         The architecture specific code must provide the extern
+         functions from <linux/resume-trace.h> as well as the
+         <asm/resume-trace.h> header with a TRACE_RESUME() macro.
+
+         The way the information is presented is architecture-
+         dependent, x86 will print the information during a
+         late_initcall.
+
+config PM_TRACE_RTC
        bool "Suspend/resume event tracing"
-       depends on PM_DEBUG && X86 && PM_SLEEP && EXPERIMENTAL
+       depends on CAN_PM_TRACE
+       depends on X86
+       select PM_TRACE
        default n
        ---help---
        This enables some cheesy code to save the last PM event point in the
        RTC across reboots, so that you can debug a machine that just hangs
        during suspend (or more commonly, during resume).
 
-       To use this debugging feature you should attempt to suspend the machine,
-       then reboot it, then run
+       To use this debugging feature you should attempt to suspend the
+       machine, reboot it and then run
 
                dmesg -s 1000000 | grep 'hash matches'
 
@@ -74,62 +74,64 @@ config PM_TRACE
 
 config PM_SLEEP_SMP
        bool
-       depends on SUSPEND_SMP_POSSIBLE || HIBERNATION_SMP_POSSIBLE
+       depends on SMP
+       depends on ARCH_SUSPEND_POSSIBLE || ARCH_HIBERNATION_POSSIBLE
        depends on PM_SLEEP
        select HOTPLUG_CPU
        default y
 
 config PM_SLEEP
        bool
-       depends on SUSPEND || HIBERNATION
-       default y
-
-config SUSPEND_UP_POSSIBLE
-       bool
-       depends on (X86 && !X86_VOYAGER) || PPC || ARM || BLACKFIN || MIPS \
-                  || SUPERH || FRV
-       depends on !SMP
-       default y
-
-config SUSPEND_SMP_POSSIBLE
-       bool
-       depends on (X86 && !X86_VOYAGER) \
-                  || (PPC && (PPC_PSERIES || PPC_PMAC)) || ARM
-       depends on SMP
+       depends on SUSPEND || HIBERNATION || XEN_SAVE_RESTORE
        default y
 
 config SUSPEND
        bool "Suspend to RAM and standby"
-       depends on PM
-       depends on SUSPEND_UP_POSSIBLE || SUSPEND_SMP_POSSIBLE
+       depends on PM && ARCH_SUSPEND_POSSIBLE
        default y
        ---help---
          Allow the system to enter sleep states in which main memory is
          powered and thus its contents are preserved, such as the
-         suspend-to-RAM state (i.e. the ACPI S3 state).
+         suspend-to-RAM state (e.g. the ACPI S3 state).
 
-config HIBERNATION_UP_POSSIBLE
-       bool
-       depends on X86 || PPC64_SWSUSP || PPC32
-       depends on !SMP
+config PM_TEST_SUSPEND
+       bool "Test suspend/resume and wakealarm during bootup"
+       depends on SUSPEND && PM_DEBUG && RTC_CLASS=y
+       ---help---
+       This option will let you suspend your machine during bootup, and
+       make it wake up a few seconds later using an RTC wakeup alarm.
+       Enable this with a kernel parameter like "test_suspend=mem".
+
+       You probably want to have your system's RTC driver statically
+       linked, ensuring that it's available when this test runs.
+
+config SUSPEND_FREEZER
+       bool "Enable freezer for suspend to RAM/standby" \
+               if ARCH_WANTS_FREEZER_CONTROL || BROKEN
+       depends on SUSPEND
        default y
+       help
+         This allows you to turn off the freezer for suspend. If this is
+         done, no tasks are frozen for suspend to RAM/standby.
+
+         Turning OFF this setting is NOT recommended! If in doubt, say Y.
 
-config HIBERNATION_SMP_POSSIBLE
+config HIBERNATION_NVS
        bool
-       depends on (X86 && !X86_VOYAGER) || PPC64_SWSUSP
-       depends on SMP
-       default y
 
 config HIBERNATION
        bool "Hibernation (aka 'suspend to disk')"
-       depends on PM && SWAP
-       depends on HIBERNATION_UP_POSSIBLE || HIBERNATION_SMP_POSSIBLE
+       depends on PM && SWAP && ARCH_HIBERNATION_POSSIBLE
+       select HIBERNATION_NVS if HAS_IOMEM
        ---help---
          Enable the suspend to disk (STD) functionality, which is usually
          called "hibernation" in user interfaces.  STD checkpoints the
          system and powers it off; and restores that checkpoint on reboot.
 
-         You can suspend your machine with 'echo disk > /sys/power/state'.
+         You can suspend your machine with 'echo disk > /sys/power/state'
+         after placing resume=/dev/swappartition on the kernel command line
+         in your bootloader's configuration file.
+
          Alternatively, you can use the additional userland tools available
          from <http://suspend.sf.net>.
 
@@ -193,7 +195,7 @@ config APM_EMULATION
          notification of APM "events" (e.g. battery status change).
 
          In order to use APM, you will need supporting software. For location
-         and more information, read <file:Documentation/pm.txt> and the
+         and more information, read <file:Documentation/power/pm.txt> and the
          Battery Powered Linux mini-HOWTO, available from
          <http://www.tldp.org/docs.html#howto>.
 
@@ -206,3 +208,17 @@ config APM_EMULATION
          random kernel OOPSes or reboots that don't seem to be related to
          anything, try disabling/enabling this option (or disabling/enabling
          APM in your BIOS).
+
+config PM_RUNTIME
+       bool "Run-time PM core functionality"
+       depends on PM
+       ---help---
+         Enable functionality allowing I/O devices to be put into energy-saving
+         (low power) states at run time (or autosuspended) after a specified
+         period of inactivity and woken up in response to a hardware-generated
+         wake-up event or a driver's request.
+
+         Hardware support is generally required for this functionality to work
+         and the bus type drivers of the buses the devices are on are
+         responsible for the actual handling of the autosuspend requests and
+         wake-up events.