summaryrefslogtreecommitdiff
path: root/src/atiprobe.c
diff options
context:
space:
mode:
authorTimo Jyrinki <timo.jyrinki@hut.fi>2007-01-12 23:08:50 +1100
committerDave Airlie <airlied@linux.ie>2007-01-12 23:08:50 +1100
commitf5ffb9fb3bdd7cec020240c5831ae92ee744972c (patch)
tree4f8bcd1ffa26d657f97a94adf1dba4884a25059b /src/atiprobe.c
parent1e690c57ad1dfaeb760ef6e799faa6398e9a0551 (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.c12
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 */