diff options
-rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 10 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_hdmi.c | 9 |
3 files changed, 19 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 6cfe65d6a8cf..d5c331df81fd 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c | |||
@@ -3243,7 +3243,15 @@ void intel_ddi_init(struct drm_device *dev, enum port port) | |||
3243 | goto err; | 3243 | goto err; |
3244 | 3244 | ||
3245 | intel_dig_port->hpd_pulse = intel_dp_hpd_pulse; | 3245 | intel_dig_port->hpd_pulse = intel_dp_hpd_pulse; |
3246 | dev_priv->hotplug.irq_port[port] = intel_dig_port; | 3246 | /* |
3247 | * On BXT A0/A1, sw needs to activate DDIA HPD logic and | ||
3248 | * interrupts to check the external panel connection. | ||
3249 | */ | ||
3250 | if (IS_BROXTON(dev_priv) && (INTEL_REVID(dev) < BXT_REVID_B0) | ||
3251 | && port == PORT_B) | ||
3252 | dev_priv->hotplug.irq_port[PORT_A] = intel_dig_port; | ||
3253 | else | ||
3254 | dev_priv->hotplug.irq_port[port] = intel_dig_port; | ||
3247 | } | 3255 | } |
3248 | 3256 | ||
3249 | /* In theory we don't need the encoder->type check, but leave it just in | 3257 | /* In theory we don't need the encoder->type check, but leave it just in |
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 54e9b5380aa7..a02824649423 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -5876,6 +5876,8 @@ intel_dp_init_connector(struct intel_digital_port *intel_dig_port, | |||
5876 | break; | 5876 | break; |
5877 | case PORT_B: | 5877 | case PORT_B: |
5878 | intel_encoder->hpd_pin = HPD_PORT_B; | 5878 | intel_encoder->hpd_pin = HPD_PORT_B; |
5879 | if (IS_BROXTON(dev_priv) && (INTEL_REVID(dev) < BXT_REVID_B0)) | ||
5880 | intel_encoder->hpd_pin = HPD_PORT_A; | ||
5879 | break; | 5881 | break; |
5880 | case PORT_C: | 5882 | case PORT_C: |
5881 | intel_encoder->hpd_pin = HPD_PORT_C; | 5883 | intel_encoder->hpd_pin = HPD_PORT_C; |
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c index 51cbea8247fe..0cfbe85fe271 100644 --- a/drivers/gpu/drm/i915/intel_hdmi.c +++ b/drivers/gpu/drm/i915/intel_hdmi.c | |||
@@ -1973,7 +1973,14 @@ void intel_hdmi_init_connector(struct intel_digital_port *intel_dig_port, | |||
1973 | intel_hdmi->ddc_bus = GMBUS_PIN_1_BXT; | 1973 | intel_hdmi->ddc_bus = GMBUS_PIN_1_BXT; |
1974 | else | 1974 | else |
1975 | intel_hdmi->ddc_bus = GMBUS_PIN_DPB; | 1975 | intel_hdmi->ddc_bus = GMBUS_PIN_DPB; |
1976 | intel_encoder->hpd_pin = HPD_PORT_B; | 1976 | /* |
1977 | * On BXT A0/A1, sw needs to activate DDIA HPD logic and | ||
1978 | * interrupts to check the external panel connection. | ||
1979 | */ | ||
1980 | if (IS_BROXTON(dev_priv) && (INTEL_REVID(dev) < BXT_REVID_B0)) | ||
1981 | intel_encoder->hpd_pin = HPD_PORT_A; | ||
1982 | else | ||
1983 | intel_encoder->hpd_pin = HPD_PORT_B; | ||
1977 | break; | 1984 | break; |
1978 | case PORT_C: | 1985 | case PORT_C: |
1979 | if (IS_BROXTON(dev_priv)) | 1986 | if (IS_BROXTON(dev_priv)) |