msm: kgsl: Clarify the circumstances to enable SLUMBER state
Use the restore_slumber variable at as low a level as possible
to remove confusion from the state machine. Also do not let
restore_slumber impact the function of NAP state.
Change-Id: I1e01dc35c19b3568bad1e6ae4b2399d309147cbd
Signed-off-by: Lucille Sylvester <lsylvest@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl_pwrctrl.c b/drivers/gpu/msm/kgsl_pwrctrl.c
index 6ab9534..60bd232 100644
--- a/drivers/gpu/msm/kgsl_pwrctrl.c
+++ b/drivers/gpu/msm/kgsl_pwrctrl.c
@@ -622,7 +622,10 @@
KGSL_PWR_INFO(device, "idle timer expired device %d\n", device->id);
if (device->requested_state == KGSL_STATE_NONE) {
- kgsl_pwrctrl_request_state(device, KGSL_STATE_SLEEP);
+ if (device->pwrctrl.restore_slumber)
+ kgsl_pwrctrl_request_state(device, KGSL_STATE_SLUMBER);
+ else
+ kgsl_pwrctrl_request_state(device, KGSL_STATE_SLEEP);
/* Have work run in a non-interrupt context. */
queue_work(device->work_queue, &device->idle_check_ws);
}
@@ -788,17 +791,10 @@
/* Work through the legal state transitions */
switch (device->requested_state) {
case KGSL_STATE_NAP:
- if (device->pwrctrl.restore_slumber) {
- kgsl_pwrctrl_request_state(device, KGSL_STATE_NONE);
- break;
- }
status = _nap(device);
break;
case KGSL_STATE_SLEEP:
- if (device->pwrctrl.restore_slumber)
- status = _slumber(device);
- else
- status = _sleep(device);
+ status = _sleep(device);
break;
case KGSL_STATE_SLUMBER:
status = _slumber(device);