diff options
author | Timo Jyrinki <timo.jyrinki@hut.fi> | 2007-01-12 23:08:50 +1100 |
---|---|---|
committer | Dave Airlie <airlied@linux.ie> | 2007-01-12 23:08:50 +1100 |
commit | f5ffb9fb3bdd7cec020240c5831ae92ee744972c (patch) | |
tree | 4f8bcd1ffa26d657f97a94adf1dba4884a25059b /src/atiprobe.c | |
parent | 1e690c57ad1dfaeb760ef6e799faa6398e9a0551 (diff) |
ati: fix detection of some newer radeons using ati wrapper
This is mainly due to the cards having a different resource 1.
Fixes 6796
Diffstat (limited to 'src/atiprobe.c')
-rw-r--r-- | src/atiprobe.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/atiprobe.c b/src/atiprobe.c index 622c1f7..9c30a31 100644 --- a/src/atiprobe.c +++ b/src/atiprobe.c @@ -1566,8 +1566,14 @@ ATIProbe /* Next, look for sparse I/O Mach64's */ for (i = 0; (pVideo = xf86PciVideoInfo[i++]); ) { + /* For some Radeons, pvideo->size[1] is not there but the card + * still works properly. Thus adding check that if the chip was + * correctly identified as being Rage128 or a Radeon, continue + * also in that case. See fd.o bug 6796. */ + Chip = ATIChipID(pVideo->chipType, pVideo->chipRev); if ((pVideo->vendor != PCI_VENDOR_ATI) || (pVideo->chipType == PCI_CHIP_MACH32) || + (Chip > ATI_CHIP_Mach64) || pVideo->size[1]) continue; @@ -1728,9 +1734,13 @@ ATIProbe /* Lastly, look for block I/O devices */ for (i = 0; (pVideo = xf86PciVideoInfo[i++]); ) { + /* For some Radeons, !pvideo->size[1] applies but the card still + * works properly. Thus don't make !pVideo->size[1] check to continue + * automatically (instead check that the chip actually is below + * ATI_CHIP_Mach64 (includes ATI_CHIP_NONE)). See fd.o bug 6796. */ if ((pVideo->vendor != PCI_VENDOR_ATI) || (pVideo->chipType == PCI_CHIP_MACH32) || - !pVideo->size[1]) + (!pVideo->size[1] && Chip < ATI_CHIP_Mach64)) continue; /* Check for Rage128's, Radeon's and later adapters */ |