summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoland Scheidegger <sroland@tungstengraphics.com>2007-11-13 23:42:42 +0100
committerRoland Scheidegger <sroland@tungstengraphics.com>2007-11-13 23:42:42 +0100
commite9d721c31372db045550f9562534b28f16121bb9 (patch)
treea4bce905ab3316ccc1627d6d0322857408ed5104
parentb865886d00907899297ae864358eb26d9980975d (diff)
ignore sometime bogus agp_mode bit from chip (bug #13190)
bit is wrong on at least X700 cards with rialto pcie-agp bridge chip, should be safe to use just the bit from the bridge hopefully to make agp setup work on these cards and not adversely affect others.
-rw-r--r--src/radeon_dri.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/radeon_dri.c b/src/radeon_dri.c
index 2c533b1f..ed418b8c 100644
--- a/src/radeon_dri.c
+++ b/src/radeon_dri.c
@@ -722,7 +722,9 @@ static Bool RADEONSetAgpMode(RADEONInfoPtr info, ScreenPtr pScreen)
unsigned long mode = drmAgpGetMode(info->drmFD); /* Default mode */
unsigned int vendor = drmAgpVendorId(info->drmFD);
unsigned int device = drmAgpDeviceId(info->drmFD);
- CARD32 agp_status = INREG(RADEON_AGP_STATUS) & mode;
+ /* ignore agp 3.0 mode bit from the chip as it's buggy on some cards with
+ pcie-agp rialto bridge chip - use the one from bridge which must match */
+ CARD32 agp_status = (INREG(RADEON_AGP_STATUS) | RADEON_AGPv3_MODE) & mode;
Bool is_v3 = (agp_status & RADEON_AGPv3_MODE);
unsigned int defaultMode;
MessageType from;