diff --git a/drivers/gpu/msm/adreno_a6xx.c b/drivers/gpu/msm/adreno_a6xx.c index f274b7fca891..243f61f87564 100644 --- a/drivers/gpu/msm/adreno_a6xx.c +++ b/drivers/gpu/msm/adreno_a6xx.c @@ -1166,6 +1166,10 @@ static int a6xx_reset(struct kgsl_device *device) { struct adreno_device *adreno_dev = ADRENO_DEVICE(device); int ret; + unsigned long flags = device->pwrctrl.ctrl_flags; + + /* Clear ctrl_flags to ensure clocks and regulators are turned off */ + device->pwrctrl.ctrl_flags = 0; kgsl_pwrctrl_change_state(device, KGSL_STATE_INIT); @@ -1178,6 +1182,8 @@ static int a6xx_reset(struct kgsl_device *device) kgsl_pwrctrl_change_state(device, KGSL_STATE_ACTIVE); + device->pwrctrl.ctrl_flags = flags; + /* Toggle GX CPR on demand */ a6xx_gx_cpr_toggle(device);