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 /src/radeon_dri.c | |
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.
Diffstat (limited to 'src/radeon_dri.c')
-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; |