On Mon, 13 Feb 2012 13:14:51 -0500
Sean Paul <[email protected]> wrote:

> This patch replaces the locking from the downclock routines with an assert
> to ensure the registers are indeed unlocked. Without this patch, pre-SNB
> devices would lock the registers when downclocking which would cause a
> WARNING on suspend/resume with downclocking enabled.
> 
> Note: To hit this bug, you need to have lvds downclocking enabled.
> 
> Signed-off-by: Sean Paul <[email protected]>
> ---
>  drivers/gpu/drm/i915/intel_display.c |   14 ++------------
>  1 files changed, 2 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index ebe71ed..33ef4f3 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -6968,9 +6968,7 @@ static void intel_increase_pllclock(struct drm_crtc 
> *crtc)
>       if (!HAS_PIPE_CXSR(dev) && (dpll & DISPLAY_RATE_SELECT_FPA1)) {
>               DRM_DEBUG_DRIVER("upclocking LVDS\n");
>  
> -             /* Unlock panel regs */
> -             I915_WRITE(PP_CONTROL,
> -                        I915_READ(PP_CONTROL) | PANEL_UNLOCK_REGS);
> +             assert_panel_unlocked(dev_priv, pipe);
>  
>               dpll &= ~DISPLAY_RATE_SELECT_FPA1;
>               I915_WRITE(dpll_reg, dpll);
> @@ -6979,9 +6977,6 @@ static void intel_increase_pllclock(struct drm_crtc 
> *crtc)
>               dpll = I915_READ(dpll_reg);
>               if (dpll & DISPLAY_RATE_SELECT_FPA1)
>                       DRM_DEBUG_DRIVER("failed to upclock LVDS!\n");
> -
> -             /* ...and lock them again */
> -             I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) & 0x3);
>       }
>  
>       /* Schedule downclock */
> @@ -7011,9 +7006,7 @@ static void intel_decrease_pllclock(struct drm_crtc 
> *crtc)
>       if (!HAS_PIPE_CXSR(dev) && intel_crtc->lowfreq_avail) {
>               DRM_DEBUG_DRIVER("downclocking LVDS\n");
>  
> -             /* Unlock panel regs */
> -             I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) |
> -                        PANEL_UNLOCK_REGS);
> +             assert_panel_unlocked(dev_priv, pipe);
>  
>               dpll |= DISPLAY_RATE_SELECT_FPA1;
>               I915_WRITE(dpll_reg, dpll);
> @@ -7021,9 +7014,6 @@ static void intel_decrease_pllclock(struct drm_crtc 
> *crtc)
>               dpll = I915_READ(dpll_reg);
>               if (!(dpll & DISPLAY_RATE_SELECT_FPA1))
>                       DRM_DEBUG_DRIVER("failed to downclock LVDS!\n");
> -
> -             /* ...and lock them again */
> -             I915_WRITE(PP_CONTROL, I915_READ(PP_CONTROL) & 0x3);
>       }
>  
>  }

Yeah, looks good.

Acked-by: Jesse Barnes <[email protected]>

-- 
Jesse Barnes, Intel Open Source Technology Center

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to