summaryrefslogtreecommitdiff
path: root/src/radeon_atombios.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-01-06 17:41:22 -0500
committerAlex Deucher <alexdeucher@gmail.com>2009-01-06 17:41:22 -0500
commitc3fb8bb279959512a4ced644a64cc660c5cd97bd (patch)
tree02c2ad370524c81fdea9fc4cfa743849831af399 /src/radeon_atombios.c
parent9bb6b8ceaf772e1ce63610812a12260ee3860c27 (diff)
ATOM: rework encoder/transmitter setup
Diffstat (limited to 'src/radeon_atombios.c')
-rw-r--r--src/radeon_atombios.c81
1 files changed, 49 insertions, 32 deletions
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 717211e4..feebdba2 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -1666,43 +1666,52 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn)
else
info->BiosConnector[i].linkb = FALSE;
- /* dac/tmds type */
- if (path->usDeviceTag != ATOM_DEVICE_LCD1_SUPPORT) {
- switch(enc_obj_id) {
- case ENCODER_OBJECT_ID_INTERNAL_LVDS:
- break;
- case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
- info->BiosConnector[i].TMDSType = TMDS_INT;
- break;
- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
+ switch(enc_obj_id) {
+ case ENCODER_OBJECT_ID_INTERNAL_LVDS:
+ info->BiosConnector[i].LVDSType = LVDS_INT;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_TMDS1:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_TMDS1:
+ info->BiosConnector[i].TMDSType = TMDS_INT;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY:
+ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS)
+ info->BiosConnector[i].LVDSType = LVDS_UNIPHY;
+ else
info->BiosConnector[i].TMDSType = TMDS_UNIPHY;
- break;
- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY1:
+ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS)
+ info->BiosConnector[i].LVDSType = LVDS_UNIPHY1;
+ else
info->BiosConnector[i].TMDSType = TMDS_UNIPHY1;
- break;
- case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_UNIPHY2:
+ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS)
+ info->BiosConnector[i].LVDSType = LVDS_UNIPHY2;
+ else
info->BiosConnector[i].TMDSType = TMDS_UNIPHY2;
- break;
- case ENCODER_OBJECT_ID_INTERNAL_TMDS2:
- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
- info->BiosConnector[i].TMDSType = TMDS_EXT;
- break;
- case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_TMDS2:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DVO1:
+ info->BiosConnector[i].TMDSType = TMDS_EXT;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_LVTM1:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_LVTMA:
+ if (info->BiosConnector[i].ConnectorType == CONNECTOR_LVDS)
+ info->BiosConnector[i].LVDSType = LVDS_LVTMA;
+ else
info->BiosConnector[i].TMDSType = TMDS_LVTMA;
- break;
- case ENCODER_OBJECT_ID_INTERNAL_DAC1:
- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
- info->BiosConnector[i].DACType = DAC_PRIMARY;
- break;
- case ENCODER_OBJECT_ID_INTERNAL_DAC2:
- case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
- info->BiosConnector[i].DACType = DAC_TVDAC;
- break;
- }
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_DAC1:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC1:
+ info->BiosConnector[i].DACType = DAC_PRIMARY;
+ break;
+ case ENCODER_OBJECT_ID_INTERNAL_DAC2:
+ case ENCODER_OBJECT_ID_INTERNAL_KLDSCP_DAC2:
+ info->BiosConnector[i].DACType = DAC_TVDAC;
+ break;
}
- break;
}
}
@@ -2063,6 +2072,14 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
else
info->BiosConnector[i].TMDSType = TMDS_NONE;
+ if (i == ATOM_DEVICE_LCD1_INDEX) {
+ if (IS_AVIVO_VARIANT)
+ info->BiosConnector[i].LVDSType = LVDS_LVTMA;
+ else
+ info->BiosConnector[i].LVDSType = LVDS_INT;
+ } else
+ info->BiosConnector[i].LVDSType = LVDS_NONE;
+
/* Always set the connector type to VGA for CRT1/CRT2. if they are
* shared with a DVI port, we'll pick up the DVI connector below when we
* merge the outputs