|
@@ -953,7 +953,12 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
|
|
|
|
|
|
mutex_lock(&tz->lock);
|
|
|
|
|
|
- tz->ops->get_temp(tz, &temp);
|
|
|
+ if (tz->ops->get_temp(tz, &temp)) {
|
|
|
+ /* get_temp failed - retry it later */
|
|
|
+ printk(KERN_WARNING PREFIX "failed to read out thermal zone "
|
|
|
+ "%d\n", tz->id);
|
|
|
+ goto leave;
|
|
|
+ }
|
|
|
|
|
|
for (count = 0; count < tz->trips; count++) {
|
|
|
tz->ops->get_trip_type(tz, count, &trip_type);
|
|
@@ -1005,6 +1010,8 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
|
|
|
THERMAL_TRIPS_NONE);
|
|
|
|
|
|
tz->last_temperature = temp;
|
|
|
+
|
|
|
+ leave:
|
|
|
if (tz->passive)
|
|
|
thermal_zone_device_set_polling(tz, tz->passive_delay);
|
|
|
else if (tz->polling_delay)
|