summaryrefslogtreecommitdiff
path: root/src/atombios_crtc.c
diff options
context:
space:
mode:
authorAlex Deucher <alex@botch2.(none)>2007-11-21 17:03:39 -0500
committerAlex Deucher <alex@botch2.(none)>2007-11-21 17:03:39 -0500
commitd56bde98efceaa8344e62f8e98db90c4bb642331 (patch)
tree351f059f42d8cc83ff7b79927d35d2fbc83cf5ab /src/atombios_crtc.c
parenta12390c832abe423def60e39cd5a9118e5910339 (diff)
RADEON: fix crtc to output routing
Thanks to AMD for the information
Diffstat (limited to 'src/atombios_crtc.c')
-rw-r--r--src/atombios_crtc.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index 5188ec32..0bd6c80a 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -353,6 +353,7 @@ atombios_set_crtc_source(xf86CrtcPtr crtc)
xf86OutputPtr output = xf86_config->output[i];
RADEONOutputPrivatePtr radeon_output = output->driver_private;
+ /* doesn't seem to support cloning via atom */
if (output->crtc == crtc) {
switch(major) {
case 1: {
@@ -360,7 +361,22 @@ atombios_set_crtc_source(xf86CrtcPtr crtc)
case 0:
case 1:
default:
- crtc_src_param.ucDevice = radeon_output->output_id;
+ if (radeon_output->MonType == MT_CRT) {
+ if (radeon_output->devices & ATOM_DEVICE_CRT1_SUPPORT)
+ crtc_src_param.ucDevice = ATOM_DEVICE_CRT1_INDEX;
+ else if (radeon_output->devices & ATOM_DEVICE_CRT2_SUPPORT)
+ crtc_src_param.ucDevice = ATOM_DEVICE_CRT2_INDEX;
+ } else if (radeon_output->MonType == MT_DFP) {
+ if (radeon_output->devices & ATOM_DEVICE_DFP1_SUPPORT)
+ crtc_src_param.ucDevice = ATOM_DEVICE_DFP1_INDEX;
+ else if (radeon_output->devices & ATOM_DEVICE_DFP2_SUPPORT)
+ crtc_src_param.ucDevice = ATOM_DEVICE_DFP2_INDEX;
+ else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT)
+ crtc_src_param.ucDevice = ATOM_DEVICE_DFP3_INDEX;
+ } else if (radeon_output->MonType == MT_LCD) {
+ if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT)
+ crtc_src_param.ucDevice = ATOM_DEVICE_LCD1_INDEX;
+ }
break;
}
break;
@@ -371,7 +387,7 @@ atombios_set_crtc_source(xf86CrtcPtr crtc)
}
}
- ErrorF("devices sourced: 0x%x\n", crtc_src_param.ucDevice);
+ ErrorF("device sourced: 0x%x\n", crtc_src_param.ucDevice);
data.exec.index = index;
data.exec.dataSpace = (void *)&space;