radeon: setup isync cntl properly
authorDave Airlie <airlied@redhat.com>
Sun, 2 Nov 2008 23:47:49 +0000 (09:47 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 2 Nov 2008 23:47:49 +0000 (09:47 +1000)
shared-core/radeon_cp.c

index 3f8f0c9..1c187b1 100644 (file)
@@ -591,10 +591,15 @@ static void radeon_do_cp_start(drm_radeon_private_t * dev_priv)
        BEGIN_RING(8);
        /* isync can only be written through cp on r5xx write it here */
        OUT_RING(CP_PACKET0(RADEON_ISYNC_CNTL, 0));
+       if (dev_priv->chip_family > CHIP_RV280)
+               OUT_RING(RADEON_ISYNC_ANY2D_IDLE3D |
+                        RADEON_ISYNC_ANY3D_IDLE2D |
+                        RADEON_ISYNC_WAIT_IDLEGUI |
+                dev_priv->mm_enabled ? 0 : RADEON_ISYNC_CPSCRATCH_IDLEGUI);
+       else
        OUT_RING(RADEON_ISYNC_ANY2D_IDLE3D |
                 RADEON_ISYNC_ANY3D_IDLE2D |
-                RADEON_ISYNC_WAIT_IDLEGUI |
-                RADEON_ISYNC_CPSCRATCH_IDLEGUI);
+                RADEON_ISYNC_WAIT_IDLEGUI);
        RADEON_PURGE_CACHE();
        RADEON_PURGE_ZCACHE();
        RADEON_WAIT_UNTIL_IDLE();