|
@@ -607,7 +607,8 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz)
|
|
|
pos->initialized = false;
|
|
|
}
|
|
|
|
|
|
-void thermal_zone_device_update(struct thermal_zone_device *tz)
|
|
|
+void thermal_zone_device_update(struct thermal_zone_device *tz,
|
|
|
+ enum thermal_notify_event event)
|
|
|
{
|
|
|
int count;
|
|
|
|
|
@@ -621,6 +622,8 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
|
|
|
|
|
|
thermal_zone_set_trips(tz);
|
|
|
|
|
|
+ tz->notify_event = event;
|
|
|
+
|
|
|
for (count = 0; count < tz->trips; count++)
|
|
|
handle_thermal_trip(tz, count);
|
|
|
}
|
|
@@ -631,7 +634,7 @@ static void thermal_zone_device_check(struct work_struct *work)
|
|
|
struct thermal_zone_device *tz = container_of(work, struct
|
|
|
thermal_zone_device,
|
|
|
poll_queue.work);
|
|
|
- thermal_zone_device_update(tz);
|
|
|
+ thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
|
|
|
}
|
|
|
|
|
|
/* sys I/F for thermal zone */
|
|
@@ -755,7 +758,7 @@ trip_point_temp_store(struct device *dev, struct device_attribute *attr,
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
|
|
|
- thermal_zone_device_update(tz);
|
|
|
+ thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
|
|
|
|
|
|
return count;
|
|
|
}
|
|
@@ -877,7 +880,7 @@ passive_store(struct device *dev, struct device_attribute *attr,
|
|
|
|
|
|
tz->forced_passive = state;
|
|
|
|
|
|
- thermal_zone_device_update(tz);
|
|
|
+ thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
|
|
|
|
|
|
return count;
|
|
|
}
|
|
@@ -968,7 +971,7 @@ emul_temp_store(struct device *dev, struct device_attribute *attr,
|
|
|
}
|
|
|
|
|
|
if (!ret)
|
|
|
- thermal_zone_device_update(tz);
|
|
|
+ thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
|
|
|
|
|
|
return ret ? ret : count;
|
|
|
}
|
|
@@ -1564,7 +1567,8 @@ __thermal_cooling_device_register(struct device_node *np,
|
|
|
mutex_lock(&thermal_list_lock);
|
|
|
list_for_each_entry(pos, &thermal_tz_list, node)
|
|
|
if (atomic_cmpxchg(&pos->need_update, 1, 0))
|
|
|
- thermal_zone_device_update(pos);
|
|
|
+ thermal_zone_device_update(pos,
|
|
|
+ THERMAL_EVENT_UNSPECIFIED);
|
|
|
mutex_unlock(&thermal_list_lock);
|
|
|
|
|
|
return cdev;
|
|
@@ -2007,7 +2011,7 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
|
|
|
thermal_zone_device_reset(tz);
|
|
|
/* Update the new thermal zone and mark it as already updated. */
|
|
|
if (atomic_cmpxchg(&tz->need_update, 1, 0))
|
|
|
- thermal_zone_device_update(tz);
|
|
|
+ thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
|
|
|
|
|
|
return tz;
|
|
|
|
|
@@ -2294,7 +2298,8 @@ static int thermal_pm_notify(struct notifier_block *nb,
|
|
|
atomic_set(&in_suspend, 0);
|
|
|
list_for_each_entry(tz, &thermal_tz_list, node) {
|
|
|
thermal_zone_device_reset(tz);
|
|
|
- thermal_zone_device_update(tz);
|
|
|
+ thermal_zone_device_update(tz,
|
|
|
+ THERMAL_EVENT_UNSPECIFIED);
|
|
|
}
|
|
|
break;
|
|
|
default:
|