diff options
-rw-r--r-- | drivers/gpu/drm/msm/adreno/a3xx_gpu.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 10 | ||||
-rw-r--r-- | include/drm/drm_adreno.h | 1 |
3 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/drm/msm/adreno/a3xx_gpu.c b/drivers/gpu/drm/msm/adreno/a3xx_gpu.c index faf1e9a1b1b0..2483a6b9225f 100644 --- a/drivers/gpu/drm/msm/adreno/a3xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a3xx_gpu.c @@ -294,7 +294,7 @@ static irqreturn_t a3xx_irq(struct adreno_gpu *gpu) gpu_write(gpu, REG_A3XX_RBBM_INT_CLEAR_CMD, status); - msm_gpu_retire(&gpu->base); + gpu->gem->gem_retire(gpu->gem->priv); return IRQ_HANDLED; } diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index 0c6adf414c71..9f3c45c95f13 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -289,13 +289,21 @@ gem_vaddr(void *gem_priv, struct drm_gem_object *obj) { return msm_gem_vaddr(obj); } + +static void +gem_retire(void *gem_priv) +{ + struct msm_gpu *gpu = gem_priv; + return msm_gpu_retire(gpu); +} static struct adreno_gem msm_gem_funcs = { .gem_new = gem_new, .gem_get_iova = gem_get_iova, .gem_get_iova_locked = gem_get_iova_locked, .gem_put_iova = gem_put_iova, .gem_vaddr = gem_vaddr, - .gem_vaddr_locked = gem_vaddr_locked + .gem_vaddr_locked = gem_vaddr_locked, + .gem_retire = gem_retire }; static void load_gpu(struct drm_device *dev) diff --git a/include/drm/drm_adreno.h b/include/drm/drm_adreno.h index aa58e5e312ec..cae710cbc612 100644 --- a/include/drm/drm_adreno.h +++ b/include/drm/drm_adreno.h @@ -68,6 +68,7 @@ struct adreno_gem { void (*gem_put_iova)(void *gem_priv, struct drm_gem_object *obj); void *(*gem_vaddr_locked)(void *gem_priv, struct drm_gem_object *obj); void *(*gem_vaddr)(void *gem_priv, struct drm_gem_object *obj); + void (*gem_retire)(void *gem_priv); }; const char *adreno_get_name(struct adreno_gpu *gpu); |