diff options
Diffstat (limited to 'include/linux/devfreq.h')
-rw-r--r-- | include/linux/devfreq.h | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h index 98ce8124b1cc..281c72a3b9d5 100644 --- a/include/linux/devfreq.h +++ b/include/linux/devfreq.h | |||
@@ -44,6 +44,14 @@ struct devfreq_dev_status { | |||
44 | void *private_data; | 44 | void *private_data; |
45 | }; | 45 | }; |
46 | 46 | ||
47 | /* | ||
48 | * The resulting frequency should be at most this. (this bound is the | ||
49 | * least upper bound; thus, the resulting freq should be lower or same) | ||
50 | * If the flag is not set, the resulting frequency should be at most the | ||
51 | * bound (greatest lower bound) | ||
52 | */ | ||
53 | #define DEVFREQ_FLAG_LEAST_UPPER_BOUND 0x1 | ||
54 | |||
47 | /** | 55 | /** |
48 | * struct devfreq_dev_profile - Devfreq's user device profile | 56 | * struct devfreq_dev_profile - Devfreq's user device profile |
49 | * @initial_freq The operating frequency when devfreq_add_device() is | 57 | * @initial_freq The operating frequency when devfreq_add_device() is |
@@ -54,6 +62,8 @@ struct devfreq_dev_status { | |||
54 | * higher than any operable frequency, set maximum. | 62 | * higher than any operable frequency, set maximum. |
55 | * Before returning, target function should set | 63 | * Before returning, target function should set |
56 | * freq at the current frequency. | 64 | * freq at the current frequency. |
65 | * The "flags" parameter's possible values are | ||
66 | * explained above with "DEVFREQ_FLAG_*" macros. | ||
57 | * @get_dev_status The device should provide the current performance | 67 | * @get_dev_status The device should provide the current performance |
58 | * status to devfreq, which is used by governors. | 68 | * status to devfreq, which is used by governors. |
59 | * @exit An optional callback that is called when devfreq | 69 | * @exit An optional callback that is called when devfreq |
@@ -66,7 +76,7 @@ struct devfreq_dev_profile { | |||
66 | unsigned long initial_freq; | 76 | unsigned long initial_freq; |
67 | unsigned int polling_ms; | 77 | unsigned int polling_ms; |
68 | 78 | ||
69 | int (*target)(struct device *dev, unsigned long *freq); | 79 | int (*target)(struct device *dev, unsigned long *freq, u32 flags); |
70 | int (*get_dev_status)(struct device *dev, | 80 | int (*get_dev_status)(struct device *dev, |
71 | struct devfreq_dev_status *stat); | 81 | struct devfreq_dev_status *stat); |
72 | void (*exit)(struct device *dev); | 82 | void (*exit)(struct device *dev); |
@@ -124,6 +134,8 @@ struct devfreq_governor { | |||
124 | * touch this. | 134 | * touch this. |
125 | * @being_removed a flag to mark that this object is being removed in | 135 | * @being_removed a flag to mark that this object is being removed in |
126 | * order to prevent trying to remove the object multiple times. | 136 | * order to prevent trying to remove the object multiple times. |
137 | * @min_freq Limit minimum frequency requested by user (0: none) | ||
138 | * @max_freq Limit maximum frequency requested by user (0: none) | ||
127 | * | 139 | * |
128 | * This structure stores the devfreq information for a give device. | 140 | * This structure stores the devfreq information for a give device. |
129 | * | 141 | * |
@@ -149,6 +161,9 @@ struct devfreq { | |||
149 | void *data; /* private data for governors */ | 161 | void *data; /* private data for governors */ |
150 | 162 | ||
151 | bool being_removed; | 163 | bool being_removed; |
164 | |||
165 | unsigned long min_freq; | ||
166 | unsigned long max_freq; | ||
152 | }; | 167 | }; |
153 | 168 | ||
154 | #if defined(CONFIG_PM_DEVFREQ) | 169 | #if defined(CONFIG_PM_DEVFREQ) |
@@ -160,7 +175,7 @@ extern int devfreq_remove_device(struct devfreq *devfreq); | |||
160 | 175 | ||
161 | /* Helper functions for devfreq user device driver with OPP. */ | 176 | /* Helper functions for devfreq user device driver with OPP. */ |
162 | extern struct opp *devfreq_recommended_opp(struct device *dev, | 177 | extern struct opp *devfreq_recommended_opp(struct device *dev, |
163 | unsigned long *freq); | 178 | unsigned long *freq, u32 flags); |
164 | extern int devfreq_register_opp_notifier(struct device *dev, | 179 | extern int devfreq_register_opp_notifier(struct device *dev, |
165 | struct devfreq *devfreq); | 180 | struct devfreq *devfreq); |
166 | extern int devfreq_unregister_opp_notifier(struct device *dev, | 181 | extern int devfreq_unregister_opp_notifier(struct device *dev, |
@@ -200,18 +215,18 @@ struct devfreq_simple_ondemand_data { | |||
200 | static struct devfreq *devfreq_add_device(struct device *dev, | 215 | static struct devfreq *devfreq_add_device(struct device *dev, |
201 | struct devfreq_dev_profile *profile, | 216 | struct devfreq_dev_profile *profile, |
202 | struct devfreq_governor *governor, | 217 | struct devfreq_governor *governor, |
203 | void *data); | 218 | void *data) |
204 | { | 219 | { |
205 | return NULL; | 220 | return NULL; |
206 | } | 221 | } |
207 | 222 | ||
208 | static int devfreq_remove_device(struct devfreq *devfreq); | 223 | static int devfreq_remove_device(struct devfreq *devfreq) |
209 | { | 224 | { |
210 | return 0; | 225 | return 0; |
211 | } | 226 | } |
212 | 227 | ||
213 | static struct opp *devfreq_recommended_opp(struct device *dev, | 228 | static struct opp *devfreq_recommended_opp(struct device *dev, |
214 | unsigned long *freq) | 229 | unsigned long *freq, u32 flags) |
215 | { | 230 | { |
216 | return -EINVAL; | 231 | return -EINVAL; |
217 | } | 232 | } |