Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/msm/adreno: reset ringbuffer in hw_init

We need to do this also in resume path when we need to re-hw_init().

Signed-off-by: Rob Clark <robdclark@gmail.com>

+8 -10
+8 -10
drivers/gpu/drm/msm/adreno/adreno_gpu.c
··· 68 68 return ret; 69 69 } 70 70 71 + /* reset ringbuffer: */ 72 + gpu->rb->cur = gpu->rb->start; 73 + 74 + /* reset completed fence seqno: */ 75 + adreno_gpu->memptrs->fence = gpu->fctx->completed_fence; 76 + adreno_gpu->memptrs->rptr = 0; 77 + adreno_gpu->memptrs->wptr = 0; 78 + 71 79 /* Setup REG_CP_RB_CNTL: */ 72 80 adreno_gpu_write(adreno_gpu, REG_ADRENO_CP_RB_CNTL, 73 81 /* size is log2(quad-words): */ ··· 119 111 120 112 void adreno_recover(struct msm_gpu *gpu) 121 113 { 122 - struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu); 123 114 struct drm_device *dev = gpu->dev; 124 115 int ret; 125 116 ··· 126 119 // so maybe continuing to call ->pm_suspend/resume() is better? 127 120 128 121 gpu->funcs->pm_suspend(gpu); 129 - 130 - /* reset ringbuffer: */ 131 - gpu->rb->cur = gpu->rb->start; 132 - 133 - /* reset completed fence seqno: */ 134 - adreno_gpu->memptrs->fence = gpu->fctx->completed_fence; 135 - adreno_gpu->memptrs->rptr = 0; 136 - adreno_gpu->memptrs->wptr = 0; 137 - 138 122 gpu->funcs->pm_resume(gpu); 139 123 140 124 ret = msm_gpu_hw_init(gpu);