Commit 07c338ce authored by Jani Nikula's avatar Jani Nikula

drm/i915: fix short vs. long hpd detection

Fix short vs. long hpd detection for non-g4x and non-pch split
platforms.

Broken since introduction in
commit 13cf5504
Author: Dave Airlie <airlied@redhat.com>
Date:   Wed Jun 18 11:29:35 2014 +1000

    drm/i915: rework digital port IRQ handling (v2)

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=83175Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent e17ac6db
...@@ -1711,7 +1711,7 @@ static irqreturn_t gen8_gt_irq_handler(struct drm_device *dev, ...@@ -1711,7 +1711,7 @@ static irqreturn_t gen8_gt_irq_handler(struct drm_device *dev,
#define HPD_STORM_DETECT_PERIOD 1000 #define HPD_STORM_DETECT_PERIOD 1000
#define HPD_STORM_THRESHOLD 5 #define HPD_STORM_THRESHOLD 5
static int ilk_port_to_hotplug_shift(enum port port) static int pch_port_to_hotplug_shift(enum port port)
{ {
switch (port) { switch (port) {
case PORT_A: case PORT_A:
...@@ -1727,7 +1727,7 @@ static int ilk_port_to_hotplug_shift(enum port port) ...@@ -1727,7 +1727,7 @@ static int ilk_port_to_hotplug_shift(enum port port)
} }
} }
static int g4x_port_to_hotplug_shift(enum port port) static int i915_port_to_hotplug_shift(enum port port)
{ {
switch (port) { switch (port) {
case PORT_A: case PORT_A:
...@@ -1785,12 +1785,12 @@ static inline void intel_hpd_irq_handler(struct drm_device *dev, ...@@ -1785,12 +1785,12 @@ static inline void intel_hpd_irq_handler(struct drm_device *dev,
if (port && dev_priv->hpd_irq_port[port]) { if (port && dev_priv->hpd_irq_port[port]) {
bool long_hpd; bool long_hpd;
if (IS_G4X(dev)) { if (HAS_PCH_SPLIT(dev)) {
dig_shift = g4x_port_to_hotplug_shift(port); dig_shift = pch_port_to_hotplug_shift(port);
long_hpd = (hotplug_trigger >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT;
} else {
dig_shift = ilk_port_to_hotplug_shift(port);
long_hpd = (dig_hotplug_reg >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT; long_hpd = (dig_hotplug_reg >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT;
} else {
dig_shift = i915_port_to_hotplug_shift(port);
long_hpd = (hotplug_trigger >> dig_shift) & PORTB_HOTPLUG_LONG_DETECT;
} }
DRM_DEBUG_DRIVER("digital hpd port %c - %s\n", DRM_DEBUG_DRIVER("digital hpd port %c - %s\n",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment