diff options
Diffstat (limited to 'include/linux/pm.h')
-rw-r--r-- | include/linux/pm.h | 109 |
1 files changed, 35 insertions, 74 deletions
diff --git a/include/linux/pm.h b/include/linux/pm.h index 4ad9de94449..4dcce54b6d7 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
@@ -22,78 +22,6 @@ | |||
22 | #define _LINUX_PM_H | 22 | #define _LINUX_PM_H |
23 | 23 | ||
24 | #include <linux/list.h> | 24 | #include <linux/list.h> |
25 | #include <asm/atomic.h> | ||
26 | #include <asm/errno.h> | ||
27 | |||
28 | /* | ||
29 | * Power management requests... these are passed to pm_send_all() and friends. | ||
30 | * | ||
31 | * these functions are old and deprecated, see below. | ||
32 | */ | ||
33 | typedef int __bitwise pm_request_t; | ||
34 | |||
35 | #define PM_SUSPEND ((__force pm_request_t) 1) /* enter D1-D3 */ | ||
36 | #define PM_RESUME ((__force pm_request_t) 2) /* enter D0 */ | ||
37 | |||
38 | |||
39 | /* | ||
40 | * Device types... these are passed to pm_register | ||
41 | */ | ||
42 | typedef int __bitwise pm_dev_t; | ||
43 | |||
44 | #define PM_UNKNOWN_DEV ((__force pm_dev_t) 0) /* generic */ | ||
45 | #define PM_SYS_DEV ((__force pm_dev_t) 1) /* system device (fan, KB controller, ...) */ | ||
46 | #define PM_PCI_DEV ((__force pm_dev_t) 2) /* PCI device */ | ||
47 | #define PM_USB_DEV ((__force pm_dev_t) 3) /* USB device */ | ||
48 | #define PM_SCSI_DEV ((__force pm_dev_t) 4) /* SCSI device */ | ||
49 | #define PM_ISA_DEV ((__force pm_dev_t) 5) /* ISA device */ | ||
50 | #define PM_MTD_DEV ((__force pm_dev_t) 6) /* Memory Technology Device */ | ||
51 | |||
52 | /* | ||
53 | * System device hardware ID (PnP) values | ||
54 | */ | ||
55 | enum | ||
56 | { | ||
57 | PM_SYS_UNKNOWN = 0x00000000, /* generic */ | ||
58 | PM_SYS_KBC = 0x41d00303, /* keyboard controller */ | ||
59 | PM_SYS_COM = 0x41d00500, /* serial port */ | ||
60 | PM_SYS_IRDA = 0x41d00510, /* IRDA controller */ | ||
61 | PM_SYS_FDC = 0x41d00700, /* floppy controller */ | ||
62 | PM_SYS_VGA = 0x41d00900, /* VGA controller */ | ||
63 | PM_SYS_PCMCIA = 0x41d00e00, /* PCMCIA controller */ | ||
64 | }; | ||
65 | |||
66 | /* | ||
67 | * Device identifier | ||
68 | */ | ||
69 | #define PM_PCI_ID(dev) ((dev)->bus->number << 16 | (dev)->devfn) | ||
70 | |||
71 | /* | ||
72 | * Request handler callback | ||
73 | */ | ||
74 | struct pm_dev; | ||
75 | |||
76 | typedef int (*pm_callback)(struct pm_dev *dev, pm_request_t rqst, void *data); | ||
77 | |||
78 | /* | ||
79 | * Dynamic device information | ||
80 | */ | ||
81 | struct pm_dev | ||
82 | { | ||
83 | pm_dev_t type; | ||
84 | unsigned long id; | ||
85 | pm_callback callback; | ||
86 | void *data; | ||
87 | |||
88 | unsigned long flags; | ||
89 | unsigned long state; | ||
90 | unsigned long prev_state; | ||
91 | |||
92 | struct list_head entry; | ||
93 | }; | ||
94 | |||
95 | /* Functions above this comment are list-based old-style power | ||
96 | * management. Please avoid using them. */ | ||
97 | 25 | ||
98 | /* | 26 | /* |
99 | * Callbacks for platform drivers to implement. | 27 | * Callbacks for platform drivers to implement. |
@@ -317,6 +245,21 @@ struct pm_ext_ops { | |||
317 | * RECOVER Creation of a hibernation image or restoration of the main | 245 | * RECOVER Creation of a hibernation image or restoration of the main |
318 | * memory contents from a hibernation image has failed, call | 246 | * memory contents from a hibernation image has failed, call |
319 | * ->thaw() and ->complete() for all devices. | 247 | * ->thaw() and ->complete() for all devices. |
248 | * | ||
249 | * The following PM_EVENT_ messages are defined for internal use by | ||
250 | * kernel subsystems. They are never issued by the PM core. | ||
251 | * | ||
252 | * USER_SUSPEND Manual selective suspend was issued by userspace. | ||
253 | * | ||
254 | * USER_RESUME Manual selective resume was issued by userspace. | ||
255 | * | ||
256 | * REMOTE_WAKEUP Remote-wakeup request was received from the device. | ||
257 | * | ||
258 | * AUTO_SUSPEND Automatic (device idle) runtime suspend was | ||
259 | * initiated by the subsystem. | ||
260 | * | ||
261 | * AUTO_RESUME Automatic (device needed) runtime resume was | ||
262 | * requested by a driver. | ||
320 | */ | 263 | */ |
321 | 264 | ||
322 | #define PM_EVENT_ON 0x0000 | 265 | #define PM_EVENT_ON 0x0000 |
@@ -328,9 +271,18 @@ struct pm_ext_ops { | |||
328 | #define PM_EVENT_THAW 0x0020 | 271 | #define PM_EVENT_THAW 0x0020 |
329 | #define PM_EVENT_RESTORE 0x0040 | 272 | #define PM_EVENT_RESTORE 0x0040 |
330 | #define PM_EVENT_RECOVER 0x0080 | 273 | #define PM_EVENT_RECOVER 0x0080 |
274 | #define PM_EVENT_USER 0x0100 | ||
275 | #define PM_EVENT_REMOTE 0x0200 | ||
276 | #define PM_EVENT_AUTO 0x0400 | ||
331 | 277 | ||
332 | #define PM_EVENT_SLEEP (PM_EVENT_SUSPEND | PM_EVENT_HIBERNATE) | 278 | #define PM_EVENT_SLEEP (PM_EVENT_SUSPEND | PM_EVENT_HIBERNATE) |
279 | #define PM_EVENT_USER_SUSPEND (PM_EVENT_USER | PM_EVENT_SUSPEND) | ||
280 | #define PM_EVENT_USER_RESUME (PM_EVENT_USER | PM_EVENT_RESUME) | ||
281 | #define PM_EVENT_REMOTE_WAKEUP (PM_EVENT_REMOTE | PM_EVENT_RESUME) | ||
282 | #define PM_EVENT_AUTO_SUSPEND (PM_EVENT_AUTO | PM_EVENT_SUSPEND) | ||
283 | #define PM_EVENT_AUTO_RESUME (PM_EVENT_AUTO | PM_EVENT_RESUME) | ||
333 | 284 | ||
285 | #define PMSG_ON ((struct pm_message){ .event = PM_EVENT_ON, }) | ||
334 | #define PMSG_FREEZE ((struct pm_message){ .event = PM_EVENT_FREEZE, }) | 286 | #define PMSG_FREEZE ((struct pm_message){ .event = PM_EVENT_FREEZE, }) |
335 | #define PMSG_QUIESCE ((struct pm_message){ .event = PM_EVENT_QUIESCE, }) | 287 | #define PMSG_QUIESCE ((struct pm_message){ .event = PM_EVENT_QUIESCE, }) |
336 | #define PMSG_SUSPEND ((struct pm_message){ .event = PM_EVENT_SUSPEND, }) | 288 | #define PMSG_SUSPEND ((struct pm_message){ .event = PM_EVENT_SUSPEND, }) |
@@ -339,7 +291,16 @@ struct pm_ext_ops { | |||
339 | #define PMSG_THAW ((struct pm_message){ .event = PM_EVENT_THAW, }) | 291 | #define PMSG_THAW ((struct pm_message){ .event = PM_EVENT_THAW, }) |
340 | #define PMSG_RESTORE ((struct pm_message){ .event = PM_EVENT_RESTORE, }) | 292 | #define PMSG_RESTORE ((struct pm_message){ .event = PM_EVENT_RESTORE, }) |
341 | #define PMSG_RECOVER ((struct pm_message){ .event = PM_EVENT_RECOVER, }) | 293 | #define PMSG_RECOVER ((struct pm_message){ .event = PM_EVENT_RECOVER, }) |
342 | #define PMSG_ON ((struct pm_message){ .event = PM_EVENT_ON, }) | 294 | #define PMSG_USER_SUSPEND ((struct pm_messge) \ |
295 | { .event = PM_EVENT_USER_SUSPEND, }) | ||
296 | #define PMSG_USER_RESUME ((struct pm_messge) \ | ||
297 | { .event = PM_EVENT_USER_RESUME, }) | ||
298 | #define PMSG_REMOTE_RESUME ((struct pm_messge) \ | ||
299 | { .event = PM_EVENT_REMOTE_RESUME, }) | ||
300 | #define PMSG_AUTO_SUSPEND ((struct pm_messge) \ | ||
301 | { .event = PM_EVENT_AUTO_SUSPEND, }) | ||
302 | #define PMSG_AUTO_RESUME ((struct pm_messge) \ | ||
303 | { .event = PM_EVENT_AUTO_RESUME, }) | ||
343 | 304 | ||
344 | /** | 305 | /** |
345 | * Device power management states | 306 | * Device power management states |