diff options
Diffstat (limited to 'drivers/base/power/sysfs.c')
-rw-r--r-- | drivers/base/power/sysfs.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/drivers/base/power/sysfs.c b/drivers/base/power/sysfs.c index 156ab57bca77..632077f05c57 100644 --- a/drivers/base/power/sysfs.c +++ b/drivers/base/power/sysfs.c | |||
@@ -218,7 +218,14 @@ static ssize_t pm_qos_resume_latency_show(struct device *dev, | |||
218 | struct device_attribute *attr, | 218 | struct device_attribute *attr, |
219 | char *buf) | 219 | char *buf) |
220 | { | 220 | { |
221 | return sprintf(buf, "%d\n", dev_pm_qos_requested_resume_latency(dev)); | 221 | s32 value = dev_pm_qos_requested_resume_latency(dev); |
222 | |||
223 | if (value == 0) | ||
224 | return sprintf(buf, "n/a\n"); | ||
225 | else if (value == PM_QOS_RESUME_LATENCY_NO_CONSTRAINT) | ||
226 | value = 0; | ||
227 | |||
228 | return sprintf(buf, "%d\n", value); | ||
222 | } | 229 | } |
223 | 230 | ||
224 | static ssize_t pm_qos_resume_latency_store(struct device *dev, | 231 | static ssize_t pm_qos_resume_latency_store(struct device *dev, |
@@ -228,11 +235,21 @@ static ssize_t pm_qos_resume_latency_store(struct device *dev, | |||
228 | s32 value; | 235 | s32 value; |
229 | int ret; | 236 | int ret; |
230 | 237 | ||
231 | if (kstrtos32(buf, 0, &value)) | 238 | if (!kstrtos32(buf, 0, &value)) { |
232 | return -EINVAL; | 239 | /* |
240 | * Prevent users from writing negative or "no constraint" values | ||
241 | * directly. | ||
242 | */ | ||
243 | if (value < 0 || value == PM_QOS_RESUME_LATENCY_NO_CONSTRAINT) | ||
244 | return -EINVAL; | ||
233 | 245 | ||
234 | if (value < 0) | 246 | if (value == 0) |
247 | value = PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; | ||
248 | } else if (!strcmp(buf, "n/a") || !strcmp(buf, "n/a\n")) { | ||
249 | value = 0; | ||
250 | } else { | ||
235 | return -EINVAL; | 251 | return -EINVAL; |
252 | } | ||
236 | 253 | ||
237 | ret = dev_pm_qos_update_request(dev->power.qos->resume_latency_req, | 254 | ret = dev_pm_qos_update_request(dev->power.qos->resume_latency_req, |
238 | value); | 255 | value); |