summaryrefslogtreecommitdiff
path: root/src/atiprobe.c
diff options
context:
space:
mode:
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 622c1f74..9c30a314 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 */