diff options
author | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2008-09-19 15:20:55 +0800 |
---|---|---|
committer | Zhenyu Wang <zhenyu.z.wang@intel.com> | 2008-09-19 15:20:55 +0800 |
commit | 2f93cfbc7e96acc32efb5e1ca49b817a81cba6e3 (patch) | |
tree | 92183ce31054f54578156b939c8332acf126dbf9 /src/i830_hdmi.c | |
parent | 1fbe4d602816c9dfc5fba917b9fdc257d8d025b0 (diff) |
Fix output detection for DVI-I
For CRT this trys to probe all possible port for EDID and
detects got confirmed by EDID's d/a type bit.
For HDMI/DVI, also using EDID d/a type bit to ensure it should
handle the connect or not.
Diffstat (limited to 'src/i830_hdmi.c')
-rw-r--r-- | src/i830_hdmi.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/i830_hdmi.c b/src/i830_hdmi.c index d56eec90..44e5c056 100644 --- a/src/i830_hdmi.c +++ b/src/i830_hdmi.c @@ -139,6 +139,8 @@ i830_hdmi_detect(xf86OutputPtr output) struct i830_hdmi_priv *dev_priv = intel_output->dev_priv; I830Ptr pI830 = I830PTR(pScrn); uint32_t temp, bit; + xf86OutputStatus status; + xf86MonPtr edid_mon; /* For G4X, PEG_BAND_GAP_DATA 3:0 must first be written 0xd. * Failure to do so will result in spurious interrupts being @@ -171,9 +173,15 @@ i830_hdmi_detect(xf86OutputPtr output) } if ((INREG(PORT_HOTPLUG_STAT) & bit) != 0) - return XF86OutputStatusConnected; + status = XF86OutputStatusConnected; else return XF86OutputStatusDisconnected; + + edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus); + if (!edid_mon || !DIGITAL(edid_mon->features.input_type)) + status = XF86OutputStatusDisconnected; + xfree(edid_mon); + return status; } static void |