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 4ad9de94449a..4dcce54b6d76 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 |
