xf86-video-ati: Branch 'master' - 2 commits

Michel Daenzer daenzer at kemper.freedesktop.org
Sat Sep 30 16:15:17 EEST 2006


 src/radeon_bios.c   |   18 +++++++++++++++++-
 src/radeon_driver.c |    2 --
 2 files changed, 17 insertions(+), 3 deletions(-)

New commits:
diff-tree c979c7f87fc449cc9631820101edff82c3013e66 (from 37c114acbabe35881c39642e293519e2635907aa)
Author: Roland Scheidegger <rscheidegger_lists at hispeed.ch>
Date:   Sat Sep 30 15:14:42 2006 +0200

    radeon: Check ROM more thoroughly before treating it as an x86 BIOS.
    
    This prevents the ROMs on some Mac cards getting treated as x86 BIOSen,
    resulting in garbage values.

diff --git a/src/radeon_bios.c b/src/radeon_bios.c
index a459721..38a5f8b 100644
--- a/src/radeon_bios.c
+++ b/src/radeon_bios.c
@@ -45,6 +45,7 @@ Bool RADEONGetBIOSInfo(ScrnInfoPtr pScrn
 {
     RADEONInfoPtr info     = RADEONPTR(pScrn);
     int tmp;
+    unsigned short dptr;
 
     if (!(info->VBIOS = xalloc(RADEON_VBIOS_SIZE))) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -76,7 +77,22 @@ Bool RADEONGetBIOSInfo(ScrnInfoPtr pScrn
 	xfree (info->VBIOS);
 	info->VBIOS = NULL;
 	return FALSE;
-    } 
+    }
+
+    /* Verify it's an x86 BIOS not OF firmware, copied from radeonfb */
+    dptr = RADEON_BIOS16(0x18);
+    /* If PCI data signature is wrong assume x86 video BIOS anyway */
+    if (RADEON_BIOS32(dptr) != (('R' << 24) | ('I' << 16) | ('C' << 8) | 'P')) {
+       xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		   "ROM PCI data signature incorrect, ignoring\n");
+    }
+    else if (info->VBIOS[dptr + 0x14] != 0x0) {
+	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		   "Not an x86 BIOS ROM image, BIOS data will not be used\n");
+	xfree (info->VBIOS);
+	info->VBIOS = NULL;
+	return FALSE;
+    }
 
     if (info->VBIOS) info->ROMHeaderStart = RADEON_BIOS16(0x48);
 
diff-tree 37c114acbabe35881c39642e293519e2635907aa (from 6d7b0763173f56050411d7bdf9a583b9bfc050c4)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date:   Sat Sep 30 15:11:42 2006 +0200

    Remove some dead code.
    
    Fix two compile warnings.

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index db1ae66..dd56cb2 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -123,7 +123,6 @@ static void RADEONGetMergedFBOptions(Scr
 static int RADEONValidateMergeModes(ScrnInfoPtr pScrn);
 static void RADEONSetDynamicClock(ScrnInfoPtr pScrn, int mode);
 static void RADEONForceSomeClocks(ScrnInfoPtr pScrn);
-static void RADEONUpdatePanelSize(ScrnInfoPtr pScrn);
 static void RADEONSaveMemMapRegisters(ScrnInfoPtr pScrn, RADEONSavePtr save);
 
 #ifdef XF86DRI
@@ -5327,7 +5326,6 @@ static void RADEONRestoreFPRegisters(Scr
 {
     RADEONInfoPtr  info       = RADEONPTR(pScrn);
     unsigned char *RADEONMMIO = info->MMIO;
-    unsigned long  tmp;
 
     OUTREG(RADEON_TMDS_PLL_CNTL,        restore->tmds_pll_cntl);
     OUTREG(RADEON_TMDS_TRANSMITTER_CNTL,restore->tmds_transmitter_cntl);



More information about the xorg-commit mailing list