diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2012-05-11 13:01:33 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2012-05-21 14:13:48 -0400 |
commit | 084b612ecf8e59973576b2f644e6949609c79375 (patch) | |
tree | a2d37be2cb3e662de8292d17df242cd31bbaffa3 /drivers/gpu/drm/i915/i915_irq.c | |
parent | 10f76a38166cd51160b3cd7ba2f16339dd381589 (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.c | 19 |
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 | ||