diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/atombios_crtc.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c index 9a8594a8..ada87f60 100644 --- a/src/atombios_crtc.c +++ b/src/atombios_crtc.c @@ -304,12 +304,29 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2; spc3_ptr->ucEncoderMode = ATOM_ENCODER_MODE_CRT; } else if (radeon_output->MonType == MT_DFP) { - if (radeon_output->devices & ATOM_DEVICE_DFP1_SUPPORT) - spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_UNIPHY; - else if (radeon_output->devices & ATOM_DEVICE_DFP2_SUPPORT) + switch (radeon_output->TMDSType) { + case TMDS_INT: + spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1; + break; + case TMDS_EXT: spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1; - else if (radeon_output->devices & ATOM_DEVICE_DFP3_SUPPORT) + break; + case TMDS_LVTMA: spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA; + break; + case TMDS_UNIPHY: + spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_UNIPHY; + break; + case TMDS_UNIPHY1: + spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_UNIPHY1; + break; + case TMDS_UNIPHY2: + spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_UNIPHY2; + break; + default: + ErrorF("Unknown TMDS type: %d!\n", radeon_output->TMDSType); + exit(-1); + } if (OUTPUT_IS_DVI) spc3_ptr->ucEncoderMode = ATOM_ENCODER_MODE_DVI; else if (radeon_output->type == OUTPUT_HDMI) @@ -317,8 +334,7 @@ atombios_crtc_set_pll(xf86CrtcPtr crtc, DisplayModePtr mode, int pll_flags) else if (radeon_output->type == OUTPUT_DP) spc3_ptr->ucEncoderMode = ATOM_ENCODER_MODE_DP; } else if (radeon_output->MonType == MT_LCD) { - if (radeon_output->devices & ATOM_DEVICE_LCD1_SUPPORT) - spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA; + spc3_ptr->ucTransmitterId = ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA; spc3_ptr->ucEncoderMode = ATOM_ENCODER_MODE_LVDS; } else if (OUTPUT_IS_TV) { if (radeon_output->DACType == DAC_PRIMARY) |