diff options
author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2019-10-16 06:47:53 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2019-10-20 20:05:21 -0400 |
commit | 2aac8bdf7a0fbd3e2a34141d28b57a7e21482cf7 (patch) | |
tree | b6bc48c48e518b7afce95beb31f7e371e9e75934 | |
parent | 3000ce3c52f8b8db093e4dc649cd172390f71137 (diff) |
PM: QoS: Drop frequency QoS types from device PM QoS
There are no more active users of DEV_PM_QOS_MIN_FREQUENCY and
DEV_PM_QOS_MAX_FREQUENCY device PM QoS request types, so drop them
along with the code supporting them.
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
-rw-r--r-- | drivers/base/power/qos.c | 70 | ||||
-rw-r--r-- | include/linux/pm_qos.h | 12 |
2 files changed, 2 insertions, 80 deletions
diff --git a/drivers/base/power/qos.c b/drivers/base/power/qos.c index 6c90fd7e2ff8..350dcafd751f 100644 --- a/drivers/base/power/qos.c +++ b/drivers/base/power/qos.c | |||
@@ -115,20 +115,10 @@ s32 dev_pm_qos_read_value(struct device *dev, enum dev_pm_qos_req_type type) | |||
115 | 115 | ||
116 | spin_lock_irqsave(&dev->power.lock, flags); | 116 | spin_lock_irqsave(&dev->power.lock, flags); |
117 | 117 | ||
118 | switch (type) { | 118 | if (type == DEV_PM_QOS_RESUME_LATENCY) { |
119 | case DEV_PM_QOS_RESUME_LATENCY: | ||
120 | ret = IS_ERR_OR_NULL(qos) ? PM_QOS_RESUME_LATENCY_NO_CONSTRAINT | 119 | ret = IS_ERR_OR_NULL(qos) ? PM_QOS_RESUME_LATENCY_NO_CONSTRAINT |
121 | : pm_qos_read_value(&qos->resume_latency); | 120 | : pm_qos_read_value(&qos->resume_latency); |
122 | break; | 121 | } else { |
123 | case DEV_PM_QOS_MIN_FREQUENCY: | ||
124 | ret = IS_ERR_OR_NULL(qos) ? PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE | ||
125 | : pm_qos_read_value(&qos->min_frequency); | ||
126 | break; | ||
127 | case DEV_PM_QOS_MAX_FREQUENCY: | ||
128 | ret = IS_ERR_OR_NULL(qos) ? PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE | ||
129 | : pm_qos_read_value(&qos->max_frequency); | ||
130 | break; | ||
131 | default: | ||
132 | WARN_ON(1); | 122 | WARN_ON(1); |
133 | ret = 0; | 123 | ret = 0; |
134 | } | 124 | } |
@@ -169,14 +159,6 @@ static int apply_constraint(struct dev_pm_qos_request *req, | |||
169 | req->dev->power.set_latency_tolerance(req->dev, value); | 159 | req->dev->power.set_latency_tolerance(req->dev, value); |
170 | } | 160 | } |
171 | break; | 161 | break; |
172 | case DEV_PM_QOS_MIN_FREQUENCY: | ||
173 | ret = pm_qos_update_target(&qos->min_frequency, | ||
174 | &req->data.pnode, action, value); | ||
175 | break; | ||
176 | case DEV_PM_QOS_MAX_FREQUENCY: | ||
177 | ret = pm_qos_update_target(&qos->max_frequency, | ||
178 | &req->data.pnode, action, value); | ||
179 | break; | ||
180 | case DEV_PM_QOS_FLAGS: | 162 | case DEV_PM_QOS_FLAGS: |
181 | ret = pm_qos_update_flags(&qos->flags, &req->data.flr, | 163 | ret = pm_qos_update_flags(&qos->flags, &req->data.flr, |
182 | action, value); | 164 | action, value); |
@@ -227,24 +209,6 @@ static int dev_pm_qos_constraints_allocate(struct device *dev) | |||
227 | c->no_constraint_value = PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT; | 209 | c->no_constraint_value = PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT; |
228 | c->type = PM_QOS_MIN; | 210 | c->type = PM_QOS_MIN; |
229 | 211 | ||
230 | c = &qos->min_frequency; | ||
231 | plist_head_init(&c->list); | ||
232 | c->target_value = PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE; | ||
233 | c->default_value = PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE; | ||
234 | c->no_constraint_value = PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE; | ||
235 | c->type = PM_QOS_MAX; | ||
236 | c->notifiers = ++n; | ||
237 | BLOCKING_INIT_NOTIFIER_HEAD(n); | ||
238 | |||
239 | c = &qos->max_frequency; | ||
240 | plist_head_init(&c->list); | ||
241 | c->target_value = PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE; | ||
242 | c->default_value = PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE; | ||
243 | c->no_constraint_value = PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE; | ||
244 | c->type = PM_QOS_MIN; | ||
245 | c->notifiers = ++n; | ||
246 | BLOCKING_INIT_NOTIFIER_HEAD(n); | ||
247 | |||
248 | INIT_LIST_HEAD(&qos->flags.list); | 212 | INIT_LIST_HEAD(&qos->flags.list); |
249 | 213 | ||
250 | spin_lock_irq(&dev->power.lock); | 214 | spin_lock_irq(&dev->power.lock); |
@@ -305,18 +269,6 @@ void dev_pm_qos_constraints_destroy(struct device *dev) | |||
305 | memset(req, 0, sizeof(*req)); | 269 | memset(req, 0, sizeof(*req)); |
306 | } | 270 | } |
307 | 271 | ||
308 | c = &qos->min_frequency; | ||
309 | plist_for_each_entry_safe(req, tmp, &c->list, data.pnode) { | ||
310 | apply_constraint(req, PM_QOS_REMOVE_REQ, PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE); | ||
311 | memset(req, 0, sizeof(*req)); | ||
312 | } | ||
313 | |||
314 | c = &qos->max_frequency; | ||
315 | plist_for_each_entry_safe(req, tmp, &c->list, data.pnode) { | ||
316 | apply_constraint(req, PM_QOS_REMOVE_REQ, PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE); | ||
317 | memset(req, 0, sizeof(*req)); | ||
318 | } | ||
319 | |||
320 | f = &qos->flags; | 272 | f = &qos->flags; |
321 | list_for_each_entry_safe(req, tmp, &f->list, data.flr.node) { | 273 | list_for_each_entry_safe(req, tmp, &f->list, data.flr.node) { |
322 | apply_constraint(req, PM_QOS_REMOVE_REQ, PM_QOS_DEFAULT_VALUE); | 274 | apply_constraint(req, PM_QOS_REMOVE_REQ, PM_QOS_DEFAULT_VALUE); |
@@ -428,8 +380,6 @@ static int __dev_pm_qos_update_request(struct dev_pm_qos_request *req, | |||
428 | switch(req->type) { | 380 | switch(req->type) { |
429 | case DEV_PM_QOS_RESUME_LATENCY: | 381 | case DEV_PM_QOS_RESUME_LATENCY: |
430 | case DEV_PM_QOS_LATENCY_TOLERANCE: | 382 | case DEV_PM_QOS_LATENCY_TOLERANCE: |
431 | case DEV_PM_QOS_MIN_FREQUENCY: | ||
432 | case DEV_PM_QOS_MAX_FREQUENCY: | ||
433 | curr_value = req->data.pnode.prio; | 383 | curr_value = req->data.pnode.prio; |
434 | break; | 384 | break; |
435 | case DEV_PM_QOS_FLAGS: | 385 | case DEV_PM_QOS_FLAGS: |
@@ -557,14 +507,6 @@ int dev_pm_qos_add_notifier(struct device *dev, struct notifier_block *notifier, | |||
557 | ret = blocking_notifier_chain_register(dev->power.qos->resume_latency.notifiers, | 507 | ret = blocking_notifier_chain_register(dev->power.qos->resume_latency.notifiers, |
558 | notifier); | 508 | notifier); |
559 | break; | 509 | break; |
560 | case DEV_PM_QOS_MIN_FREQUENCY: | ||
561 | ret = blocking_notifier_chain_register(dev->power.qos->min_frequency.notifiers, | ||
562 | notifier); | ||
563 | break; | ||
564 | case DEV_PM_QOS_MAX_FREQUENCY: | ||
565 | ret = blocking_notifier_chain_register(dev->power.qos->max_frequency.notifiers, | ||
566 | notifier); | ||
567 | break; | ||
568 | default: | 510 | default: |
569 | WARN_ON(1); | 511 | WARN_ON(1); |
570 | ret = -EINVAL; | 512 | ret = -EINVAL; |
@@ -604,14 +546,6 @@ int dev_pm_qos_remove_notifier(struct device *dev, | |||
604 | ret = blocking_notifier_chain_unregister(dev->power.qos->resume_latency.notifiers, | 546 | ret = blocking_notifier_chain_unregister(dev->power.qos->resume_latency.notifiers, |
605 | notifier); | 547 | notifier); |
606 | break; | 548 | break; |
607 | case DEV_PM_QOS_MIN_FREQUENCY: | ||
608 | ret = blocking_notifier_chain_unregister(dev->power.qos->min_frequency.notifiers, | ||
609 | notifier); | ||
610 | break; | ||
611 | case DEV_PM_QOS_MAX_FREQUENCY: | ||
612 | ret = blocking_notifier_chain_unregister(dev->power.qos->max_frequency.notifiers, | ||
613 | notifier); | ||
614 | break; | ||
615 | default: | 549 | default: |
616 | WARN_ON(1); | 550 | WARN_ON(1); |
617 | ret = -EINVAL; | 551 | ret = -EINVAL; |
diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h index 57b93e3d8f29..ebf5ef17cc2a 100644 --- a/include/linux/pm_qos.h +++ b/include/linux/pm_qos.h | |||
@@ -34,8 +34,6 @@ enum pm_qos_flags_status { | |||
34 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT PM_QOS_LATENCY_ANY | 34 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT PM_QOS_LATENCY_ANY |
35 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT_NS PM_QOS_LATENCY_ANY_NS | 35 | #define PM_QOS_RESUME_LATENCY_NO_CONSTRAINT_NS PM_QOS_LATENCY_ANY_NS |
36 | #define PM_QOS_LATENCY_TOLERANCE_DEFAULT_VALUE 0 | 36 | #define PM_QOS_LATENCY_TOLERANCE_DEFAULT_VALUE 0 |
37 | #define PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE 0 | ||
38 | #define PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE (-1) | ||
39 | #define PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT (-1) | 37 | #define PM_QOS_LATENCY_TOLERANCE_NO_CONSTRAINT (-1) |
40 | 38 | ||
41 | #define PM_QOS_FLAG_NO_POWER_OFF (1 << 0) | 39 | #define PM_QOS_FLAG_NO_POWER_OFF (1 << 0) |
@@ -54,8 +52,6 @@ struct pm_qos_flags_request { | |||
54 | enum dev_pm_qos_req_type { | 52 | enum dev_pm_qos_req_type { |
55 | DEV_PM_QOS_RESUME_LATENCY = 1, | 53 | DEV_PM_QOS_RESUME_LATENCY = 1, |
56 | DEV_PM_QOS_LATENCY_TOLERANCE, | 54 | DEV_PM_QOS_LATENCY_TOLERANCE, |
57 | DEV_PM_QOS_MIN_FREQUENCY, | ||
58 | DEV_PM_QOS_MAX_FREQUENCY, | ||
59 | DEV_PM_QOS_FLAGS, | 55 | DEV_PM_QOS_FLAGS, |
60 | }; | 56 | }; |
61 | 57 | ||
@@ -97,14 +93,10 @@ struct pm_qos_flags { | |||
97 | struct dev_pm_qos { | 93 | struct dev_pm_qos { |
98 | struct pm_qos_constraints resume_latency; | 94 | struct pm_qos_constraints resume_latency; |
99 | struct pm_qos_constraints latency_tolerance; | 95 | struct pm_qos_constraints latency_tolerance; |
100 | struct pm_qos_constraints min_frequency; | ||
101 | struct pm_qos_constraints max_frequency; | ||
102 | struct pm_qos_flags flags; | 96 | struct pm_qos_flags flags; |
103 | struct dev_pm_qos_request *resume_latency_req; | 97 | struct dev_pm_qos_request *resume_latency_req; |
104 | struct dev_pm_qos_request *latency_tolerance_req; | 98 | struct dev_pm_qos_request *latency_tolerance_req; |
105 | struct dev_pm_qos_request *flags_req; | 99 | struct dev_pm_qos_request *flags_req; |
106 | struct dev_pm_qos_request *min_frequency_req; | ||
107 | struct dev_pm_qos_request *max_frequency_req; | ||
108 | }; | 100 | }; |
109 | 101 | ||
110 | /* Action requested to pm_qos_update_target */ | 102 | /* Action requested to pm_qos_update_target */ |
@@ -199,10 +191,6 @@ static inline s32 dev_pm_qos_read_value(struct device *dev, | |||
199 | switch (type) { | 191 | switch (type) { |
200 | case DEV_PM_QOS_RESUME_LATENCY: | 192 | case DEV_PM_QOS_RESUME_LATENCY: |
201 | return PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; | 193 | return PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; |
202 | case DEV_PM_QOS_MIN_FREQUENCY: | ||
203 | return PM_QOS_MIN_FREQUENCY_DEFAULT_VALUE; | ||
204 | case DEV_PM_QOS_MAX_FREQUENCY: | ||
205 | return PM_QOS_MAX_FREQUENCY_DEFAULT_VALUE; | ||
206 | default: | 194 | default: |
207 | WARN_ON(1); | 195 | WARN_ON(1); |
208 | return 0; | 196 | return 0; |