diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2008-11-25 15:07:09 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2008-11-25 15:07:09 +1000 |
commit | 2acb8e4ed220fccb21b22a53c5142ab3a35d32ef (patch) | |
tree | 98b99f1bb8257d42d27eca250836ef6befd02128 /src/radeon_output.c | |
parent | b01e35168de40d192fd7a9ce6884b9c7419afbd4 (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.c | 22 |
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; |