From 868a0c877d02a2ee7f480fbc3e5b1e75be08ce34 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Sun, 13 May 2012 20:16:12 +0100 Subject: [PATCH] --- yaml --- r: 307458 b: refs/heads/master c: 48da64a8bf2e00952fcd3ad108babae5e003a03d h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/gpu/drm/i915/intel_display.c | 21 +++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 98888029d8f2..a8d6ce9f24c7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a9dcf84b14ef4e9a609910367576995e6f32f3dc +refs/heads/master: 48da64a8bf2e00952fcd3ad108babae5e003a03d diff --git a/trunk/drivers/gpu/drm/i915/intel_display.c b/trunk/drivers/gpu/drm/i915/intel_display.c index 956b22899b71..9dc42bf557be 100644 --- a/trunk/drivers/gpu/drm/i915/intel_display.c +++ b/trunk/drivers/gpu/drm/i915/intel_display.c @@ -1403,14 +1403,18 @@ intel_sbi_read(struct drm_i915_private *dev_priv, u16 reg) static void intel_enable_pch_pll(struct intel_crtc *intel_crtc) { struct drm_i915_private *dev_priv = intel_crtc->base.dev->dev_private; - struct intel_pch_pll *pll = intel_crtc->pch_pll; + struct intel_pch_pll *pll; int reg; u32 val; - /* PCH only available on ILK+ */ + /* PCH PLLs only available on ILK, SNB and IVB */ BUG_ON(dev_priv->info->gen < 5); - BUG_ON(pll == NULL); - BUG_ON(pll->refcount == 0); + pll = intel_crtc->pch_pll; + if (pll == NULL) + return; + + if (WARN_ON(pll->refcount == 0)) + return; DRM_DEBUG_KMS("enable PCH PLL %x (active %d, on? %d)for crtc %d\n", pll->pll_reg, pll->active, pll->on, @@ -1448,13 +1452,18 @@ static void intel_disable_pch_pll(struct intel_crtc *intel_crtc) if (pll == NULL) return; - BUG_ON(pll->refcount == 0); + if (WARN_ON(pll->refcount == 0)) + return; DRM_DEBUG_KMS("disable PCH PLL %x (active %d, on? %d) for crtc %d\n", pll->pll_reg, pll->active, pll->on, intel_crtc->base.base.id); - BUG_ON(pll->active == 0); + if (WARN_ON(pll->active == 0)) { + assert_pch_pll_disabled(dev_priv, intel_crtc); + return; + } + if (--pll->active) { assert_pch_pll_enabled(dev_priv, intel_crtc); return;