OSDN Git Service

radeon: fix error in busmaster enable logic
authorAlex Deucher <alexdeucher@gmail.com>
Mon, 27 Oct 2008 17:18:07 +0000 (13:18 -0400)
committerAlex Deucher <alexdeucher@gmail.com>
Mon, 27 Oct 2008 17:18:07 +0000 (13:18 -0400)
- logic was wrong.  rs400/rs480 should clear the RADEON_BUS_MASTER_DIS bit
- should fix kernel bug 11798

shared-core/radeon_cp.c

index d842e23..c4035b8 100644 (file)
@@ -657,8 +657,10 @@ static void radeon_cp_init_ring_buffer(struct drm_device * dev,
                /* rs600/rs690/rs740 */
                tmp = RADEON_READ(RADEON_BUS_CNTL) & ~RS600_BUS_MASTER_DIS;
                RADEON_WRITE(RADEON_BUS_CNTL, tmp);
-       } else if (!(((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RV380) ||
-                   ((dev_priv->flags & RADEON_FAMILY_MASK) >= CHIP_R423))) {
+       } else if (((dev_priv->flags & RADEON_FAMILY_MASK) <= CHIP_RV350) ||
+                  ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_R420) ||
+                  ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS400) ||
+                  ((dev_priv->flags & RADEON_FAMILY_MASK) == CHIP_RS480)) {
                /* r1xx, r2xx, r300, r(v)350, r420/r481, rs400/rs480 */
                tmp = RADEON_READ(RADEON_BUS_CNTL) & ~RADEON_BUS_MASTER_DIS;
                RADEON_WRITE(RADEON_BUS_CNTL, tmp);