drm/msm: workaround for missing irq on a306/8x16
authorRob Clark <robdclark@gmail.com>
Tue, 12 May 2015 15:29:40 +0000 (11:29 -0400)
committerRob Clark <robdclark@gmail.com>
Thu, 11 Jun 2015 17:11:01 +0000 (13:11 -0400)
Signed-off-by: Rob Clark <robdclark@gmail.com>
drivers/gpu/drm/msm/adreno/adreno_gpu.c

index 031579e1481fec41809e6ce7dd49a01f5df37d4b..a3b54cc7649531c987ed9bd18ba6d2b7087bbe6f 100644 (file)
@@ -176,6 +176,17 @@ int adreno_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit,
        OUT_PKT3(ring, CP_INTERRUPT, 1);
        OUT_RING(ring, 0x80000000);
 
+       /* Workaround for missing irq issue on 8x16/a306.  Unsure if the
+        * root cause is a platform issue or some a306 quirk, but this
+        * keeps things humming along:
+        */
+       if (adreno_is_a306(adreno_gpu)) {
+               OUT_PKT3(ring, CP_WAIT_FOR_IDLE, 1);
+               OUT_RING(ring, 0x00000000);
+               OUT_PKT3(ring, CP_INTERRUPT, 1);
+               OUT_RING(ring, 0x80000000);
+       }
+
 #if 0
        if (adreno_is_a3xx(adreno_gpu)) {
                /* Dummy set-constant to trigger context rollover */