Message ID | 1367110769-1306-11-git-send-email-ben@bwidawsk.net (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, Apr 27, 2013 at 05:59:21PM -0700, Ben Widawsky wrote: > Signed-off-by: Ben Widawsky <ben@bwidawsk.net> > --- > drivers/gpu/drm/i915/i915_irq.c | 27 ++++++++++++++++++++++++++- > 1 file changed, 26 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index 13ea6c2..21b09cd 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -2502,6 +2502,31 @@ static void ironlake_irq_preinstall(struct drm_device *dev) > POSTING_READ(SDEIER); > } > > +static void ivybridge_irq_preinstall(struct drm_device *dev) > +{ > + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; > + > + atomic_set(&dev_priv->irq_received, 0); > + > + I915_WRITE(HWSTAM, 0xeffe); > + > + /* XXX hotplug from PCH */ > + > + I915_WRITE(DEIMR, 0xffffffff); > + I915_WRITE(DEIER, 0x0); > + POSTING_READ(DEIER); > + > + /* and GT */ > + I915_WRITE(GTIMR, 0xffffffff); > + I915_WRITE(GTIER, 0x0); > + POSTING_READ(GTIER); you're missing a: if (HAS_PCH_NOP(dev)) return; that you've added in the ironlake path since that patch. > + > + /* south display irq */ > + I915_WRITE(SDEIMR, 0xffffffff); > + I915_WRITE(SDEIER, 0x0); > + POSTING_READ(SDEIER); > +} SDEIER is set to 0xffffffff now with a big comment explaining why. > static void valleyview_irq_preinstall(struct drm_device *dev) > { > drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; > @@ -3500,7 +3525,7 @@ void intel_irq_init(struct drm_device *dev) > } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { > /* Share pre & uninstall handlers with ILK/SNB */ > dev->driver->irq_handler = ivybridge_irq_handler; > - dev->driver->irq_preinstall = ironlake_irq_preinstall; > + dev->driver->irq_preinstall = ivybridge_irq_preinstall; > dev->driver->irq_postinstall = ivybridge_irq_postinstall; > dev->driver->irq_uninstall = ironlake_irq_uninstall; > dev->driver->enable_vblank = ivybridge_enable_vblank; > -- > 1.8.2.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index 13ea6c2..21b09cd 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -2502,6 +2502,31 @@ static void ironlake_irq_preinstall(struct drm_device *dev) POSTING_READ(SDEIER); } +static void ivybridge_irq_preinstall(struct drm_device *dev) +{ + drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; + + atomic_set(&dev_priv->irq_received, 0); + + I915_WRITE(HWSTAM, 0xeffe); + + /* XXX hotplug from PCH */ + + I915_WRITE(DEIMR, 0xffffffff); + I915_WRITE(DEIER, 0x0); + POSTING_READ(DEIER); + + /* and GT */ + I915_WRITE(GTIMR, 0xffffffff); + I915_WRITE(GTIER, 0x0); + POSTING_READ(GTIER); + + /* south display irq */ + I915_WRITE(SDEIMR, 0xffffffff); + I915_WRITE(SDEIER, 0x0); + POSTING_READ(SDEIER); +} + static void valleyview_irq_preinstall(struct drm_device *dev) { drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; @@ -3500,7 +3525,7 @@ void intel_irq_init(struct drm_device *dev) } else if (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) { /* Share pre & uninstall handlers with ILK/SNB */ dev->driver->irq_handler = ivybridge_irq_handler; - dev->driver->irq_preinstall = ironlake_irq_preinstall; + dev->driver->irq_preinstall = ivybridge_irq_preinstall; dev->driver->irq_postinstall = ivybridge_irq_postinstall; dev->driver->irq_uninstall = ironlake_irq_uninstall; dev->driver->enable_vblank = ivybridge_enable_vblank;
Signed-off-by: Ben Widawsky <ben@bwidawsk.net> --- drivers/gpu/drm/i915/i915_irq.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-)