summaryrefslogtreecommitdiff
path: root/src/radeon_output.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2008-11-25 15:07:09 +1000
committerDave Airlie <airlied@redhat.com>2008-11-25 15:07:09 +1000
commit2acb8e4ed220fccb21b22a53c5142ab3a35d32ef (patch)
tree98b99f1bb8257d42d27eca250836ef6befd02128 /src/radeon_output.c
parentb01e35168de40d192fd7a9ce6884b9c7419afbd4 (diff)
radeon: fixup shared DDC lines for some rv610 cards.
Some cards share DDC between a HDMI and VGA output, and expect the driver to use load detect or EDID to figure it out. airlied- shipped in RHEL5 Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'src/radeon_output.c')
-rw-r--r--src/radeon_output.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/src/radeon_output.c b/src/radeon_output.c
index bff65ad1..0ac19e75 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -243,8 +243,6 @@ radeon_ddc_connected(xf86OutputPtr output)
}
}
if (MonInfo) {
- if (!xf86ReturnOptValBool(info->Options, OPTION_IGNORE_EDID, FALSE))
- xf86OutputSetEDID(output, MonInfo);
if (radeon_output->type == OUTPUT_LVDS)
MonType = MT_LCD;
else if (radeon_output->type == OUTPUT_DVI_D)
@@ -258,6 +256,24 @@ radeon_ddc_connected(xf86OutputPtr output)
MonType = MT_DFP;
else
MonType = MT_CRT;
+
+ if (radeon_output->shared_ddc) {
+ if (radeon_output->type == OUTPUT_VGA) {
+ if (MonInfo->rawData[0x14] & 0x80) /* if it's digital and VGA */
+ MonType = MT_NONE;
+ else
+ MonType = MT_CRT;
+ } else {
+ if (MonInfo->rawData[0x14] & 0x80) /* if it's digital and DVI/HDMI/etc. */
+ MonType = MT_DFP;
+ else
+ MonType = MT_NONE;
+ }
+ }
+
+ if (MonType != MT_NONE)
+ if (!xf86ReturnOptValBool(info->Options, OPTION_IGNORE_EDID, FALSE))
+ xf86OutputSetEDID(output, MonInfo);
} else
MonType = MT_NONE;
@@ -2667,6 +2683,7 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn)
*/
for (i = 0; i < RADEON_MAX_BIOS_CONNECTOR; i++) {
info->BiosConnector[i].valid = FALSE;
+ info->BiosConnector[i].shared_ddc = FALSE;
info->BiosConnector[i].ddc_i2c.valid = FALSE;
info->BiosConnector[i].DACType = DAC_NONE;
info->BiosConnector[i].TMDSType = TMDS_NONE;
@@ -2790,6 +2807,7 @@ Bool RADEONSetupConnectors(ScrnInfoPtr pScrn)
radeon_output->output_id = info->BiosConnector[i].output_id;
radeon_output->ddc_i2c = info->BiosConnector[i].ddc_i2c;
radeon_output->igp_lane_info = info->BiosConnector[i].igp_lane_info;
+ radeon_output->shared_ddc = info->BiosConnector[i].shared_ddc;
if (radeon_output->ConnectorType == CONNECTOR_DVI_D)
radeon_output->DACType = DAC_NONE;