===================================================================
@@ -497,7 +497,7 @@ void __thermal_zone_device_update(struct
int low = -INT_MAX, high = INT_MAX;
int temp, ret;
- if (tz->suspended || tz->mode != THERMAL_DEVICE_ENABLED)
+ if (tz->state != TZ_STATE_READY || tz->mode != THERMAL_DEVICE_ENABLED)
return;
ret = __thermal_zone_get_temp(tz, &temp);
@@ -1651,7 +1651,7 @@ static void thermal_zone_device_resume(s
guard(thermal_zone)(tz);
- tz->suspended = false;
+ tz->state &= ~(TZ_STATE_FLAG_SUSPENDED | TZ_STATE_FLAG_RESUMING);
thermal_debug_tz_resume(tz);
thermal_zone_device_init(tz);
@@ -1659,14 +1659,13 @@ static void thermal_zone_device_resume(s
__thermal_zone_device_update(tz, THERMAL_TZ_RESUME);
complete(&tz->resume);
- tz->resuming = false;
}
static void thermal_zone_pm_prepare(struct thermal_zone_device *tz)
{
guard(thermal_zone)(tz);
- if (tz->resuming) {
+ if (tz->state & TZ_STATE_FLAG_RESUMING) {
/*
* thermal_zone_device_resume() queued up for this zone has not
* acquired the lock yet, so release it to let the function run
@@ -1679,7 +1678,7 @@ static void thermal_zone_pm_prepare(stru
mutex_lock(&tz->lock);
}
- tz->suspended = true;
+ tz->state |= TZ_STATE_FLAG_SUSPENDED;
}
static void thermal_zone_pm_complete(struct thermal_zone_device *tz)
@@ -1689,7 +1688,7 @@ static void thermal_zone_pm_complete(str
cancel_delayed_work(&tz->poll_queue);
reinit_completion(&tz->resume);
- tz->resuming = true;
+ tz->state |= TZ_STATE_FLAG_RESUMING;
/*
* Replace the work function with the resume one, which will restore the
===================================================================
@@ -62,6 +62,11 @@ struct thermal_governor {
struct list_head governor_list;
};
+#define TZ_STATE_FLAG_SUSPENDED BIT(0)
+#define TZ_STATE_FLAG_RESUMING BIT(1)
+
+#define TZ_STATE_READY 0
+
/**
* struct thermal_zone_device - structure for a thermal zone
* @id: unique id number for each thermal zone
@@ -103,8 +108,7 @@ struct thermal_governor {
* @node: node in thermal_tz_list (in thermal_core.c)
* @poll_queue: delayed work for polling
* @notify_event: Last notification event
- * @suspended: thermal zone suspend indicator
- * @resuming: indicates whether or not thermal zone resume is in progress
+ * @state: current state of the thermal zone
* @trips: array of struct thermal_trip objects
*/
struct thermal_zone_device {
@@ -139,8 +143,7 @@ struct thermal_zone_device {
struct list_head node;
struct delayed_work poll_queue;
enum thermal_notify_event notify_event;
- bool suspended;
- bool resuming;
+ u8 state;
#ifdef CONFIG_THERMAL_DEBUGFS
struct thermal_debugfs *debugfs;
#endif