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