aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 79fadb50ab69..252feff2892d 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1574,10 +1574,11 @@ static bool i9xx_port_hotplug_long_detect(enum port port, u32 val)
1574 * 1574 *
1575 * Note that the caller is expected to zero out the masks initially. 1575 * Note that the caller is expected to zero out the masks initially.
1576 */ 1576 */
1577static void intel_get_hpd_pins(u32 *pin_mask, u32 *long_mask, 1577static void intel_get_hpd_pins(struct drm_i915_private *dev_priv,
1578 u32 hotplug_trigger, u32 dig_hotplug_reg, 1578 u32 *pin_mask, u32 *long_mask,
1579 const u32 hpd[HPD_NUM_PINS], 1579 u32 hotplug_trigger, u32 dig_hotplug_reg,
1580 bool long_pulse_detect(enum port port, u32 val)) 1580 const u32 hpd[HPD_NUM_PINS],
1581 bool long_pulse_detect(enum port port, u32 val))
1581{ 1582{
1582 enum port port; 1583 enum port port;
1583 int i; 1584 int i;
@@ -1588,7 +1589,7 @@ static void intel_get_hpd_pins(u32 *pin_mask, u32 *long_mask,
1588 1589
1589 *pin_mask |= BIT(i); 1590 *pin_mask |= BIT(i);
1590 1591
1591 port = intel_hpd_pin_to_port(i); 1592 port = intel_hpd_pin_to_port(dev_priv, i);
1592 if (port == PORT_NONE) 1593 if (port == PORT_NONE)
1593 continue; 1594 continue;
1594 1595
@@ -1976,8 +1977,9 @@ static void i9xx_hpd_irq_handler(struct drm_i915_private *dev_priv,
1976 u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X; 1977 u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_G4X;
1977 1978
1978 if (hotplug_trigger) { 1979 if (hotplug_trigger) {
1979 intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, 1980 intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
1980 hotplug_trigger, hpd_status_g4x, 1981 hotplug_trigger, hotplug_trigger,
1982 hpd_status_g4x,
1981 i9xx_port_hotplug_long_detect); 1983 i9xx_port_hotplug_long_detect);
1982 1984
1983 intel_hpd_irq_handler(dev_priv, pin_mask, long_mask); 1985 intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
@@ -1989,8 +1991,9 @@ static void i9xx_hpd_irq_handler(struct drm_i915_private *dev_priv,
1989 u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_I915; 1991 u32 hotplug_trigger = hotplug_status & HOTPLUG_INT_STATUS_I915;
1990 1992
1991 if (hotplug_trigger) { 1993 if (hotplug_trigger) {
1992 intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, 1994 intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
1993 hotplug_trigger, hpd_status_i915, 1995 hotplug_trigger, hotplug_trigger,
1996 hpd_status_i915,
1994 i9xx_port_hotplug_long_detect); 1997 i9xx_port_hotplug_long_detect);
1995 intel_hpd_irq_handler(dev_priv, pin_mask, long_mask); 1998 intel_hpd_irq_handler(dev_priv, pin_mask, long_mask);
1996 } 1999 }
@@ -2191,7 +2194,7 @@ static void ibx_hpd_irq_handler(struct drm_i915_private *dev_priv,
2191 if (!hotplug_trigger) 2194 if (!hotplug_trigger)
2192 return; 2195 return;
2193 2196
2194 intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, 2197 intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask, hotplug_trigger,
2195 dig_hotplug_reg, hpd, 2198 dig_hotplug_reg, hpd,
2196 pch_port_hotplug_long_detect); 2199 pch_port_hotplug_long_detect);
2197 2200
@@ -2333,8 +2336,8 @@ static void spt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
2333 dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); 2336 dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
2334 I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg); 2337 I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
2335 2338
2336 intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, 2339 intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
2337 dig_hotplug_reg, hpd_spt, 2340 hotplug_trigger, dig_hotplug_reg, hpd_spt,
2338 spt_port_hotplug_long_detect); 2341 spt_port_hotplug_long_detect);
2339 } 2342 }
2340 2343
@@ -2344,8 +2347,8 @@ static void spt_irq_handler(struct drm_i915_private *dev_priv, u32 pch_iir)
2344 dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG2); 2347 dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG2);
2345 I915_WRITE(PCH_PORT_HOTPLUG2, dig_hotplug_reg); 2348 I915_WRITE(PCH_PORT_HOTPLUG2, dig_hotplug_reg);
2346 2349
2347 intel_get_hpd_pins(&pin_mask, &long_mask, hotplug2_trigger, 2350 intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask,
2348 dig_hotplug_reg, hpd_spt, 2351 hotplug2_trigger, dig_hotplug_reg, hpd_spt,
2349 spt_port_hotplug2_long_detect); 2352 spt_port_hotplug2_long_detect);
2350 } 2353 }
2351 2354
@@ -2365,7 +2368,7 @@ static void ilk_hpd_irq_handler(struct drm_i915_private *dev_priv,
2365 dig_hotplug_reg = I915_READ(DIGITAL_PORT_HOTPLUG_CNTRL); 2368 dig_hotplug_reg = I915_READ(DIGITAL_PORT_HOTPLUG_CNTRL);
2366 I915_WRITE(DIGITAL_PORT_HOTPLUG_CNTRL, dig_hotplug_reg); 2369 I915_WRITE(DIGITAL_PORT_HOTPLUG_CNTRL, dig_hotplug_reg);
2367 2370
2368 intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, 2371 intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask, hotplug_trigger,
2369 dig_hotplug_reg, hpd, 2372 dig_hotplug_reg, hpd,
2370 ilk_port_hotplug_long_detect); 2373 ilk_port_hotplug_long_detect);
2371 2374
@@ -2542,7 +2545,7 @@ static void bxt_hpd_irq_handler(struct drm_i915_private *dev_priv,
2542 dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG); 2545 dig_hotplug_reg = I915_READ(PCH_PORT_HOTPLUG);
2543 I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg); 2546 I915_WRITE(PCH_PORT_HOTPLUG, dig_hotplug_reg);
2544 2547
2545 intel_get_hpd_pins(&pin_mask, &long_mask, hotplug_trigger, 2548 intel_get_hpd_pins(dev_priv, &pin_mask, &long_mask, hotplug_trigger,
2546 dig_hotplug_reg, hpd, 2549 dig_hotplug_reg, hpd,
2547 bxt_port_hotplug_long_detect); 2550 bxt_port_hotplug_long_detect);
2548 2551