diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c index 45b6c0aeee72f1455364e7b2730c5c02744db7c0..12da1c4076e158b938e52f70fe3a83b2d921c5a9 100644 --- a/drivers/gpu/msm/adreno.c +++ b/drivers/gpu/msm/adreno.c @@ -1798,8 +1798,10 @@ static int adreno_stop(struct kgsl_device *device) { struct adreno_device *adreno_dev = ADRENO_DEVICE(device); - if (adreno_dev->drawctxt_active) - kgsl_context_put(&adreno_dev->drawctxt_active->base); + if (!test_bit(ADRENO_DEVICE_STARTED, &adreno_dev->priv)) + return 0; + + kgsl_pwrctrl_enable(device); adreno_dev->drawctxt_active = NULL; diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c index efc4c69210a0f37d0fd3f2e0dcf925268f57380a..a4986a75b6260a42ebbbb5b6a6b9b8045c1f7969 100644 --- a/drivers/gpu/msm/kgsl.c +++ b/drivers/gpu/msm/kgsl.c @@ -961,8 +961,6 @@ int kgsl_close_device(struct kgsl_device *device) /* Fail if the wait times out */ BUG_ON(atomic_read(&device->active_cnt) > 0); - /* Force power on to do the stop */ - kgsl_pwrctrl_enable(device); result = device->ftbl->stop(device); kgsl_pwrctrl_set_state(device, KGSL_STATE_INIT); }