[Intel-gfx] [PATCH] drm/i915/bdw: PIPE_[BC] I[ME]R moved to powerwell
Daniel Vetter
daniel at ffwll.ch
Tue Nov 12 08:16:22 CET 2013
On Mon, Nov 11, 2013 at 02:46:28PM -0800, Ben Widawsky wrote:
> The pipe B and pipe C interrupt mask and enable registers are now part
> of the pipe, so disabling the pipe power wells will lost the contests of
> the registers.
>
> Art totally debugged this one!
>
> v2: Use the irq_lock to clarify code, and prevent future bugs (Daniel)
>
> Cc: Art Runyan <arthur.j.runyan at intel.com>
> Cc: Paulo Zanoni <paulo.r.zanoni at intel.com>
> Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
Merged to bdw-fixes, thanks.
-Daniel
> ---
> drivers/gpu/drm/i915/intel_pm.c | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 0a07d7c..38915dc 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -5684,6 +5684,7 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable)
> {
> struct drm_i915_private *dev_priv = dev->dev_private;
> bool is_enabled, enable_requested;
> + unsigned long irqflags;
> uint32_t tmp;
>
> tmp = I915_READ(HSW_PWR_WELL_DRIVER);
> @@ -5701,9 +5702,22 @@ static void __intel_set_power_well(struct drm_device *dev, bool enable)
> HSW_PWR_WELL_STATE_ENABLED), 20))
> DRM_ERROR("Timeout enabling power well\n");
> }
> +
> + if (IS_BROADWELL(dev)) {
> + spin_lock_irqsave(&dev_priv->irq_lock, irqflags);
> + I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_B),
> + dev_priv->de_irq_mask[PIPE_B]);
> + I915_WRITE(GEN8_DE_PIPE_IER(PIPE_B),
> + ~dev_priv->de_irq_mask[PIPE_B] | GEN8_PIPE_VBLANK);
> + I915_WRITE(GEN8_DE_PIPE_IMR(PIPE_C),
> + dev_priv->de_irq_mask[PIPE_C]);
> + I915_WRITE(GEN8_DE_PIPE_IER(PIPE_C),
> + ~dev_priv->de_irq_mask[PIPE_C] | GEN8_PIPE_VBLANK);
> + POSTING_READ(GEN8_DE_PIPE_IER(PIPE_C));
> + spin_unlock_irqrestore(&dev_priv->irq_lock, irqflags);
> + }
> } else {
> if (enable_requested) {
> - unsigned long irqflags;
> enum pipe p;
>
> I915_WRITE(HSW_PWR_WELL_DRIVER, 0);
> --
> 1.8.4.2
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the Intel-gfx
mailing list