Loading drivers/devfreq/devfreq.c +21 −12 Original line number Diff line number Diff line Loading @@ -522,7 +522,7 @@ static void devfreq_dev_release(struct device *dev) devfreq->profile->exit(devfreq->dev.parent); mutex_destroy(&devfreq->lock); mutex_destroy(&devfreq->sysfs_lock); mutex_destroy(&devfreq->event_lock); kfree(devfreq); } Loading Loading @@ -565,7 +565,7 @@ struct devfreq *devfreq_add_device(struct device *dev, } mutex_init(&devfreq->lock); mutex_init(&devfreq->sysfs_lock); mutex_init(&devfreq->event_lock); mutex_lock(&devfreq->lock); devfreq->dev.parent = dev; devfreq->dev.class = devfreq_class; Loading Loading @@ -777,14 +777,19 @@ EXPORT_SYMBOL(devm_devfreq_remove_device); */ int devfreq_suspend_device(struct devfreq *devfreq) { int ret; if (!devfreq) return -EINVAL; if (!devfreq->governor) return 0; return devfreq->governor->event_handler(devfreq, mutex_lock(&devfreq->event_lock); ret = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_SUSPEND, NULL); mutex_unlock(&devfreq->event_lock); return ret; } EXPORT_SYMBOL(devfreq_suspend_device); Loading @@ -798,14 +803,18 @@ EXPORT_SYMBOL(devfreq_suspend_device); */ int devfreq_resume_device(struct devfreq *devfreq) { int ret; if (!devfreq) return -EINVAL; if (!devfreq->governor) return 0; return devfreq->governor->event_handler(devfreq, mutex_lock(&devfreq->event_lock); ret = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_RESUME, NULL); mutex_unlock(&devfreq->event_lock); return ret; } EXPORT_SYMBOL(devfreq_resume_device); Loading Loading @@ -965,7 +974,7 @@ static ssize_t governor_store(struct device *dev, struct device_attribute *attr, goto out; } mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); if (df->governor) { ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL); if (ret) { Loading @@ -991,7 +1000,7 @@ static ssize_t governor_store(struct device *dev, struct device_attribute *attr, } gov_stop_out: mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); out: mutex_unlock(&devfreq_list_lock); Loading Loading @@ -1086,10 +1095,10 @@ static ssize_t polling_interval_store(struct device *dev, if (ret != 1) return -EINVAL; mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value); ret = count; mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); return ret; } Loading @@ -1107,7 +1116,7 @@ static ssize_t min_freq_store(struct device *dev, struct device_attribute *attr, if (ret != 1) return -EINVAL; mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); mutex_lock(&df->lock); max = df->max_freq; if (value && max && value > max) { Loading @@ -1120,7 +1129,7 @@ static ssize_t min_freq_store(struct device *dev, struct device_attribute *attr, ret = count; unlock: mutex_unlock(&df->lock); mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); return ret; } Loading @@ -1136,7 +1145,7 @@ static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr, if (ret != 1) return -EINVAL; mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); mutex_lock(&df->lock); min = df->min_freq; if (value && min && value < min) { Loading @@ -1149,7 +1158,7 @@ static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr, ret = count; unlock: mutex_unlock(&df->lock); mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); return ret; } Loading include/linux/devfreq.h +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ struct devfreq { struct list_head node; struct mutex lock; struct mutex sysfs_lock; struct mutex event_lock; struct device dev; struct devfreq_dev_profile *profile; const struct devfreq_governor *governor; Loading Loading
drivers/devfreq/devfreq.c +21 −12 Original line number Diff line number Diff line Loading @@ -522,7 +522,7 @@ static void devfreq_dev_release(struct device *dev) devfreq->profile->exit(devfreq->dev.parent); mutex_destroy(&devfreq->lock); mutex_destroy(&devfreq->sysfs_lock); mutex_destroy(&devfreq->event_lock); kfree(devfreq); } Loading Loading @@ -565,7 +565,7 @@ struct devfreq *devfreq_add_device(struct device *dev, } mutex_init(&devfreq->lock); mutex_init(&devfreq->sysfs_lock); mutex_init(&devfreq->event_lock); mutex_lock(&devfreq->lock); devfreq->dev.parent = dev; devfreq->dev.class = devfreq_class; Loading Loading @@ -777,14 +777,19 @@ EXPORT_SYMBOL(devm_devfreq_remove_device); */ int devfreq_suspend_device(struct devfreq *devfreq) { int ret; if (!devfreq) return -EINVAL; if (!devfreq->governor) return 0; return devfreq->governor->event_handler(devfreq, mutex_lock(&devfreq->event_lock); ret = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_SUSPEND, NULL); mutex_unlock(&devfreq->event_lock); return ret; } EXPORT_SYMBOL(devfreq_suspend_device); Loading @@ -798,14 +803,18 @@ EXPORT_SYMBOL(devfreq_suspend_device); */ int devfreq_resume_device(struct devfreq *devfreq) { int ret; if (!devfreq) return -EINVAL; if (!devfreq->governor) return 0; return devfreq->governor->event_handler(devfreq, mutex_lock(&devfreq->event_lock); ret = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_RESUME, NULL); mutex_unlock(&devfreq->event_lock); return ret; } EXPORT_SYMBOL(devfreq_resume_device); Loading Loading @@ -965,7 +974,7 @@ static ssize_t governor_store(struct device *dev, struct device_attribute *attr, goto out; } mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); if (df->governor) { ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL); if (ret) { Loading @@ -991,7 +1000,7 @@ static ssize_t governor_store(struct device *dev, struct device_attribute *attr, } gov_stop_out: mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); out: mutex_unlock(&devfreq_list_lock); Loading Loading @@ -1086,10 +1095,10 @@ static ssize_t polling_interval_store(struct device *dev, if (ret != 1) return -EINVAL; mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); df->governor->event_handler(df, DEVFREQ_GOV_INTERVAL, &value); ret = count; mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); return ret; } Loading @@ -1107,7 +1116,7 @@ static ssize_t min_freq_store(struct device *dev, struct device_attribute *attr, if (ret != 1) return -EINVAL; mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); mutex_lock(&df->lock); max = df->max_freq; if (value && max && value > max) { Loading @@ -1120,7 +1129,7 @@ static ssize_t min_freq_store(struct device *dev, struct device_attribute *attr, ret = count; unlock: mutex_unlock(&df->lock); mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); return ret; } Loading @@ -1136,7 +1145,7 @@ static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr, if (ret != 1) return -EINVAL; mutex_lock(&df->sysfs_lock); mutex_lock(&df->event_lock); mutex_lock(&df->lock); min = df->min_freq; if (value && min && value < min) { Loading @@ -1149,7 +1158,7 @@ static ssize_t max_freq_store(struct device *dev, struct device_attribute *attr, ret = count; unlock: mutex_unlock(&df->lock); mutex_unlock(&df->sysfs_lock); mutex_unlock(&df->event_lock); return ret; } Loading
include/linux/devfreq.h +1 −1 Original line number Diff line number Diff line Loading @@ -139,7 +139,7 @@ struct devfreq { struct list_head node; struct mutex lock; struct mutex sysfs_lock; struct mutex event_lock; struct device dev; struct devfreq_dev_profile *profile; const struct devfreq_governor *governor; Loading