diff options
author | Alex Deucher <alex@botch2.(none)> | 2007-11-21 02:23:37 -0500 |
---|---|---|
committer | Alex Deucher <alex@botch2.(none)> | 2007-11-21 02:23:37 -0500 |
commit | d5317922f29a57b6c4127826a2fc126c5fd7c117 (patch) | |
tree | 48bf1cbfe486004dcd3a00842877be0fd52ecb2f /src/atombios_crtc.c | |
parent | 81ce299bffd75540925b4c8234adf11226147165 (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.c | 39 |
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; |