diff options
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
-rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 35 |
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 | */ |
1577 | static void intel_get_hpd_pins(u32 *pin_mask, u32 *long_mask, | 1577 | static 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 | ||