| From 4221861eb8c2f5921f7455ac93a0f67843983265 Mon Sep 17 00:00:00 2001 |
| From: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Date: Mon, 19 Aug 2013 13:18:08 -0300 |
| Subject: drm/i915: fix SDEIMR assertion when disabling LCPLL |
| |
| This was causing WARNs in one machine, so instead of trying to guess |
| exactly which hotplug bits should exist, just do the test on the |
| non-HPD bits. We don't care about the state of the hotplug bits, we |
| just care about the others, that need to be 1. |
| |
| Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com> |
| Reviewed-by: Rodrigo Vivi <rodrigo.vivi@gmail.com> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| (cherry picked from commit bd633a7c1ca0663ba10426a0a6aeda0257cbe804) |
| Signed-off-by: Darren Hart <dvhart@linux.intel.com> |
| --- |
| drivers/gpu/drm/i915/intel_display.c | 8 ++------ |
| 1 file changed, 2 insertions(+), 6 deletions(-) |
| |
| diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c |
| index d46f554c2a9e..29e43b2cf908 100644 |
| --- a/drivers/gpu/drm/i915/intel_display.c |
| +++ b/drivers/gpu/drm/i915/intel_display.c |
| @@ -5932,11 +5932,7 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv) |
| struct intel_ddi_plls *plls = &dev_priv->ddi_plls; |
| struct intel_crtc *crtc; |
| unsigned long irqflags; |
| - uint32_t val, pch_hpd_mask; |
| - |
| - pch_hpd_mask = SDE_PORTB_HOTPLUG_CPT | SDE_PORTC_HOTPLUG_CPT; |
| - if (!(dev_priv->pch_id == INTEL_PCH_LPT_LP_DEVICE_ID_TYPE)) |
| - pch_hpd_mask |= SDE_PORTD_HOTPLUG_CPT | SDE_CRT_HOTPLUG_CPT; |
| + uint32_t val; |
| |
| list_for_each_entry(crtc, &dev->mode_config.crtc_list, base.head) |
| WARN(crtc->base.enabled, "CRTC for pipe %c enabled\n", |
| @@ -5962,7 +5958,7 @@ static void assert_can_disable_lcpll(struct drm_i915_private *dev_priv) |
| WARN((val & ~DE_PCH_EVENT_IVB) != val, |
| "Unexpected DEIMR bits enabled: 0x%x\n", val); |
| val = I915_READ(SDEIMR); |
| - WARN((val & ~pch_hpd_mask) != val, |
| + WARN((val | SDE_HOTPLUG_MASK_CPT) != 0xffffffff, |
| "Unexpected SDEIMR bits enabled: 0x%x\n", val); |
| spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags); |
| } |
| -- |
| 1.8.5.rc3 |
| |