PM / Sleep: Add user space interface for manipulating wakeup sources, v3
[linux-2.6.git] / kernel / power / Kconfig
1 config SUSPEND
2         bool "Suspend to RAM and standby"
3         depends on ARCH_SUSPEND_POSSIBLE
4         default y
5         ---help---
6           Allow the system to enter sleep states in which main memory is
7           powered and thus its contents are preserved, such as the
8           suspend-to-RAM state (e.g. the ACPI S3 state).
9
10 config SUSPEND_FREEZER
11         bool "Enable freezer for suspend to RAM/standby" \
12                 if ARCH_WANTS_FREEZER_CONTROL || BROKEN
13         depends on SUSPEND
14         default y
15         help
16           This allows you to turn off the freezer for suspend. If this is
17           done, no tasks are frozen for suspend to RAM/standby.
18
19           Turning OFF this setting is NOT recommended! If in doubt, say Y.
20
21 config HAS_WAKELOCK
22         bool
23         default y
24
25 config WAKELOCK
26         bool
27         default y
28
29 config HIBERNATE_CALLBACKS
30         bool
31
32 config HIBERNATION
33         bool "Hibernation (aka 'suspend to disk')"
34         depends on SWAP && ARCH_HIBERNATION_POSSIBLE
35         select HIBERNATE_CALLBACKS
36         select LZO_COMPRESS
37         select LZO_DECOMPRESS
38         select CRC32
39         ---help---
40           Enable the suspend to disk (STD) functionality, which is usually
41           called "hibernation" in user interfaces.  STD checkpoints the
42           system and powers it off; and restores that checkpoint on reboot.
43
44           You can suspend your machine with 'echo disk > /sys/power/state'
45           after placing resume=/dev/swappartition on the kernel command line
46           in your bootloader's configuration file.
47
48           Alternatively, you can use the additional userland tools available
49           from <http://suspend.sf.net>.
50
51           In principle it does not require ACPI or APM, although for example
52           ACPI will be used for the final steps when it is available.  One
53           of the reasons to use software suspend is that the firmware hooks
54           for suspend states like suspend-to-RAM (STR) often don't work very
55           well with Linux.
56
57           It creates an image which is saved in your active swap. Upon the next
58           boot, pass the 'resume=/dev/swappartition' argument to the kernel to
59           have it detect the saved image, restore memory state from it, and
60           continue to run as before. If you do not want the previous state to
61           be reloaded, then use the 'noresume' kernel command line argument.
62           Note, however, that fsck will be run on your filesystems and you will
63           need to run mkswap against the swap partition used for the suspend.
64
65           It also works with swap files to a limited extent (for details see
66           <file:Documentation/power/swsusp-and-swap-files.txt>).
67
68           Right now you may boot without resuming and resume later but in the
69           meantime you cannot use the swap partition(s)/file(s) involved in
70           suspending.  Also in this case you must not use the filesystems
71           that were mounted before the suspend.  In particular, you MUST NOT
72           MOUNT any journaled filesystems mounted before the suspend or they
73           will get corrupted in a nasty way.
74
75           For more information take a look at <file:Documentation/power/swsusp.txt>.
76
77 config ARCH_SAVE_PAGE_KEYS
78         bool
79
80 config PM_STD_PARTITION
81         string "Default resume partition"
82         depends on HIBERNATION
83         default ""
84         ---help---
85           The default resume partition is the partition that the suspend-
86           to-disk implementation will look for a suspended disk image.
87
88           The partition specified here will be different for almost every user.
89           It should be a valid swap partition (at least for now) that is turned
90           on before suspending.
91
92           The partition specified can be overridden by specifying:
93
94                 resume=/dev/<other device>
95
96           which will set the resume partition to the device specified.
97
98           Note there is currently not a way to specify which device to save the
99           suspended image to. It will simply pick the first available swap
100           device.
101
102 config PM_SLEEP
103         def_bool y
104         depends on SUSPEND || HIBERNATE_CALLBACKS
105
106 config PM_SLEEP_SMP
107         def_bool y
108         depends on SMP
109         depends on ARCH_SUSPEND_POSSIBLE || ARCH_HIBERNATION_POSSIBLE
110         depends on PM_SLEEP
111         select HOTPLUG
112         select HOTPLUG_CPU
113
114 config PM_AUTOSLEEP
115         bool "Opportunistic sleep"
116         depends on PM_SLEEP
117         default n
118         ---help---
119         Allow the kernel to trigger a system transition into a global sleep
120         state automatically whenever there are no active wakeup sources.
121
122 config PM_WAKELOCKS
123         bool "User space wakeup sources interface"
124         depends on PM_SLEEP
125         default n
126         ---help---
127         Allow user space to create, activate and deactivate wakeup source
128         objects with the help of a sysfs-based interface.
129
130 config PM_RUNTIME
131         bool "Run-time PM core functionality"
132         depends on !IA64_HP_SIM
133         ---help---
134           Enable functionality allowing I/O devices to be put into energy-saving
135           (low power) states at run time (or autosuspended) after a specified
136           period of inactivity and woken up in response to a hardware-generated
137           wake-up event or a driver's request.
138
139           Hardware support is generally required for this functionality to work
140           and the bus type drivers of the buses the devices are on are
141           responsible for the actual handling of the autosuspend requests and
142           wake-up events.
143
144 config PM
145         def_bool y
146         depends on PM_SLEEP || PM_RUNTIME
147
148 config PM_DEBUG
149         bool "Power Management Debug Support"
150         depends on PM
151         ---help---
152         This option enables various debugging support in the Power Management
153         code. This is helpful when debugging and reporting PM bugs, like
154         suspend support.
155
156 config PM_ADVANCED_DEBUG
157         bool "Extra PM attributes in sysfs for low-level debugging/testing"
158         depends on PM_DEBUG
159         ---help---
160         Add extra sysfs attributes allowing one to access some Power Management
161         fields of device objects from user space.  If you are not a kernel
162         developer interested in debugging/testing Power Management, say "no".
163
164 config PM_TEST_SUSPEND
165         bool "Test suspend/resume and wakealarm during bootup"
166         depends on SUSPEND && PM_DEBUG && RTC_CLASS=y
167         ---help---
168         This option will let you suspend your machine during bootup, and
169         make it wake up a few seconds later using an RTC wakeup alarm.
170         Enable this with a kernel parameter like "test_suspend=mem".
171
172         You probably want to have your system's RTC driver statically
173         linked, ensuring that it's available when this test runs.
174
175 config CAN_PM_TRACE
176         def_bool y
177         depends on PM_DEBUG && PM_SLEEP
178
179 config PM_TRACE
180         bool
181         help
182           This enables code to save the last PM event point across
183           reboot. The architecture needs to support this, x86 for
184           example does by saving things in the RTC, see below.
185
186           The architecture specific code must provide the extern
187           functions from <linux/resume-trace.h> as well as the
188           <asm/resume-trace.h> header with a TRACE_RESUME() macro.
189
190           The way the information is presented is architecture-
191           dependent, x86 will print the information during a
192           late_initcall.
193
194 config PM_TRACE_RTC
195         bool "Suspend/resume event tracing"
196         depends on CAN_PM_TRACE
197         depends on X86
198         select PM_TRACE
199         ---help---
200         This enables some cheesy code to save the last PM event point in the
201         RTC across reboots, so that you can debug a machine that just hangs
202         during suspend (or more commonly, during resume).
203
204         To use this debugging feature you should attempt to suspend the
205         machine, reboot it and then run
206
207                 dmesg -s 1000000 | grep 'hash matches'
208
209         CAUTION: this option will cause your machine's real-time clock to be
210         set to an invalid time after a resume.
211
212 config APM_EMULATION
213         tristate "Advanced Power Management Emulation"
214         depends on PM && SYS_SUPPORTS_APM_EMULATION
215         help
216           APM is a BIOS specification for saving power using several different
217           techniques. This is mostly useful for battery powered laptops with
218           APM compliant BIOSes. If you say Y here, the system time will be
219           reset after a RESUME operation, the /proc/apm device will provide
220           battery status information, and user-space programs will receive
221           notification of APM "events" (e.g. battery status change).
222
223           In order to use APM, you will need supporting software. For location
224           and more information, read <file:Documentation/power/apm-acpi.txt>
225           and the Battery Powered Linux mini-HOWTO, available from
226           <http://www.tldp.org/docs.html#howto>.
227
228           This driver does not spin down disk drives (see the hdparm(8)
229           manpage ("man 8 hdparm") for that), and it doesn't turn off
230           VESA-compliant "green" monitors.
231
232           Generally, if you don't have a battery in your machine, there isn't
233           much point in using this driver and you should say N. If you get
234           random kernel OOPSes or reboots that don't seem to be related to
235           anything, try disabling/enabling this option (or disabling/enabling
236           APM in your BIOS).
237
238 config ARCH_HAS_OPP
239         bool
240
241 config PM_OPP
242         bool "Operating Performance Point (OPP) Layer library"
243         depends on ARCH_HAS_OPP
244         ---help---
245           SOCs have a standard set of tuples consisting of frequency and
246           voltage pairs that the device will support per voltage domain. This
247           is called Operating Performance Point or OPP. The actual definitions
248           of OPP varies over silicon within the same family of devices.
249
250           OPP layer organizes the data internally using device pointers
251           representing individual voltage domains and provides SOC
252           implementations a ready to use framework to manage OPPs.
253           For more information, read <file:Documentation/power/opp.txt>
254
255 config PM_CLK
256         def_bool y
257         depends on PM && HAVE_CLK
258
259 config PM_GENERIC_DOMAINS
260         bool
261         depends on PM
262
263 config PM_GENERIC_DOMAINS_RUNTIME
264         def_bool y
265         depends on PM_RUNTIME && PM_GENERIC_DOMAINS
266
267 config CPU_PM
268         bool
269         depends on SUSPEND || CPU_IDLE