From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 02/10] drm/i915: extract ilk_display_irq_handler Date: Fri, 19 Jul 2013 15:14:37 +0300 Message-ID: <874nbqagr6.fsf@gaia.fi.intel.com> References: <1373657718-3008-1-git-send-email-przanoni@gmail.com> <1373657718-3008-3-git-send-email-przanoni@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id 1BD3AE5CC1 for ; Fri, 19 Jul 2013 05:14:42 -0700 (PDT) In-Reply-To: <1373657718-3008-3-git-send-email-przanoni@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Paulo Zanoni , intel-gfx@lists.freedesktop.org Cc: Paulo Zanoni List-Id: intel-gfx@lists.freedesktop.org Paulo Zanoni writes: > From: Paulo Zanoni > > It's the code that deals with de_iir. > > Signed-off-by: Paulo Zanoni Minor observation on the whole irq stuff: ilk, ironlake and ivb, ivybridge are both used and I couldn't figure out the pattern. Reviewed-by: Mika Kuoppala > --- > drivers/gpu/drm/i915/i915_irq.c | 104 +++++++++++++++++++++------------------- > 1 file changed, 56 insertions(+), 48 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c > index f397f9a..39160a2 100644 > --- a/drivers/gpu/drm/i915/i915_irq.c > +++ b/drivers/gpu/drm/i915/i915_irq.c > @@ -1202,6 +1202,60 @@ static void cpt_irq_handler(struct drm_device *dev, u32 pch_iir) > cpt_serr_int_handler(dev); > } > > +static void ilk_display_irq_handler(struct drm_device *dev, u32 de_iir) > +{ > + struct drm_i915_private *dev_priv = dev->dev_private; > + > + if (de_iir & DE_AUX_CHANNEL_A) > + dp_aux_irq_handler(dev); > + > + if (de_iir & DE_GSE) > + intel_opregion_asle_intr(dev); > + > + if (de_iir & DE_PIPEA_VBLANK) > + drm_handle_vblank(dev, 0); > + > + if (de_iir & DE_PIPEB_VBLANK) > + drm_handle_vblank(dev, 1); > + > + if (de_iir & DE_POISON) > + DRM_ERROR("Poison interrupt\n"); > + > + if (de_iir & DE_PIPEA_FIFO_UNDERRUN) > + if (intel_set_cpu_fifo_underrun_reporting(dev, PIPE_A, false)) > + DRM_DEBUG_DRIVER("Pipe A FIFO underrun\n"); > + > + if (de_iir & DE_PIPEB_FIFO_UNDERRUN) > + if (intel_set_cpu_fifo_underrun_reporting(dev, PIPE_B, false)) > + DRM_DEBUG_DRIVER("Pipe B FIFO underrun\n"); > + > + if (de_iir & DE_PLANEA_FLIP_DONE) { > + intel_prepare_page_flip(dev, 0); > + intel_finish_page_flip_plane(dev, 0); > + } > + > + if (de_iir & DE_PLANEB_FLIP_DONE) { > + intel_prepare_page_flip(dev, 1); > + intel_finish_page_flip_plane(dev, 1); > + } > + > + /* check event from PCH */ > + if (de_iir & DE_PCH_EVENT) { > + u32 pch_iir = I915_READ(SDEIIR); > + > + if (HAS_PCH_CPT(dev)) > + cpt_irq_handler(dev, pch_iir); > + else > + ibx_irq_handler(dev, pch_iir); > + > + /* should clear PCH hotplug event before clear CPU irq */ > + I915_WRITE(SDEIIR, pch_iir); > + } > + > + if (IS_GEN5(dev) && de_iir & DE_PCU_EVENT) > + ironlake_rps_change_irq_handler(dev); > +} > + > static irqreturn_t ivybridge_irq_handler(int irq, void *arg) > { > struct drm_device *dev = (struct drm_device *) arg; > @@ -1360,54 +1414,8 @@ static irqreturn_t ironlake_irq_handler(int irq, void *arg) > else > snb_gt_irq_handler(dev, dev_priv, gt_iir); > > - if (de_iir & DE_AUX_CHANNEL_A) > - dp_aux_irq_handler(dev); > - > - if (de_iir & DE_GSE) > - intel_opregion_asle_intr(dev); > - > - if (de_iir & DE_PIPEA_VBLANK) > - drm_handle_vblank(dev, 0); > - > - if (de_iir & DE_PIPEB_VBLANK) > - drm_handle_vblank(dev, 1); > - > - if (de_iir & DE_POISON) > - DRM_ERROR("Poison interrupt\n"); > - > - if (de_iir & DE_PIPEA_FIFO_UNDERRUN) > - if (intel_set_cpu_fifo_underrun_reporting(dev, PIPE_A, false)) > - DRM_DEBUG_DRIVER("Pipe A FIFO underrun\n"); > - > - if (de_iir & DE_PIPEB_FIFO_UNDERRUN) > - if (intel_set_cpu_fifo_underrun_reporting(dev, PIPE_B, false)) > - DRM_DEBUG_DRIVER("Pipe B FIFO underrun\n"); > - > - if (de_iir & DE_PLANEA_FLIP_DONE) { > - intel_prepare_page_flip(dev, 0); > - intel_finish_page_flip_plane(dev, 0); > - } > - > - if (de_iir & DE_PLANEB_FLIP_DONE) { > - intel_prepare_page_flip(dev, 1); > - intel_finish_page_flip_plane(dev, 1); > - } > - > - /* check event from PCH */ > - if (de_iir & DE_PCH_EVENT) { > - u32 pch_iir = I915_READ(SDEIIR); > - > - if (HAS_PCH_CPT(dev)) > - cpt_irq_handler(dev, pch_iir); > - else > - ibx_irq_handler(dev, pch_iir); > - > - /* should clear PCH hotplug event before clear CPU irq */ > - I915_WRITE(SDEIIR, pch_iir); > - } > - > - if (IS_GEN5(dev) && de_iir & DE_PCU_EVENT) > - ironlake_rps_change_irq_handler(dev); > + if (de_iir) > + ilk_display_irq_handler(dev, de_iir); > > if (IS_GEN6(dev) && pm_iir & GEN6_PM_RPS_EVENTS) > gen6_rps_irq_handler(dev_priv, pm_iir); > -- > 1.8.1.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx