summaryrefslogtreecommitdiff
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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 2c533b1..ed418b8 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;