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

Dave Airlie airlied at kemper.freedesktop.org
Wed Nov 25 21:30:18 PST 2009


 src/radeon_atombios.c |    9 +++++++--
 src/radeon_output.c   |    2 +-
 2 files changed, 8 insertions(+), 3 deletions(-)

New commits:
commit 381b14d5422131ea8ff942ab06a328f6beca0d3f
Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Nov 26 15:28:15 2009 +1000

    atombios: CV mode retrival was broken.
    
    a) crev and frev are reversed
    b) my rv730 bios only has one mode in it, so
       bounds check the table size.

diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index f3c88bc..74606b3 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -901,6 +901,7 @@ rhdAtomCVGetTimings(atomBiosHandlePtr handle, AtomBiosRequestID func,
     DisplayModePtr  new        = NULL;
     DisplayModePtr  first      = NULL;
     int i;
+    uint16_t size;
 
     data->modes = NULL;
 
@@ -908,12 +909,11 @@ rhdAtomCVGetTimings(atomBiosHandlePtr handle, AtomBiosRequestID func,
 
     if (!rhdAtomGetTableRevisionAndSize(
 	    (ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->ComponentVideoInfo.base),
-	    &frev,&crev,NULL)) {
+	    &crev,&frev,&size)) {
 	return ATOM_FAILED;
     }
 
     switch (frev) {
-
 	case 1:
 	    switch (func) {
 		case ATOMBIOS_GET_CV_MODES:
@@ -947,6 +947,11 @@ rhdAtomCVGetTimings(atomBiosHandlePtr handle, AtomBiosRequestID func,
 	    switch (func) {
 		case ATOMBIOS_GET_CV_MODES:
 		    for (i = 0; i < MAX_SUPPORTED_CV_STANDARDS; i++) {
+		        /* my rv730 table has only room for one mode */
+		        if ((void *)&atomDataPtr->ComponentVideoInfo.ComponentVideoInfo_v21->aModeTimings[i] -
+			    atomDataPtr->ComponentVideoInfo.base > size)
+			    break;
+
 			new = rhdAtomDTDTimings(handle,
 						&atomDataPtr->ComponentVideoInfo
 						.ComponentVideoInfo_v21->aModeTimings[i]);
commit a67a13c315a9235be052662e2a3270686cccc0f0
Author: Dave Airlie <airlied at redhat.com>
Date:   Thu Nov 26 13:41:36 2009 +1000

    radeon: fix typo in unused as of yet CV code

diff --git a/src/radeon_output.c b/src/radeon_output.c
index 24e07db..a2733a7 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -154,7 +154,7 @@ void RADEONPrintPortMap(ScrnInfoPtr pScrn)
 	if (radeon_output->devices & ATOM_DEVICE_TV1_SUPPORT)
 	    ErrorF("  TV1: %s\n", encoder_name[info->encoders[ATOM_DEVICE_TV1_INDEX]->encoder_id]);
 	if (radeon_output->devices & ATOM_DEVICE_CV_SUPPORT)
-	    ErrorF("  CV: %s\n", encoder_name[info->encoders[ATOM_DEVICE_CRT1_INDEX]->encoder_id]);
+	    ErrorF("  CV: %s\n", encoder_name[info->encoders[ATOM_DEVICE_CV_INDEX]->encoder_id]);
 	ErrorF("  DDC reg: 0x%x\n",(unsigned int)radeon_output->ddc_i2c.mask_clk_reg);
     }
 


More information about the xorg-commit mailing list