@@ -66,8 +66,11 @@ struct cpufreq_cooling_device {
unsigned int cpufreq_val;
unsigned int max_level;
struct cpumask allowed_cpus;
+ struct list_head head;
};
+
static DEFINE_IDR(cpufreq_idr);
+static LIST_HEAD(cpufreq_dev_list);
static DEFINE_MUTEX(cooling_cpufreq_lock);
static unsigned int cpufreq_dev_count;
@@ -372,6 +375,7 @@ __cpufreq_cooling_register(struct device_node *np,
goto remove_idr;
cpufreq_dev->cool_dev = cool_dev;
+ INIT_LIST_HEAD(&cpufreq_dev->head);
mutex_lock(&cooling_cpufreq_lock);
@@ -381,6 +385,7 @@ __cpufreq_cooling_register(struct device_node *np,
CPUFREQ_POLICY_NOTIFIER);
cpufreq_dev_count++;
+ list_add(&cpufreq_dev->head, &cpufreq_dev_list);
mutex_unlock(&cooling_cpufreq_lock);
return cool_dev;
@@ -451,6 +456,7 @@ void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
cpufreq_dev = cdev->devdata;
mutex_lock(&cooling_cpufreq_lock);
cpufreq_dev_count--;
+ list_del(&cpufreq_dev->head);
/* Unregister the notifier for the last cpufreq cooling device */
if (cpufreq_dev_count == 0)
That will be used by later patches to iterate over all cpufreq cooling devices. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> --- drivers/thermal/cpu_cooling.c | 6 ++++++ 1 file changed, 6 insertions(+)