xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Wed Mar 18 08:50:49 PDT 2009


 src/atombios_output.c |   72 ++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 52 insertions(+), 20 deletions(-)

New commits:
commit 6ae54d3ea023968887bf0cb0ec1be2115621d554
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Wed Mar 18 11:50:22 2009 -0400

    AVIVO: Fix dac load detection

diff --git a/src/atombios_output.c b/src/atombios_output.c
index 70e716c..2f85833 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -1601,34 +1601,66 @@ atom_bios_dac_load_detect(atomBiosHandlePtr atomBIOS, xf86OutputPtr output)
 
     if (radeon_output->devices & ATOM_DEVICE_CRT1_SUPPORT) {
 	dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT1_SUPPORT);
-	if (info->encoders[ATOM_DEVICE_CRT1_INDEX] &&
-	    (info->encoders[ATOM_DEVICE_CRT1_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
-	    dac_data.sDacload.ucDacType = ATOM_DAC_A;
-	else
-	    dac_data.sDacload.ucDacType = ATOM_DAC_B;
+	if (IS_AVIVO_VARIANT) {
+	    if (info->encoders[ATOM_DEVICE_CRT1_INDEX] &&
+		(info->encoders[ATOM_DEVICE_CRT1_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1))
+		dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	    else
+		dac_data.sDacload.ucDacType = ATOM_DAC_B;
+	} else {
+	    if (info->encoders[ATOM_DEVICE_CRT1_INDEX] &&
+		(info->encoders[ATOM_DEVICE_CRT1_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
+		dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	    else
+		dac_data.sDacload.ucDacType = ATOM_DAC_B;
+	}
     } else if (radeon_output->devices & ATOM_DEVICE_CRT2_SUPPORT) {
 	dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CRT2_SUPPORT);
-	if (info->encoders[ATOM_DEVICE_CRT2_INDEX] &&
-	    (info->encoders[ATOM_DEVICE_CRT2_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
-	    dac_data.sDacload.ucDacType = ATOM_DAC_A;
-	else
-	    dac_data.sDacload.ucDacType = ATOM_DAC_B;
+	if (IS_AVIVO_VARIANT) {
+	    if (info->encoders[ATOM_DEVICE_CRT2_INDEX] &&
+		(info->encoders[ATOM_DEVICE_CRT2_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1))
+		dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	    else
+		dac_data.sDacload.ucDacType = ATOM_DAC_B;
+	} else {
+	    if (info->encoders[ATOM_DEVICE_CRT2_INDEX] &&
+		(info->encoders[ATOM_DEVICE_CRT2_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
+		dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	    else
+		dac_data.sDacload.ucDacType = ATOM_DAC_B;
+	}
     } else if (radeon_output->devices & ATOM_DEVICE_CV_SUPPORT) {
 	dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_CV_SUPPORT);
-	if (info->encoders[ATOM_DEVICE_CV_INDEX] &&
-	    (info->encoders[ATOM_DEVICE_CV_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
-	    dac_data.sDacload.ucDacType = ATOM_DAC_A;
-	else
-	    dac_data.sDacload.ucDacType = ATOM_DAC_B;
+       if (IS_AVIVO_VARIANT) {
+	   if (info->encoders[ATOM_DEVICE_CV_INDEX] &&
+	       (info->encoders[ATOM_DEVICE_CV_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1))
+	       dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	   else
+	       dac_data.sDacload.ucDacType = ATOM_DAC_B;
+       } else {
+	   if (info->encoders[ATOM_DEVICE_CV_INDEX] &&
+	       (info->encoders[ATOM_DEVICE_CV_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
+	       dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	   else
+	       dac_data.sDacload.ucDacType = ATOM_DAC_B;
+       }
 	if (minor >= 3)
 	    dac_data.sDacload.ucMisc = DAC_LOAD_MISC_YPrPb;
     } else if (radeon_output->devices & ATOM_DEVICE_TV1_SUPPORT) {
 	dac_data.sDacload.usDeviceID = cpu_to_le16(ATOM_DEVICE_TV1_SUPPORT);
-	if (info->encoders[ATOM_DEVICE_TV1_INDEX] &&
-	    (info->encoders[ATOM_DEVICE_TV1_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
-	    dac_data.sDacload.ucDacType = ATOM_DAC_A;
-	else
-	    dac_data.sDacload.ucDacType = ATOM_DAC_B;
+       if (IS_AVIVO_VARIANT) {
+	   if (info->encoders[ATOM_DEVICE_TV1_INDEX] &&
+	       (info->encoders[ATOM_DEVICE_TV1_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1))
+	       dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	   else
+	       dac_data.sDacload.ucDacType = ATOM_DAC_B;
+       } else {
+	   if (info->encoders[ATOM_DEVICE_TV1_INDEX] &&
+	       (info->encoders[ATOM_DEVICE_TV1_INDEX]->encoder_id == ENCODER_OBJECT_ID_INTERNAL_DAC1))
+	       dac_data.sDacload.ucDacType = ATOM_DAC_A;
+	   else
+	       dac_data.sDacload.ucDacType = ATOM_DAC_B;
+       }
     } else {
 	ErrorF("invalid output device for dac detection\n");
 	return ATOM_NOT_IMPLEMENTED;


More information about the xorg-commit mailing list