thermal: ti-soc-thermal: Set the bandgap mask counter delay value
[deliverable/linux.git] / drivers / thermal / ti-soc-thermal / ti-thermal-common.c
index 8e67ebf98404bcc69dad79f146133ba17d52d17e..4f8b9af54a5a75d1de884a342920ccb50f9ba869 100644 (file)
@@ -101,7 +101,7 @@ static inline int ti_thermal_get_temp(struct thermal_zone_device *thermal,
 
        pcb_tz = data->pcb_tz;
        /* In case pcb zone is available, use the extrapolation rule with it */
-       if (!IS_ERR_OR_NULL(pcb_tz)) {
+       if (!IS_ERR(pcb_tz)) {
                ret = thermal_zone_get_temp(pcb_tz, &pcb_temp);
                if (!ret) {
                        tmp -= pcb_temp; /* got a valid PCB temp */
@@ -124,7 +124,7 @@ static int ti_thermal_bind(struct thermal_zone_device *thermal,
        struct ti_thermal_data *data = thermal->devdata;
        int id;
 
-       if (IS_ERR_OR_NULL(data))
+       if (!data || IS_ERR(data))
                return -ENODEV;
 
        /* check if this is the cooling device we registered */
@@ -146,7 +146,7 @@ static int ti_thermal_unbind(struct thermal_zone_device *thermal,
 {
        struct ti_thermal_data *data = thermal->devdata;
 
-       if (IS_ERR_OR_NULL(data))
+       if (!data || IS_ERR(data))
                return -ENODEV;
 
        /* check if this is the cooling device we registered */
@@ -174,6 +174,9 @@ static int ti_thermal_set_mode(struct thermal_zone_device *thermal,
                               enum thermal_device_mode mode)
 {
        struct ti_thermal_data *data = thermal->devdata;
+       struct ti_bandgap *bgp;
+
+       bgp = data->bgp;
 
        if (!data->ti_thermal) {
                dev_notice(&thermal->device, "thermal zone not registered\n");
@@ -190,6 +193,8 @@ static int ti_thermal_set_mode(struct thermal_zone_device *thermal,
        mutex_unlock(&data->ti_thermal->lock);
 
        data->mode = mode;
+       ti_bandgap_write_update_interval(bgp, data->sensor_id,
+                                       data->ti_thermal->polling_delay);
        thermal_zone_device_update(data->ti_thermal);
        dev_dbg(&thermal->device, "thermal polling set for duration=%d msec\n",
                data->ti_thermal->polling_delay);
@@ -282,6 +287,7 @@ static struct ti_thermal_data
        data->sensor_id = id;
        data->bgp = bgp;
        data->mode = THERMAL_DEVICE_ENABLED;
+       /* pcb_tz will be either valid or PTR_ERR() */
        data->pcb_tz = thermal_zone_get_zone_by_name("pcb");
        INIT_WORK(&data->thermal_wq, ti_thermal_work);
 
@@ -295,7 +301,7 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
 
        data = ti_bandgap_get_sensor_data(bgp, id);
 
-       if (IS_ERR_OR_NULL(data))
+       if (!data || IS_ERR(data))
                data = ti_thermal_build_data(bgp, id);
 
        if (!data)
@@ -306,12 +312,14 @@ int ti_thermal_expose_sensor(struct ti_bandgap *bgp, int id,
                                OMAP_TRIP_NUMBER, 0, data, &ti_thermal_ops,
                                NULL, FAST_TEMP_MONITORING_RATE,
                                FAST_TEMP_MONITORING_RATE);
-       if (IS_ERR_OR_NULL(data->ti_thermal)) {
+       if (IS_ERR(data->ti_thermal)) {
                dev_err(bgp->dev, "thermal zone device is NULL\n");
                return PTR_ERR(data->ti_thermal);
        }
        data->ti_thermal->polling_delay = FAST_TEMP_MONITORING_RATE;
        ti_bandgap_set_sensor_data(bgp, id, data);
+       ti_bandgap_write_update_interval(bgp, data->sensor_id,
+                                       data->ti_thermal->polling_delay);
 
        return 0;
 }
@@ -343,7 +351,7 @@ int ti_thermal_register_cpu_cooling(struct ti_bandgap *bgp, int id)
        struct ti_thermal_data *data;
 
        data = ti_bandgap_get_sensor_data(bgp, id);
-       if (IS_ERR_OR_NULL(data))
+       if (!data || IS_ERR(data))
                data = ti_thermal_build_data(bgp, id);
 
        if (!data)
@@ -356,7 +364,7 @@ int ti_thermal_register_cpu_cooling(struct ti_bandgap *bgp, int id)
 
        /* Register cooling device */
        data->cool_dev = cpufreq_cooling_register(cpu_present_mask);
-       if (IS_ERR_OR_NULL(data->cool_dev)) {
+       if (IS_ERR(data->cool_dev)) {
                dev_err(bgp->dev,
                        "Failed to register cpufreq cooling device\n");
                return PTR_ERR(data->cool_dev);
This page took 0.024513 seconds and 5 git commands to generate.