Revert "msm: kgsl: suspend device when the display does off"
This reverts commit 3b7ad9c5764eeef6439b9488c17f5e4d7500f101.
Change-Id: Ie54ad7e14fc297a1275e50957023bf6c614b1e5e
Signed-off-by: Dominic Binks <dbinks@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index 0f8d474..165bbbf 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -329,12 +329,6 @@
KGSL_PWR_WARN(device, "state -> SUSPEND, device %d\n",
device->id);
break;
- case KGSL_STATE_SLUMBER:
- INIT_COMPLETION(device->hwaccess_gate);
- device->state = KGSL_STATE_SUSPEND;
- KGSL_PWR_WARN(device, "state -> SUSPEND, device %d\n",
- device->id);
- break;
default:
KGSL_PWR_ERR(device, "suspend fail, device %d\n",
device->id);
@@ -361,16 +355,28 @@
KGSL_PWR_WARN(device, "resume start\n");
mutex_lock(&device->mutex);
if (device->state == KGSL_STATE_SUSPEND) {
- device->state = KGSL_STATE_SLUMBER;
- status = 0;
- KGSL_PWR_WARN(device,
- "state -> SLUMBER, device %d\n",
- device->id);
+ device->requested_state = KGSL_STATE_ACTIVE;
+ kgsl_pwrctrl_pwrlevel_change(device, KGSL_PWRLEVEL_NOMINAL);
+ status = device->ftbl->start(device, 0);
+ if (status == 0) {
+ device->state = KGSL_STATE_ACTIVE;
+ KGSL_PWR_WARN(device,
+ "state -> ACTIVE, device %d\n",
+ device->id);
+ } else {
+ KGSL_PWR_ERR(device,
+ "resume failed, device %d\n",
+ device->id);
+ device->state = KGSL_STATE_INIT;
+ goto end;
+ }
complete_all(&device->hwaccess_gate);
}
device->requested_state = KGSL_STATE_NONE;
+end:
mutex_unlock(&device->mutex);
+ kgsl_check_idle(device);
KGSL_PWR_WARN(device, "resume end\n");
return status;
}
@@ -411,12 +417,9 @@
{
struct kgsl_device *device = container_of(h,
struct kgsl_device, display_off);
- KGSL_PWR_WARN(device, "early suspend start\n");
mutex_lock(&device->mutex);
- device->requested_state = KGSL_STATE_SLUMBER;
- kgsl_pwrctrl_sleep(device);
+ kgsl_pwrctrl_pwrlevel_change(device, KGSL_PWRLEVEL_NOMINAL);
mutex_unlock(&device->mutex);
- KGSL_PWR_WARN(device, "early suspend end\n");
}
EXPORT_SYMBOL(kgsl_early_suspend_driver);
@@ -439,13 +442,9 @@
{
struct kgsl_device *device = container_of(h,
struct kgsl_device, display_off);
- KGSL_PWR_WARN(device, "late resume start\n");
mutex_lock(&device->mutex);
- kgsl_pwrctrl_wake(device);
- device->pwrctrl.restore_slumber = 0;
+ kgsl_pwrctrl_pwrlevel_change(device, KGSL_PWRLEVEL_TURBO);
mutex_unlock(&device->mutex);
- kgsl_check_idle(device);
- KGSL_PWR_WARN(device, "late resume end\n");
}
EXPORT_SYMBOL(kgsl_late_resume_driver);