xf86-video-ati: Branch 'atombios-support' - 2 commits

Alex Deucher agd5f at kemper.freedesktop.org
Tue Nov 20 20:56:14 PST 2007


 src/atombios_output.c |   45 ++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 42 insertions(+), 3 deletions(-)

New commits:
commit 3975da2ea8cb628f7f66c3f26c5dfa181cd1c532
Merge: e283aa3... 295ce27...
Author: Alex Deucher <alex at botch2.(none)>
Date:   Tue Nov 20 23:52:29 2007 -0500

    Merge branch 'atombios-support' of git://git.freedesktop.org/git/xorg/driver/xf86-video-ati into atombios-support

commit e283aa332adf0134243a4fa3d14263719cd8a3fd
Author: Alex Deucher <alex at botch2.(none)>
Date:   Tue Nov 20 23:35:46 2007 -0500

    RADEON: add LVDS atom support

diff --git a/src/atombios_output.c b/src/atombios_output.c
index 9018a7e..71112f6 100644
--- a/src/atombios_output.c
+++ b/src/atombios_output.c
@@ -202,6 +202,33 @@ atombios_output_tmds2_setup(xf86OutputPtr output, DisplayModePtr mode)
     return ATOM_NOT_IMPLEMENTED;
 }
 
+static int
+atombios_output_lvds_setup(xf86OutputPtr output, DisplayModePtr mode)
+{
+    RADEONInfoPtr info       = RADEONPTR(output->scrn);
+    LVDS_ENCODER_CONTROL_PS_ALLOCATION disp_data;
+    AtomBiosArgRec data;
+    unsigned char *space;
+
+    disp_data.ucAction = 1;
+    if (mode->Clock > 165000)
+	disp_data.ucMisc = 1;
+    else
+	disp_data.ucMisc = 0;
+    disp_data.usPixelClock = mode->Clock / 10;
+    data.exec.index = GetIndexIntoMasterTable(COMMAND, LVDSEncoderControl);
+    data.exec.dataSpace = (void *)&space;
+    data.exec.pspace = &disp_data;
+    
+    if (RHDAtomBiosFunc(info->atomBIOS->scrnIndex, info->atomBIOS, ATOMBIOS_EXEC, &data) == ATOM_SUCCESS) {
+	ErrorF("Output LVDS enable success\n");
+	return ATOM_SUCCESS;
+    }
+    
+    ErrorF("Output LVDS enable failed\n");
+    return ATOM_NOT_IMPLEMENTED;
+}
+
 static void
 atombios_output_dac_dpms(xf86OutputPtr output, int mode)
 {
@@ -262,7 +289,19 @@ atombios_output_tmds2_dpms(xf86OutputPtr output, int mode)
 static void
 atombios_output_lvds_dpms(xf86OutputPtr output, int mode)
 {
-    atombios_output_tmds2_dpms(output, mode);
+    RADEONInfoPtr info       = RADEONPTR(output->scrn);
+
+    switch(mode) {
+    case DPMSModeOn:
+	atom_bios_display_device_control(info->atomBIOS, GetIndexIntoMasterTable(COMMAND, LCD1OutputControl), ATOM_ENABLE);
+    
+        break;
+    case DPMSModeStandby:
+    case DPMSModeSuspend:
+    case DPMSModeOff:
+	atom_bios_display_device_control(info->atomBIOS, GetIndexIntoMasterTable(COMMAND, LCD1OutputControl), ATOM_DISABLE);
+        break;
+    }
 }
 
 void
@@ -296,7 +335,7 @@ atombios_output_dpms(xf86OutputPtr output, int mode)
     ErrorF("AGD: output dpms\n");
 
    if (radeon_output->MonType == MT_LCD) {
-       atombios_output_tmds2_dpms(output, mode);
+       atombios_output_lvds_dpms(output, mode);
    } else if (radeon_output->MonType == MT_DFP) {
        ErrorF("AGD: tmds dpms\n");
        if (radeon_output->TMDSType == TMDS_INT)
@@ -330,7 +369,7 @@ atombios_output_mode_set(xf86OutputPtr output,
 	else
 	    atombios_output_tmds2_setup(output, adjusted_mode);
     } else if (radeon_output->MonType == MT_LCD) {
-	atombios_output_tmds2_setup(output, adjusted_mode);
+	atombios_output_lvds_setup(output, adjusted_mode);
     }
 }
 


More information about the xorg-commit mailing list