#include <linux/workqueue.h>
 #include <linux/thermal.h>
 #include <linux/cpufreq.h>
+#include <linux/cpumask.h>
 #include <linux/cpu_cooling.h>
 
 #include "omap-thermal.h"
                              struct thermal_cooling_device *cdev)
 {
        struct omap_thermal_data *data = thermal->devdata;
-       int max, id;
+       int id;
 
        if (IS_ERR_OR_NULL(data))
                return -ENODEV;
                return 0;
 
        id = data->sensor_id;
-       max = data->bg_ptr->conf->sensors[id].cooling_data.freq_clip_count;
 
        /* TODO: bind with min and max states */
        /* Simple thing, two trips, one passive another critical */
        return 0;
 }
 
-static int omap_thermal_build_cpufreq_clip(struct omap_bandgap *bg_ptr,
-                                          struct freq_clip_table **tab_ptr,
-                                          int *tab_size)
-{
-       struct cpufreq_frequency_table *freq_table;
-       struct freq_clip_table *tab;
-       int i, count = 0;
-
-       freq_table = cpufreq_frequency_get_table(0);
-       if (IS_ERR_OR_NULL(freq_table)) {
-               dev_err(bg_ptr->dev,
-                       "%s: failed to get cpufreq table (%p)\n",
-                       __func__, freq_table);
-               return -EINVAL;
-       }
-
-       for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) {
-               unsigned int freq = freq_table[i].frequency;
-               if (freq == CPUFREQ_ENTRY_INVALID)
-                       continue;
-               count++;
-       }
-
-       tab = devm_kzalloc(bg_ptr->dev, sizeof(*tab) * count, GFP_KERNEL);
-       if (!tab) {
-               dev_err(bg_ptr->dev,
-                       "%s: no memory available\n", __func__);
-               return -ENOMEM;
-       }
-
-       for (i = 0; freq_table[i].frequency != CPUFREQ_TABLE_END; i++) {
-               unsigned int freq = freq_table[i].frequency;
-
-               if (freq == CPUFREQ_ENTRY_INVALID)
-                       continue;
-
-               tab[count - i - 1].freq_clip_max = freq;
-               tab[count - i - 1].temp_level = OMAP_TRIP_HOT;
-               tab[count - i - 1].mask_val = cpumask_of(0);
-       }
-
-       *tab_ptr = tab;
-       *tab_size = count;
-
-       return 0;
-}
-
 int omap_thermal_register_cpu_cooling(struct omap_bandgap *bg_ptr, int id)
 {
        struct omap_thermal_data *data;
-       struct freq_clip_table *tab_ptr;
-       int tab_size, ret;
 
        data = omap_bandgap_get_sensor_data(bg_ptr, id);
        if (!data)
        if (!data)
                return -EINVAL;
 
-       ret = omap_thermal_build_cpufreq_clip(bg_ptr, &tab_ptr, &tab_size);
-       if (ret < 0) {
-               dev_err(bg_ptr->dev,
-                       "%s: failed to build cpufreq clip table\n", __func__);
-               return ret;
-       }
-
        /* Register cooling device */
-       data->cool_dev = cpufreq_cooling_register(tab_ptr, tab_size);
+       data->cool_dev = cpufreq_cooling_register(cpu_present_mask);
        if (IS_ERR_OR_NULL(data->cool_dev)) {
                dev_err(bg_ptr->dev,
                        "Failed to register cpufreq cooling device\n");
                return PTR_ERR(data->cool_dev);
        }
-       bg_ptr->conf->sensors[id].cooling_data.freq_clip_count = tab_size;
        omap_bandgap_set_sensor_data(bg_ptr, id, data);
 
        return 0;