Add a hack for DDC on my Mac Mini.

This commit is contained in:
Eric Anholt 2006-12-08 08:26:30 -08:00
parent c8c1fb64cc
commit ce54538b90
1 changed files with 26 additions and 1 deletions

View File

@ -983,6 +983,31 @@ i830_sdvo_detect(xf86OutputPtr output)
return XF86OutputStatusDisconnected;
}
static DisplayModePtr
i830_sdvo_get_modes(xf86OutputPtr output)
{
ScrnInfoPtr pScrn = output->scrn;
I830Ptr pI830 = I830PTR(pScrn);
DisplayModePtr modes;
xf86OutputPtr crt;
modes = i830_ddc_get_modes(output);
if (modes != NULL)
return NULL;
/* Mac mini hack. On this device, I get DDC through the analog, which
* load-detects as disconnected. I fail to DDC through the SDVO DDC,
* but it does load-detect as connected. So, just steal the DDC bits from
* analog when we fail at finding it the right way.
*/
crt = pI830->xf86_config.output[0];
if (crt->funcs->detect(crt) == XF86OutputStatusDisconnected) {
return crt->funcs->get_modes(crt);
}
return NULL;
}
static void
i830_sdvo_destroy (xf86OutputPtr output)
{
@ -1007,7 +1032,7 @@ static const xf86OutputFuncsRec i830_sdvo_output_funcs = {
.mode_fixup = i830_sdvo_mode_fixup,
.mode_set = i830_sdvo_mode_set,
.detect = i830_sdvo_detect,
.get_modes = i830_ddc_get_modes,
.get_modes = i830_sdvo_get_modes,
.destroy = i830_sdvo_destroy
};