aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_hdmi.c
diff options
context:
space:
mode:
authorXiong Zhang <xiong.y.zhang@intel.com>2015-08-17 04:04:04 -0400
committerJani Nikula <jani.nikula@intel.com>2015-08-31 11:27:02 -0400
commit11c1b657c42f65c43f866b611956ef0a10bedafc (patch)
tree0699511b021463c4aa53377dbb40e90fe8bfc907 /drivers/gpu/drm/i915/intel_hdmi.c
parent54875571bbfde00fc63741715c531cbb5246c3b2 (diff)
drm/i915: Enable HDMI on DDI-E
DDI-E doesn't have the correspondent GMBUS pin. We rely on VBT to tell us which one it being used instead. The DVI/HDMI on shared port couldn't exist. This patch isn't tested without hardware wchich has HDMI on DDI-E. v2: fix trailing whitespace v3: MISSING_CASE take place of BUG() Signed-off-by: Xiong Zhang <xiong.y.zhang@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/intel_hdmi.c')
-rw-r--r--drivers/gpu/drm/i915/intel_hdmi.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 51cbea8247fe..dcd336bcdfe7 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -1958,6 +1958,7 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
1958 struct drm_device *dev = intel_encoder->base.dev; 1958 struct drm_device *dev = intel_encoder->base.dev;
1959 struct drm_i915_private *dev_priv = dev->dev_private; 1959 struct drm_i915_private *dev_priv = dev->dev_private;
1960 enum port port = intel_dig_port->port; 1960 enum port port = intel_dig_port->port;
1961 uint8_t alternate_ddc_pin;
1961 1962
1962 drm_connector_init(dev, connector, &intel_hdmi_connector_funcs, 1963 drm_connector_init(dev, connector, &intel_hdmi_connector_funcs,
1963 DRM_MODE_CONNECTOR_HDMIA); 1964 DRM_MODE_CONNECTOR_HDMIA);
@@ -1991,6 +1992,26 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port,
1991 intel_hdmi->ddc_bus = GMBUS_PIN_DPD; 1992 intel_hdmi->ddc_bus = GMBUS_PIN_DPD;
1992 intel_encoder->hpd_pin = HPD_PORT_D; 1993 intel_encoder->hpd_pin = HPD_PORT_D;
1993 break; 1994 break;
1995 case PORT_E:
1996 /* On SKL PORT E doesn't have seperate GMBUS pin
1997 * We rely on VBT to set a proper alternate GMBUS pin. */
1998 alternate_ddc_pin =
1999 dev_priv->vbt.ddi_port_info[PORT_E].alternate_ddc_pin;
2000 switch (alternate_ddc_pin) {
2001 case DDC_PIN_B:
2002 intel_hdmi->ddc_bus = GMBUS_PIN_DPB;
2003 break;
2004 case DDC_PIN_C:
2005 intel_hdmi->ddc_bus = GMBUS_PIN_DPC;
2006 break;
2007 case DDC_PIN_D:
2008 intel_hdmi->ddc_bus = GMBUS_PIN_DPD;
2009 break;
2010 default:
2011 MISSING_CASE(alternate_ddc_pin);
2012 }
2013 intel_encoder->hpd_pin = HPD_PORT_E;
2014 break;
1994 case PORT_A: 2015 case PORT_A:
1995 intel_encoder->hpd_pin = HPD_PORT_A; 2016 intel_encoder->hpd_pin = HPD_PORT_A;
1996 /* Internal port only for eDP. */ 2017 /* Internal port only for eDP. */