File xf86-video-ati-bug474071-fix2.diff of Package xorg-x11-driver-video

--- xorg-x11-driver-video-7.4/xf86-video-ati-6.9.0/src/radeon_driver.c.orig	2009-02-23 16:22:50.955408060 +0100
+++ xorg-x11-driver-video-7.4/xf86-video-ati-6.9.0/src/radeon_driver.c	2009-02-23 17:53:02.971877917 +0100
@@ -208,6 +208,7 @@
 	uint32_t MEM_CNTL;
 	uint32_t MEMSIZE;
 	uint32_t MPP_TB_CONFIG;
+        unsigned char MISC_OUT;
 };
 
 static Bool RADEONMapMMIO(ScrnInfoPtr pScrn);
@@ -263,14 +264,17 @@
     RADEONInfoPtr  info   = RADEONPTR(pScrn);
     unsigned char *RADEONMMIO = info->MMIO;
     uint32_t       CardTmp;
-    static struct  RADEONInt10Save SaveStruct = { 0, 0, 0 };
+    static struct  RADEONInt10Save SaveStruct = { 0, 0, 0, 0 };
 
     if (!IS_AVIVO_VARIANT) {
+	OUTREG(0,RADEON_MEM_CNTL);
 	/* Save the values and zap MEM_CNTL */
 	SaveStruct.MEM_CNTL = INREG(RADEON_MEM_CNTL);
 	SaveStruct.MEMSIZE = INREG(RADEON_CONFIG_MEMSIZE);
 	SaveStruct.MPP_TB_CONFIG = INREG(RADEON_MPP_TB_CONFIG);
-
+#if !defined(__powerpc__) && !defined(__sparc__)
+	SaveStruct.MISC_OUT = inb(pScrn->domainIOBase + RADEON_GENMO_RD);
+#endif
 	/*
 	 * Zap MEM_CNTL and set MPP_TB_CONFIG<31:24> to 4
 	 */
@@ -332,6 +336,14 @@
 	CardTmp |= (pSave->MPP_TB_CONFIG & 0xff000000u);
 	OUTREG(RADEON_MPP_TB_CONFIG, CardTmp);
     }
+#if !defined(__powerpc__) && !defined(__sparc__)
+    if (CardTmp != pSave->MISC_OUT) {
+         xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		    "Restoring MiscOut (%x), setting to %x\n",
+		    CardTmp, pSave->MEM_CNTL);
+	 outb(pScrn->domainIOBase + RADEON_GENMO_WT, pSave->MISC_OUT);
+    }
+#endif
 }
 
 /* Allocate our private RADEONInfoRec */
@@ -2731,7 +2743,7 @@
 	goto fail1;
     }
 
-#if !defined(__alpha__)
+#if !defined(__alpha__) && !defined (__ia64__)
     if (
 #ifndef XSERVER_LIBPCIACCESS
 	xf86GetPciDomain(info->PciTag) ||
openSUSE Build Service is sponsored by