pm_qos.h 1.9 KB
Newer Older
1 2
#ifndef _LINUX_PM_QOS_H
#define _LINUX_PM_QOS_H
M
Mark Gross 已提交
3 4
/* interface for the pm_qos_power infrastructure of the linux kernel.
 *
R
Richard Hughes 已提交
5
 * Mark Gross <mgross@linux.intel.com>
M
Mark Gross 已提交
6
 */
7
#include <linux/plist.h>
M
Mark Gross 已提交
8 9 10 11 12 13 14 15 16 17 18
#include <linux/notifier.h>
#include <linux/miscdevice.h>

#define PM_QOS_RESERVED 0
#define PM_QOS_CPU_DMA_LATENCY 1
#define PM_QOS_NETWORK_LATENCY 2
#define PM_QOS_NETWORK_THROUGHPUT 3

#define PM_QOS_NUM_CLASSES 4
#define PM_QOS_DEFAULT_VALUE -1

19 20 21 22
#define PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE	(2000 * USEC_PER_SEC)
#define PM_QOS_NETWORK_LAT_DEFAULT_VALUE	(2000 * USEC_PER_SEC)
#define PM_QOS_NETWORK_THROUGHPUT_DEFAULT_VALUE	0

23 24 25 26
struct pm_qos_request_list {
	struct plist_node list;
	int pm_qos_class;
};
M
Mark Gross 已提交
27

28 29 30
#ifdef CONFIG_PM
void pm_qos_add_request(struct pm_qos_request_list *l,
			int pm_qos_class, s32 value);
M
Mark Gross 已提交
31
void pm_qos_update_request(struct pm_qos_request_list *pm_qos_req,
32
			   s32 new_value);
M
Mark Gross 已提交
33
void pm_qos_remove_request(struct pm_qos_request_list *pm_qos_req);
M
Mark Gross 已提交
34

M
Mark Gross 已提交
35 36 37
int pm_qos_request(int pm_qos_class);
int pm_qos_add_notifier(int pm_qos_class, struct notifier_block *notifier);
int pm_qos_remove_notifier(int pm_qos_class, struct notifier_block *notifier);
38
int pm_qos_request_active(struct pm_qos_request_list *req);
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
#else
static inline void pm_qos_add_request(struct pm_qos_request_list *l,
				      int pm_qos_class, s32 value)
			{ return; }
static inline void pm_qos_update_request(struct pm_qos_request_list *pm_qos_req,
					 s32 new_value)
			{ return; }
static inline void pm_qos_remove_request(struct pm_qos_request_list *pm_qos_req)
			{ return; }

static inline int pm_qos_request(int pm_qos_class)
			{ return 0; }
static inline int pm_qos_add_notifier(int pm_qos_class,
				      struct notifier_block *notifier)
			{ return 0; }
static inline int pm_qos_remove_notifier(int pm_qos_class,
					 struct notifier_block *notifier)
			{ return 0; }
static inline int pm_qos_request_active(struct pm_qos_request_list *req)
			{ return 0; }
#endif
M
Mark Gross 已提交
60

61
#endif