summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHong Liu <hong.liu@intel.com>2008-02-05 08:58:44 +0800
committerJesse Barnes <jbarnes@hobbes.virtuousgeek.org>2008-02-05 11:06:39 -0800
commitfa841fd05bdebb991f4e4db201e6a260557e2dad (patch)
tree31f91bc1a7d11ed50474333be5fce539a88db2dd
parent4e5c7ad8bdee98bd23a7066f57d0942e64a415fd (diff)
downloadxorg-driver-xf86-video-intel-fa841fd05bdebb991f4e4db201e6a260557e2dad.tar.gz
Bug 10584: Mac Mini EDID data assigned to TMDS output
EDID data for TMDS output got from crt should be applied to TMDS output on mac mini.
-rw-r--r--src/i830_sdvo.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index 4b049946..c7cbfac2 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -1100,8 +1100,10 @@ i830_sdvo_get_modes(xf86OutputPtr output)
{
ScrnInfoPtr pScrn = output->scrn;
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- DisplayModePtr modes;
+ DisplayModePtr modes = NULL;
xf86OutputPtr crt;
+ I830OutputPrivatePtr intel_output;
+ xf86MonPtr edid_mon = NULL;
modes = i830_ddc_get_modes(output);
if (modes != NULL)
@@ -1113,11 +1115,17 @@ i830_sdvo_get_modes(xf86OutputPtr output)
* analog when we fail at finding it the right way.
*/
crt = xf86_config->output[0];
- if (crt->funcs->detect(crt) == XF86OutputStatusDisconnected) {
- return crt->funcs->get_modes(crt);
+ intel_output = crt->driver_private;
+ if (intel_output->type == I830_OUTPUT_ANALOG &&
+ crt->funcs->detect(crt) == XF86OutputStatusDisconnected) {
+ edid_mon = xf86OutputGetEDID(crt, intel_output->pDDCBus);
+ }
+ if (edid_mon) {
+ xf86OutputSetEDID(output, edid_mon);
+ modes = xf86OutputGetEDIDModes(output);
}
- return NULL;
+ return modes;
}
static void