diff options
author | Xiong Zhang <xiong.y.zhang@intel.com> | 2015-08-17 04:04:04 -0400 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2015-08-31 11:27:02 -0400 |
commit | 11c1b657c42f65c43f866b611956ef0a10bedafc (patch) | |
tree | 0699511b021463c4aa53377dbb40e90fe8bfc907 /drivers/gpu/drm/i915/intel_hdmi.c | |
parent | 54875571bbfde00fc63741715c531cbb5246c3b2 (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.c | 21 |
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. */ |