Merge "PM / devfreq: Remove dependencies between sysfs nodes and suspend count"

This commit is contained in:
qctecmdr 2020-02-25 22:31:32 -08:00 • committed by Gerrit - the friendly Code Review server
commit 1c13ebd77e

View file

@ -888,31 +888,30 @@ EXPORT_SYMBOL(devm_devfreq_remove_device);
*/
int devfreq_suspend_device(struct devfreq *devfreq)
{
int ret = 0;
int ret;
if (!devfreq)
return -EINVAL;
event_mutex_lock(devfreq);
if (atomic_inc_return(&devfreq->suspend_count) > 1)
goto unlock_out;
return 0;
if (devfreq->governor) {
event_mutex_lock(devfreq);
ret = devfreq->governor->event_handler(devfreq,
DEVFREQ_GOV_SUSPEND, NULL);
event_mutex_unlock(devfreq);
if (ret)
goto unlock_out;
return ret;
}
if (devfreq->suspend_freq) {
ret = devfreq_set_target(devfreq, devfreq->suspend_freq, 0);
if (ret)
goto unlock_out;
return ret;
}
unlock_out:
event_mutex_unlock(devfreq);
return ret;
return 0;
}
EXPORT_SYMBOL(devfreq_suspend_device);
@ -926,31 +925,30 @@ EXPORT_SYMBOL(devfreq_suspend_device);
*/
int devfreq_resume_device(struct devfreq *devfreq)
{
int ret = 0;
int ret;
if (!devfreq)
return -EINVAL;
event_mutex_lock(devfreq);
if (atomic_dec_return(&devfreq->suspend_count) >= 1)
goto unlock_out;
return 0;
if (devfreq->resume_freq) {
ret = devfreq_set_target(devfreq, devfreq->resume_freq, 0);
if (ret)
goto unlock_out;
return ret;
}
if (devfreq->governor) {
event_mutex_lock(devfreq);
ret = devfreq->governor->event_handler(devfreq,
DEVFREQ_GOV_RESUME, NULL);
event_mutex_unlock(devfreq);
if (ret)
goto unlock_out;
return ret;
}
unlock_out:
event_mutex_unlock(devfreq);
return ret;
return 0;
}
EXPORT_SYMBOL(devfreq_resume_device);
@ -1155,10 +1153,6 @@ static ssize_t governor_store(struct device *dev, struct device_attribute *attr,
}
event_mutex_lock(df);
if (atomic_read(&df->suspend_count) > 0) {
ret = -EINVAL;
goto gov_stop_out;
}
if (df->governor) {
ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL);
if (ret) {
@ -1275,16 +1269,14 @@ static ssize_t polling_interval_store(struct device *dev,
unsigned int value;
int ret;
if (!df->governor)
return -EINVAL;
ret = sscanf(buf, "%u", &value);
if (ret != 1)
return -EINVAL;
event_mutex_lock(df);
if (!df->governor || atomic_read(&df->suspend_count) > 0) {
dev_warn(dev, "device suspended, operation not allowed\n");
event_mutex_unlock(df);
return -EINVAL;
}
df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value);
ret = count;
event_mutex_unlock(df);
@ -1305,11 +1297,6 @@ static ssize_t min_freq_store(struct device *dev, struct device_attribute *attr,
return -EINVAL;
event_mutex_lock(df);
if (atomic_read(&df->suspend_count) > 0) {
dev_warn(dev, "device suspended, min freq not allowed\n");
event_mutex_unlock(df);
return -EINVAL;
}
mutex_lock(&df->lock);
if (value) {
@ -1356,11 +1343,6 @@ static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr,
return -EINVAL;
event_mutex_lock(df);
if (atomic_read(&df->suspend_count) > 0) {
event_mutex_unlock(df);
dev_warn(dev, "device suspended, max freq not allowed\n");
return -EINVAL;
}
mutex_lock(&df->lock);
if (value) {