pm.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:5k
- /*
- * pm.h - Power management interface
- *
- * Copyright (C) 2000 Andrew Henroid
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- #ifndef _LINUX_PM_H
- #define _LINUX_PM_H
- #ifdef __KERNEL__
- #include <linux/config.h>
- #include <linux/list.h>
- /*
- * Power management requests
- */
- enum
- {
- PM_SUSPEND, /* enter D1-D3 */
- PM_RESUME, /* enter D0 */
- PM_SAVE_STATE, /* save device's state */
- /* enable wake-on */
- PM_SET_WAKEUP,
- /* bus resource management */
- PM_GET_RESOURCES,
- PM_SET_RESOURCES,
- /* base station management */
- PM_EJECT,
- PM_LOCK,
- #ifdef CONFIG_MIZI
- /* initialization */
- PM_MZ_INIT,
- PM_MZ_EXIT,
- #endif
- };
- typedef int pm_request_t;
- /*
- * Device types
- */
- enum
- {
- PM_UNKNOWN_DEV = 0, /* generic */
- PM_SYS_DEV, /* system device (fan, KB controller, ...) */
- PM_PCI_DEV, /* PCI device */
- PM_USB_DEV, /* USB device */
- PM_SCSI_DEV, /* SCSI device */
- PM_ISA_DEV, /* ISA device */
- PM_MTD_DEV, /* Memory Technology Device */
- PM_ILLUMINATION_DEV, /* Display back or front light */
- #ifdef CONFIG_MIZI
- PM_USER_DEV, /* when wakeup, user must be handle this */
- PM_DEBUG_DEV, /* for DEBUGGING purpose */
- PM_GP_DEV, /* for OS switching */
- #endif
- };
- typedef int pm_dev_t;
- /*
- * System device hardware ID (PnP) values
- */
- enum
- {
- PM_SYS_UNKNOWN = 0x00000000, /* generic */
- PM_SYS_KBC = 0x41d00303, /* keyboard controller */
- PM_SYS_COM = 0x41d00500, /* serial port */
- PM_SYS_IRDA = 0x41d00510, /* IRDA controller */
- PM_SYS_FDC = 0x41d00700, /* floppy controller */
- PM_SYS_VGA = 0x41d00900, /* VGA controller */
- PM_SYS_PCMCIA = 0x41d00e00, /* PCMCIA controller */
- #ifdef CONFIG_MIZI
- /* new ID */
- PM_USER_LCD = 0x12340100, /* LCD */
- PM_USER_LIGHT = 0x12340101, /* Front/Back Light */
- PM_USER_INPUT = 0x12340200, /* INPUT device */
- PM_DEBUG_0 = 0x12380100,
- PM_DEBUG_1 = 0x12380101,
- PM_DEBUG_2 = 0x12380102,
- PM_SYS_MISC = 0x41d00b00,
- #endif
- };
- /*
- * Device identifier
- */
- #define PM_PCI_ID(dev) ((dev)->bus->number << 16 | (dev)->devfn)
- /*
- * Request handler callback
- */
- struct pm_dev;
- typedef int (*pm_callback)(struct pm_dev *dev, pm_request_t rqst, void *data);
- /*
- * Dynamic device information
- */
- struct pm_dev
- {
- pm_dev_t type;
- unsigned long id;
- pm_callback callback;
- void *data;
- unsigned long flags;
- int state;
- int prev_state;
- struct list_head entry;
- };
- #ifdef CONFIG_PM
- extern int pm_active;
- #define PM_IS_ACTIVE() (pm_active != 0)
- /*
- * Register a device with power management
- */
- struct pm_dev *pm_register(pm_dev_t type,
- unsigned long id,
- pm_callback callback);
- /*
- * Unregister a device with power management
- */
- void pm_unregister(struct pm_dev *dev);
- /*
- * Unregister all devices with matching callback
- */
- void pm_unregister_all(pm_callback callback);
- /*
- * Send a request to a single device
- */
- int pm_send(struct pm_dev *dev, pm_request_t rqst, void *data);
- /*
- * Send a request to all devices
- */
- int pm_send_all(pm_request_t rqst, void *data);
- /*
- * Find a device
- */
- struct pm_dev *pm_find(pm_dev_t type, struct pm_dev *from);
- #ifdef CONFIG_MIZI
- #include <linux/sched.h>
- extern unsigned long pm_last_jiffies;
- static inline void pm_access(struct pm_dev *dev) {
- pm_last_jiffies = jiffies;
- }
- #else
- static inline void pm_access(struct pm_dev *dev) {}
- #endif
- static inline void pm_dev_idle(struct pm_dev *dev) {}
- #else /* CONFIG_PM */
- #define PM_IS_ACTIVE() 0
- static inline struct pm_dev *pm_register(pm_dev_t type,
- unsigned long id,
- pm_callback callback)
- {
- return 0;
- }
- static inline void pm_unregister(struct pm_dev *dev) {}
- static inline void pm_unregister_all(pm_callback callback) {}
- static inline int pm_send(struct pm_dev *dev, pm_request_t rqst, void *data)
- {
- return 0;
- }
- static inline int pm_send_all(pm_request_t rqst, void *data)
- {
- return 0;
- }
- static inline struct pm_dev *pm_find(pm_dev_t type, struct pm_dev *from)
- {
- return 0;
- }
- static inline void pm_access(struct pm_dev *dev) {}
- static inline void pm_dev_idle(struct pm_dev *dev) {}
- #endif /* CONFIG_PM */
- extern void (*pm_idle)(void);
- extern void (*pm_power_off)(void);
- #endif /* __KERNEL__ */
- #endif /* _LINUX_PM_H */