Blame view
include/linux/pm_qos.h
5.38 KB
e8db0be12 PM QoS: Move and ... |
1 2 |
#ifndef _LINUX_PM_QOS_H #define _LINUX_PM_QOS_H |
d82b35186 pm qos infrastruc... |
3 4 |
/* interface for the pm_qos_power infrastructure of the linux kernel. * |
bf1db69fb pm_qos: spelling ... |
5 |
* Mark Gross <mgross@linux.intel.com> |
d82b35186 pm qos infrastruc... |
6 |
*/ |
82f682514 pm_qos: Get rid o... |
7 |
#include <linux/plist.h> |
d82b35186 pm qos infrastruc... |
8 9 |
#include <linux/notifier.h> #include <linux/miscdevice.h> |
1a9a91525 PM / QoS: Add fun... |
10 |
#include <linux/device.h> |
d82b35186 pm qos infrastruc... |
11 12 13 14 15 16 17 18 |
#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 |
333c5ae99 idle governor: Av... |
19 20 21 |
#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 |
91ff4cb80 PM QoS: Implement... |
22 |
#define PM_QOS_DEV_LAT_DEFAULT_VALUE 0 |
333c5ae99 idle governor: Av... |
23 |
|
cc7499861 PM QoS: Minor cle... |
24 25 |
struct pm_qos_request { struct plist_node node; |
82f682514 pm_qos: Get rid o... |
26 27 |
int pm_qos_class; }; |
d82b35186 pm qos infrastruc... |
28 |
|
91ff4cb80 PM QoS: Implement... |
29 30 31 32 |
struct dev_pm_qos_request { struct plist_node node; struct device *dev; }; |
4e1779baa PM QoS: Reorganiz... |
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
enum pm_qos_type { PM_QOS_UNITIALIZED, PM_QOS_MAX, /* return the largest value */ PM_QOS_MIN /* return the smallest value */ }; /* * Note: The lockless read path depends on the CPU accessing * target_value atomically. Atomic access is only guaranteed on all CPU * types linux supports for 32 bit quantites */ struct pm_qos_constraints { struct plist_head list; s32 target_value; /* Do not change to 64 bit */ s32 default_value; enum pm_qos_type type; struct blocking_notifier_head *notifiers; }; |
abe98ec2d PM QoS: Generaliz... |
51 52 53 54 55 56 |
/* Action requested to pm_qos_update_target */ enum pm_qos_req_action { PM_QOS_ADD_REQ, /* Add a new request */ PM_QOS_UPDATE_REQ, /* Update an existing request */ PM_QOS_REMOVE_REQ /* Remove an existing request */ }; |
91ff4cb80 PM QoS: Implement... |
57 58 59 60 |
static inline int dev_pm_qos_request_active(struct dev_pm_qos_request *req) { return req->dev != 0; } |
e8db0be12 PM QoS: Move and ... |
61 |
#ifdef CONFIG_PM |
abe98ec2d PM QoS: Generaliz... |
62 63 |
int pm_qos_update_target(struct pm_qos_constraints *c, struct plist_node *node, enum pm_qos_req_action action, int value); |
cc7499861 PM QoS: Minor cle... |
64 65 66 |
void pm_qos_add_request(struct pm_qos_request *req, int pm_qos_class, s32 value); void pm_qos_update_request(struct pm_qos_request *req, |
e8db0be12 PM QoS: Move and ... |
67 |
s32 new_value); |
cc7499861 PM QoS: Minor cle... |
68 |
void pm_qos_remove_request(struct pm_qos_request *req); |
d82b35186 pm qos infrastruc... |
69 |
|
ed77134bf PM QOS update |
70 71 72 |
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); |
cc7499861 PM QoS: Minor cle... |
73 |
int pm_qos_request_active(struct pm_qos_request *req); |
b66213cdb PM QoS: Add globa... |
74 |
s32 pm_qos_read_value(struct pm_qos_constraints *c); |
91ff4cb80 PM QoS: Implement... |
75 |
|
00dc9ad18 PM / Runtime: Use... |
76 |
s32 __dev_pm_qos_read_value(struct device *dev); |
1a9a91525 PM / QoS: Add fun... |
77 |
s32 dev_pm_qos_read_value(struct device *dev); |
91ff4cb80 PM QoS: Implement... |
78 79 80 81 82 83 84 85 |
int dev_pm_qos_add_request(struct device *dev, struct dev_pm_qos_request *req, s32 value); int dev_pm_qos_update_request(struct dev_pm_qos_request *req, s32 new_value); int dev_pm_qos_remove_request(struct dev_pm_qos_request *req); int dev_pm_qos_add_notifier(struct device *dev, struct notifier_block *notifier); int dev_pm_qos_remove_notifier(struct device *dev, struct notifier_block *notifier); |
b66213cdb PM QoS: Add globa... |
86 87 |
int dev_pm_qos_add_global_notifier(struct notifier_block *notifier); int dev_pm_qos_remove_global_notifier(struct notifier_block *notifier); |
91ff4cb80 PM QoS: Implement... |
88 89 |
void dev_pm_qos_constraints_init(struct device *dev); void dev_pm_qos_constraints_destroy(struct device *dev); |
40a5f8be2 PM / QoS: Introdu... |
90 91 |
int dev_pm_qos_add_ancestor_request(struct device *dev, struct dev_pm_qos_request *req, s32 value); |
e8db0be12 PM QoS: Move and ... |
92 |
#else |
abe98ec2d PM QoS: Generaliz... |
93 94 95 96 97 |
static inline int pm_qos_update_target(struct pm_qos_constraints *c, struct plist_node *node, enum pm_qos_req_action action, int value) { return 0; } |
cc7499861 PM QoS: Minor cle... |
98 |
static inline void pm_qos_add_request(struct pm_qos_request *req, |
e8db0be12 PM QoS: Move and ... |
99 100 |
int pm_qos_class, s32 value) { return; } |
cc7499861 PM QoS: Minor cle... |
101 |
static inline void pm_qos_update_request(struct pm_qos_request *req, |
e8db0be12 PM QoS: Move and ... |
102 103 |
s32 new_value) { return; } |
cc7499861 PM QoS: Minor cle... |
104 |
static inline void pm_qos_remove_request(struct pm_qos_request *req) |
e8db0be12 PM QoS: Move and ... |
105 106 107 108 109 110 111 112 113 114 |
{ 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; } |
cc7499861 PM QoS: Minor cle... |
115 |
static inline int pm_qos_request_active(struct pm_qos_request *req) |
e8db0be12 PM QoS: Move and ... |
116 |
{ return 0; } |
b66213cdb PM QoS: Add globa... |
117 118 |
static inline s32 pm_qos_read_value(struct pm_qos_constraints *c) { return 0; } |
91ff4cb80 PM QoS: Implement... |
119 |
|
00dc9ad18 PM / Runtime: Use... |
120 121 |
static inline s32 __dev_pm_qos_read_value(struct device *dev) { return 0; } |
1a9a91525 PM / QoS: Add fun... |
122 123 |
static inline s32 dev_pm_qos_read_value(struct device *dev) { return 0; } |
91ff4cb80 PM QoS: Implement... |
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
static inline int dev_pm_qos_add_request(struct device *dev, struct dev_pm_qos_request *req, s32 value) { return 0; } static inline int dev_pm_qos_update_request(struct dev_pm_qos_request *req, s32 new_value) { return 0; } static inline int dev_pm_qos_remove_request(struct dev_pm_qos_request *req) { return 0; } static inline int dev_pm_qos_add_notifier(struct device *dev, struct notifier_block *notifier) { return 0; } static inline int dev_pm_qos_remove_notifier(struct device *dev, struct notifier_block *notifier) { return 0; } |
b66213cdb PM QoS: Add globa... |
139 140 141 142 143 144 |
static inline int dev_pm_qos_add_global_notifier( struct notifier_block *notifier) { return 0; } static inline int dev_pm_qos_remove_global_notifier( struct notifier_block *notifier) { return 0; } |
91ff4cb80 PM QoS: Implement... |
145 |
static inline void dev_pm_qos_constraints_init(struct device *dev) |
1a9a91525 PM / QoS: Add fun... |
146 147 148 |
{ dev->power.power_state = PMSG_ON; } |
91ff4cb80 PM QoS: Implement... |
149 |
static inline void dev_pm_qos_constraints_destroy(struct device *dev) |
1a9a91525 PM / QoS: Add fun... |
150 151 152 |
{ dev->power.power_state = PMSG_INVALID; } |
40a5f8be2 PM / QoS: Introdu... |
153 154 155 |
static inline int dev_pm_qos_add_ancestor_request(struct device *dev, struct dev_pm_qos_request *req, s32 value) { return 0; } |
e8db0be12 PM QoS: Move and ... |
156 |
#endif |
d82b35186 pm qos infrastruc... |
157 |
|
82f682514 pm_qos: Get rid o... |
158 |
#endif |