summaryrefslogtreecommitdiff
path: root/src/atombios_crtc.c
diff options
context:
space:
mode:
authorAlex Deucher <alex@botch2.(none)>2007-11-21 02:23:37 -0500
committerAlex Deucher <alex@botch2.(none)>2007-11-21 02:23:37 -0500
commitd5317922f29a57b6c4127826a2fc126c5fd7c117 (patch)
tree48bf1cbfe486004dcd3a00842877be0fd52ecb2f /src/atombios_crtc.c
parent81ce299bffd75540925b4c8234adf11226147165 (diff)
RADEON: attempt to fix crtc to output routing
The output routing seems to be based on the output ids from the bios connector tables and the connected status in the bios scratch regs. I don't fully understand this yet, but this seems to work for the most part, however changing modes can sometimes lead to a blanked head. This can be remedied by forcing a dpms off cycle.
Diffstat (limited to 'src/atombios_crtc.c')
-rw-r--r--src/atombios_crtc.c39
1 files changed, 14 insertions, 25 deletions
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index 1ab2f6df..5188ec32 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -353,37 +353,26 @@ atombios_set_crtc_source(xf86CrtcPtr crtc)
xf86OutputPtr output = xf86_config->output[i];
RADEONOutputPrivatePtr radeon_output = output->driver_private;
- switch(major) {
- case 1: {
- switch(minor) {
- case 0:
- case 1:
+ if (output->crtc == crtc) {
+ switch(major) {
+ case 1: {
+ switch(minor) {
+ case 0:
+ case 1:
+ default:
+ crtc_src_param.ucDevice = radeon_output->output_id;
+ break;
+ }
+ break;
+ }
default:
- if (radeon_output->MonType == MT_CRT) {
- if (radeon_output->DACType == DAC_PRIMARY)
- crtc_src_param.ucDevice |= ATOM_DEVICE_CRT1_SUPPORT;
- else
- crtc_src_param.ucDevice |= ATOM_DEVICE_CRT2_SUPPORT;
- } else if (radeon_output->MonType == MT_DFP) {
- if (radeon_output->TMDSType == TMDS_INT)
- crtc_src_param.ucDevice |= ATOM_DEVICE_DFP1_SUPPORT;
- else
- crtc_src_param.ucDevice |= ATOM_DEVICE_DFP2_SUPPORT;
- } else if (radeon_output->MonType == MT_LCD)
- crtc_src_param.ucDevice |= ATOM_DEVICE_LCD1_SUPPORT;
- else if (radeon_output->MonType == MT_STV || radeon_output->MonType == MT_CTV)
- crtc_src_param.ucDevice |= ATOM_DEVICE_TV1_SUPPORT;
- else if (radeon_output->MonType == MT_CV)
- crtc_src_param.ucDevice |= ATOM_DEVICE_CV_SUPPORT;
break;
}
- break;
- }
- default:
- break;
}
}
+ ErrorF("devices sourced: 0x%x\n", crtc_src_param.ucDevice);
+
data.exec.index = index;
data.exec.dataSpace = (void *)&space;
data.exec.pspace = &crtc_src_param;