aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_irq.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2012-05-11 13:01:33 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-05-21 14:13:48 -0400
commit084b612ecf8e59973576b2f644e6949609c79375 (patch)
treea2d37be2cb3e662de8292d17df242cd31bbaffa3 /drivers/gpu/drm/i915/i915_irq.c
parent10f76a38166cd51160b3cd7ba2f16339dd381589 (diff)
drm/i915: SDVO hotplug have different interrupt status bits for i915/i965/g4x
Note that gen3 is the only platform where we've got the bit definitions right, hence the workaround of disabling sdvo hotplug support on i945g/gm is not due to misdiagnosis of broken hotplug irq handling ... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> [danvet: add some blurb about sdvo hotplug fail on i945g/gm I've wondered about while reviewing.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_irq.c')
-rw-r--r--drivers/gpu/drm/i915/i915_irq.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index e31515aded8c..5134a62ff82f 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2158,9 +2158,9 @@ static int i915_irq_postinstall(struct drm_device *dev)
2158 hotplug_en |= HDMIC_HOTPLUG_INT_EN; 2158 hotplug_en |= HDMIC_HOTPLUG_INT_EN;
2159 if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) 2159 if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS)
2160 hotplug_en |= HDMID_HOTPLUG_INT_EN; 2160 hotplug_en |= HDMID_HOTPLUG_INT_EN;
2161 if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS) 2161 if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I915)
2162 hotplug_en |= SDVOC_HOTPLUG_INT_EN; 2162 hotplug_en |= SDVOC_HOTPLUG_INT_EN;
2163 if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS) 2163 if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I915)
2164 hotplug_en |= SDVOB_HOTPLUG_INT_EN; 2164 hotplug_en |= SDVOB_HOTPLUG_INT_EN;
2165 if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { 2165 if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) {
2166 hotplug_en |= CRT_HOTPLUG_INT_EN; 2166 hotplug_en |= CRT_HOTPLUG_INT_EN;
@@ -2383,10 +2383,17 @@ static int i965_irq_postinstall(struct drm_device *dev)
2383 hotplug_en |= HDMIC_HOTPLUG_INT_EN; 2383 hotplug_en |= HDMIC_HOTPLUG_INT_EN;
2384 if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS) 2384 if (dev_priv->hotplug_supported_mask & HDMID_HOTPLUG_INT_STATUS)
2385 hotplug_en |= HDMID_HOTPLUG_INT_EN; 2385 hotplug_en |= HDMID_HOTPLUG_INT_EN;
2386 if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS) 2386 if (IS_G4X(dev)) {
2387 hotplug_en |= SDVOC_HOTPLUG_INT_EN; 2387 if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_G4X)
2388 if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS) 2388 hotplug_en |= SDVOC_HOTPLUG_INT_EN;
2389 hotplug_en |= SDVOB_HOTPLUG_INT_EN; 2389 if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_G4X)
2390 hotplug_en |= SDVOB_HOTPLUG_INT_EN;
2391 } else {
2392 if (dev_priv->hotplug_supported_mask & SDVOC_HOTPLUG_INT_STATUS_I965)
2393 hotplug_en |= SDVOC_HOTPLUG_INT_EN;
2394 if (dev_priv->hotplug_supported_mask & SDVOB_HOTPLUG_INT_STATUS_I965)
2395 hotplug_en |= SDVOB_HOTPLUG_INT_EN;
2396 }
2390 if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) { 2397 if (dev_priv->hotplug_supported_mask & CRT_HOTPLUG_INT_STATUS) {
2391 hotplug_en |= CRT_HOTPLUG_INT_EN; 2398 hotplug_en |= CRT_HOTPLUG_INT_EN;
2392 2399