diff options
author | Alex Deucher <alex@botch2.(none)> | 2007-11-21 17:03:39 -0500 |
---|---|---|
committer | Alex Deucher <alex@botch2.(none)> | 2007-11-21 17:03:39 -0500 |
commit | d56bde98efceaa8344e62f8e98db90c4bb642331 (patch) | |
tree | 351f059f42d8cc83ff7b79927d35d2fbc83cf5ab /src/atombios_crtc.c | |
parent | a12390c832abe423def60e39cd5a9118e5910339 (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.c | 20 |
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; |