aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_hdmi.c
diff options
context:
space:
mode:
authorEugeni Dodonov <eugeni.dodonov@intel.com>2012-05-09 14:37:28 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-05-19 16:39:50 -0400
commit7ceae0a55c52ca8a2a7cbdecc945e434fff77f94 (patch)
tree0a1a8ea1b0577a3c813aa4347bcb979e36cdb21f /drivers/gpu/drm/i915/intel_hdmi.c
parent0e72a5b55e706dafa3402611f6f9e082a810673d (diff)
drm/i915: add support for DDI-controlled digital outputs
Those are driven by DDIs on Haswell architecture, so we need to keep track of which DDI is being used on each output. Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Eugeni Dodonov <eugeni.dodonov@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hdmi.c')
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 8da8dfe1b4fa..3b0cf7197254 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -41,6 +41,7 @@ struct intel_hdmi {
41 struct intel_encoder base; 41 struct intel_encoder base;
42 u32 sdvox_reg; 42 u32 sdvox_reg;
43 int ddc_bus; 43 int ddc_bus;
44 int ddi_port;
44 uint32_t color_range; 45 uint32_t color_range;
45 bool has_hdmi_sink; 46 bool has_hdmi_sink;
46 bool has_audio; 47 bool has_audio;
@@ -661,6 +662,24 @@ void intel_hdmi_init(struct drm_device *dev, int sdvox_reg)
661 intel_encoder->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT); 662 intel_encoder->clone_mask = (1 << INTEL_HDMIF_CLONE_BIT);
662 intel_hdmi->ddc_bus = GMBUS_PORT_DPD; 663 intel_hdmi->ddc_bus = GMBUS_PORT_DPD;
663 dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS; 664 dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS;
665 } else if (sdvox_reg == DDI_BUF_CTL(PORT_B)) {
666 DRM_DEBUG_DRIVER("LPT: detected output on DDI B\n");
667 intel_encoder->clone_mask = (1 << INTEL_HDMIB_CLONE_BIT);
668 intel_hdmi->ddc_bus = GMBUS_PORT_DPB;
669 intel_hdmi->ddi_port = PORT_B;
670 dev_priv->hotplug_supported_mask |= HDMIB_HOTPLUG_INT_STATUS;
671 } else if (sdvox_reg == DDI_BUF_CTL(PORT_C)) {
672 DRM_DEBUG_DRIVER("LPT: detected output on DDI C\n");
673 intel_encoder->clone_mask = (1 << INTEL_HDMIC_CLONE_BIT);
674 intel_hdmi->ddc_bus = GMBUS_PORT_DPC;
675 intel_hdmi->ddi_port = PORT_C;
676 dev_priv->hotplug_supported_mask |= HDMIC_HOTPLUG_INT_STATUS;
677 } else if (sdvox_reg == DDI_BUF_CTL(PORT_D)) {
678 DRM_DEBUG_DRIVER("LPT: detected output on DDI D\n");
679 intel_encoder->clone_mask = (1 << INTEL_HDMID_CLONE_BIT);
680 intel_hdmi->ddc_bus = GMBUS_PORT_DPD;
681 intel_hdmi->ddi_port = PORT_D;
682 dev_priv->hotplug_supported_mask |= HDMID_HOTPLUG_INT_STATUS;
664 } else { 683 } else {
665 /* If we got an unknown sdvox_reg, things are pretty much broken 684 /* If we got an unknown sdvox_reg, things are pretty much broken
666 * in a way that we should let the kernel know about it */ 685 * in a way that we should let the kernel know about it */