diff options
author | Sonika Jindal <sonika.jindal@intel.com> | 2015-08-10 01:05:36 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-08-14 12:16:32 -0400 |
commit | cf1d58833f07afbb4534b15caa3fd48baa313b2c (patch) | |
tree | 91b73d491d8a472da42499aee3e49e212671a4b9 /drivers/gpu/drm/i915/intel_hdmi.c | |
parent | 7f3561bec7cb4e4804bc246069420d3f2f7f3ebe (diff) |
drm/i915/bxt: WA for swapped HPD pins in A stepping
WA for BXT A0/A1, where DDIB's HPD pin is swapped to DDIA, so enabling
DDIA HPD pin in place of DDIB.
v2: For DP, irq_port is used to determine the encoder instead of
hpd_pin and removing the edp HPD logic because port A HPD is not
present(Imre)
v3: Rebased on top of Imre's patchset for enabling HPD on PORT A.
Added hpd_pin swapping for intel_dp_init_connector, setting encoder
for PORT_A as per the WA in irq_port (Imre)
v4: Dont enable interrupt for edp, also reframe the description (Siva)
v5: Don’t check for PORT_A in intel_ddi_init to update dig_port,
instead avoid setting hpd_pin itself (Imre)
Signed-off-by: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Sivakumar Thulasimani <sivakumar.thulasimani@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.c | 9 |
1 files changed, 8 insertions, 1 deletions
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)) |