diff options
author | Roland Scheidegger <sroland@tungstengraphics.com> | 2007-11-13 23:42:42 +0100 |
---|---|---|
committer | Roland Scheidegger <sroland@tungstengraphics.com> | 2007-11-13 23:42:42 +0100 |
commit | e9d721c31372db045550f9562534b28f16121bb9 (patch) | |
tree | a4bce905ab3316ccc1627d6d0322857408ed5104 | |
parent | b865886d00907899297ae864358eb26d9980975d (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.c | 4 |
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; |