summaryrefslogtreecommitdiff
path: root/src/i830_hdmi.c
diff options
context:
space:
mode:
authorWu Fengguang <wfg@linux.intel.com>2008-11-13 09:50:37 +0800
committerZhenyu Wang <zhenyu.z.wang@intel.com>2008-11-13 09:50:37 +0800
commit293f4a8b6d1ca8a47d14c4d4b5904b85a8167e12 (patch)
treeb293f873c49113c4f72e2d65219e79ac2a9dea91 /src/i830_hdmi.c
parent667923559219429b0c5fec12a0164f7eba1f8f2d (diff)
introduce i830_hdmi_priv.has_hdmi_sink
HDMI is compatible with DVI, and we've seen many boards that use HDMI port for DVI output. So Zhenyu proposed this flag: i830_hdmi_priv.has_hdmi_sink to indicate the presence of HDMI capable monitors. Signed-off-by: Wu Fengguang <wfg@linux.intel.com>
Diffstat (limited to 'src/i830_hdmi.c')
-rw-r--r--src/i830_hdmi.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/i830_hdmi.c b/src/i830_hdmi.c
index 806ca7dc..a3e3ba8e 100644
--- a/src/i830_hdmi.c
+++ b/src/i830_hdmi.c
@@ -38,6 +38,8 @@ struct i830_hdmi_priv {
uint32_t output_reg;
uint32_t save_SDVO;
+
+ Bool has_hdmi_sink;
};
static int
@@ -142,6 +144,8 @@ i830_hdmi_detect(xf86OutputPtr output)
xf86OutputStatus status;
xf86MonPtr edid_mon;
+ dev_priv->has_hdmi_sink = FALSE;
+
/* For G4X desktop chip, PEG_BAND_GAP_DATA 3:0 must first be written 0xd.
* Failure to do so will result in spurious interrupts being
* generated on the port when a cable is not attached.
@@ -180,6 +184,17 @@ i830_hdmi_detect(xf86OutputPtr output)
edid_mon = xf86OutputGetEDID (output, intel_output->pDDCBus);
if (!edid_mon || !DIGITAL(edid_mon->features.input_type))
status = XF86OutputStatusDisconnected;
+
+ if (xf86LoaderCheckSymbol("xf86MonitorIsHDMI") &&
+ xf86MonitorIsHDMI(edid_mon))
+ dev_priv->has_hdmi_sink = TRUE;
+
+ if (pI830->debug_modes)
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "%s monitor detected on HDMI-%d\n",
+ dev_priv->has_hdmi_sink ? "HDMI" : "DVI",
+ (dev_priv->output_reg == SDVOB) ? 1 : 2);
+
xfree(edid_mon);
return status;
}
@@ -232,6 +247,7 @@ i830_hdmi_init(ScrnInfoPtr pScrn, int output_reg)
dev_priv = (struct i830_hdmi_priv *)(intel_output + 1);
dev_priv->output_reg = output_reg;
+ dev_priv->has_hdmi_sink = FALSE;
intel_output->dev_priv = dev_priv;
intel_output->type = I830_OUTPUT_HDMI;