summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2019-10-16 06:47:53 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2019-10-20 20:05:21 -0400
commit2aac8bdf7a0fbd3e2a34141d28b57a7e21482cf7 (patch)
treeb6bc48c48e518b7afce95beb31f7e371e9e75934
parent3000ce3c52f8b8db093e4dc649cd172390f71137 (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.c70
-rw-r--r--include/linux/pm_qos.h12
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 {
54enum dev_pm_qos_req_type { 52enum 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 {
97struct dev_pm_qos { 93struct 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;