summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2008-10-27 13:18:07 -0400
committerAlex Deucher <alexdeucher@gmail.com>2008-10-27 13:18:07 -0400
commite1372f67274baa44419e000f5d3d6b2e81be2b51 (patch)
tree0782ea19114381228315797fd183da8b29dc1ee7
parent848f00d77381d8b442c096476302796f8fe122fa (diff)
radeon: fix error in busmaster enable logic
- logic was wrong. rs400/rs480 should clear the RADEON_BUS_MASTER_DIS bit - should fix kernel bug 11798
-rw-r--r--shared-core/radeon_cp.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/shared-core/radeon_cp.c b/shared-core/radeon_cp.c
index d842e23e..c4035b89 100644
--- a/shared-core/radeon_cp.c
+++ b/shared-core/radeon_cp.c
@@ -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);