diff options
author | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2020-03-11 17:54:22 +0200 |
---|---|---|
committer | Ville Syrjälä <ville.syrjala@linux.intel.com> | 2020-05-11 16:32:12 +0300 |
commit | c7e8a3d674fbaa5b12ddc681bdf46c34a27e55d5 (patch) | |
tree | bac92791be16dfd4a7dfbacdca8fc337eb2b3887 /drivers/gpu/drm/i915/display/intel_dp.c | |
parent | 0398993b82f40ad02d88da7c894e3faae2da3b0a (diff) |
drm/i915: Use stashed away hpd isr bits in intel_digital_port_connected()
Get rid of several platform specific variants of
intel_digital_port_connected() and just use the ISR bits we've
stashed away.
v2: Duplicate stuff to avoid exposing platform specific
functions across files (Jani)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200311155422.3043-4-ville.syrjala@linux.intel.com
Reviewed-by: Imre Deak <imre.deak@intel.com>
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_dp.c')
-rw-r--r-- | drivers/gpu/drm/i915/display/intel_dp.c | 59 |
1 files changed, 5 insertions, 54 deletions
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c index 99586b20b610..67723dede1d1 100644 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@ -5998,45 +5998,7 @@ edp_detect(struct intel_dp *intel_dp) static bool ibx_digital_port_connected(struct intel_encoder *encoder) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); - u32 bit; - - switch (encoder->hpd_pin) { - case HPD_PORT_B: - bit = SDE_PORTB_HOTPLUG; - break; - case HPD_PORT_C: - bit = SDE_PORTC_HOTPLUG; - break; - case HPD_PORT_D: - bit = SDE_PORTD_HOTPLUG; - break; - default: - MISSING_CASE(encoder->hpd_pin); - return false; - } - - return intel_de_read(dev_priv, SDEISR) & bit; -} - -static bool cpt_digital_port_connected(struct intel_encoder *encoder) -{ - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); - u32 bit; - - switch (encoder->hpd_pin) { - case HPD_PORT_B: - bit = SDE_PORTB_HOTPLUG_CPT; - break; - case HPD_PORT_C: - bit = SDE_PORTC_HOTPLUG_CPT; - break; - case HPD_PORT_D: - bit = SDE_PORTD_HOTPLUG_CPT; - break; - default: - MISSING_CASE(encoder->hpd_pin); - return false; - } + u32 bit = dev_priv->hotplug.pch_hpd[encoder->hpd_pin]; return intel_de_read(dev_priv, SDEISR) & bit; } @@ -6090,15 +6052,9 @@ static bool gm45_digital_port_connected(struct intel_encoder *encoder) static bool ilk_digital_port_connected(struct intel_encoder *encoder) { struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); + u32 bit = dev_priv->hotplug.hpd[encoder->hpd_pin]; - return intel_de_read(dev_priv, DEISR) & DE_DP_A_HOTPLUG; -} - -static bool ivb_digital_port_connected(struct intel_encoder *encoder) -{ - struct drm_i915_private *dev_priv = to_i915(encoder->base.dev); - - return intel_de_read(dev_priv, DEISR) & DE_DP_A_HOTPLUG_IVB; + return intel_de_read(dev_priv, DEISR) & bit; } /* @@ -8405,14 +8361,9 @@ bool intel_dp_init(struct drm_i915_private *dev_priv, intel_dig_port->connected = gm45_digital_port_connected; else intel_dig_port->connected = g4x_digital_port_connected; - } else if (port == PORT_A) { - if (IS_IVYBRIDGE(dev_priv)) - intel_dig_port->connected = ivb_digital_port_connected; - else - intel_dig_port->connected = ilk_digital_port_connected; } else { - if (HAS_PCH_CPT(dev_priv)) - intel_dig_port->connected = cpt_digital_port_connected; + if (port == PORT_A) + intel_dig_port->connected = ilk_digital_port_connected; else intel_dig_port->connected = ibx_digital_port_connected; } |