From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomi Valkeinen Subject: Re: [PATCH 09/23] drm: omapdrm: Handle OCP error IRQ directly Date: Tue, 10 May 2016 16:10:59 +0300 Message-ID: <5731DDE3.8020706@ti.com> References: <1461702945-14185-1-git-send-email-laurent.pinchart@ideasonboard.com> <1461702945-14185-10-git-send-email-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1664878926==" Return-path: Received: from devils.ext.ti.com (devils.ext.ti.com [198.47.26.153]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F48F6E644 for ; Tue, 10 May 2016 13:11:05 +0000 (UTC) In-Reply-To: <1461702945-14185-10-git-send-email-laurent.pinchart@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============1664878926== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="11Wwv8fvnv8C6llGqERqac5UcsQ1HqFAJ" --11Wwv8fvnv8C6llGqERqac5UcsQ1HqFAJ Content-Type: multipart/mixed; boundary="c720l9HdljWOICtx13Aa6WXPTTfQUdbr4" From: Tomi Valkeinen To: Laurent Pinchart , dri-devel@lists.freedesktop.org Cc: Rob Clark Message-ID: <5731DDE3.8020706@ti.com> Subject: Re: [PATCH 09/23] drm: omapdrm: Handle OCP error IRQ directly References: <1461702945-14185-1-git-send-email-laurent.pinchart@ideasonboard.com> <1461702945-14185-10-git-send-email-laurent.pinchart@ideasonboard.com> In-Reply-To: <1461702945-14185-10-git-send-email-laurent.pinchart@ideasonboard.com> --c720l9HdljWOICtx13Aa6WXPTTfQUdbr4 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 26/04/16 23:35, Laurent Pinchart wrote: > Instead of going through a complicated registration mechanism, just > call the OCP error IRQ handler directly from the main IRQ handler. > > Signed-off-by: Laurent Pinchart > --- > drivers/gpu/drm/omapdrm/omap_drv.h | 1 - > drivers/gpu/drm/omapdrm/omap_irq.c | 29 +++++++++++------------------ > 2 files changed, 11 insertions(+), 19 deletions(-) >=20 > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapd= rm/omap_drv.h > index 2d8fbdb2d39f..17dd3b98fc1a 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.h > +++ b/drivers/gpu/drm/omapdrm/omap_drv.h > @@ -104,7 +104,6 @@ struct omap_drm_private { > /* irq handling: */ > struct list_head irq_list; /* list of omap_drm_irq */ > uint32_t irq_mask; /* enabled irqs in addition to irq_list */ > - struct omap_drm_irq error_handler; > =20 > /* atomic commit */ > struct { > diff --git a/drivers/gpu/drm/omapdrm/omap_irq.c b/drivers/gpu/drm/omapd= rm/omap_irq.c > index a90e093f5f42..499da6e2c5a4 100644 > --- a/drivers/gpu/drm/omapdrm/omap_irq.c > +++ b/drivers/gpu/drm/omapdrm/omap_irq.c > @@ -21,12 +21,6 @@ > =20 > static DEFINE_SPINLOCK(list_lock); > =20 > -static void omap_irq_error_handler(struct omap_drm_irq *irq, > - uint32_t irqstatus) > -{ > - DRM_ERROR("errors: %08x\n", irqstatus); > -} > - > /* call with list_lock and dispc runtime held */ > static void omap_irq_update(struct drm_device *dev) > { > @@ -219,6 +213,14 @@ static void omap_irq_fifo_underflow(uint32_t irqst= atus) > pr_cont("(0x%08x)\n", irqstatus); > } > =20 > +static void omap_irq_error_handler(uint32_t irqstatus) I think the function should mention "ocp_error". > +{ > + if (!(irqstatus & DISPC_IRQ_OCP_ERR)) > + return; > + > + DRM_ERROR("errors: %08x\n", irqstatus); Now we have a separate print for OCP error, so we could instead of printing hex numbers, print "OCP error". > +} > + > static irqreturn_t omap_irq_handler(int irq, void *arg) > { > struct drm_device *dev =3D (struct drm_device *) arg; > @@ -245,6 +247,7 @@ static irqreturn_t omap_irq_handler(int irq, void *= arg) > omap_crtc_error_irq(crtc, irqstatus); > } > =20 > + omap_irq_error_handler(irqstatus); > omap_irq_fifo_underflow(irqstatus); > =20 > spin_lock_irqsave(&list_lock, flags); > @@ -270,14 +273,14 @@ static irqreturn_t omap_irq_handler(int irq, void= *arg) > int omap_drm_irq_install(struct drm_device *dev) > { > struct omap_drm_private *priv =3D dev->dev_private; > - struct omap_drm_irq *error_handler =3D &priv->error_handler; > unsigned int num_mgrs =3D dss_feat_get_num_mgrs(); > unsigned int i; > int ret; > =20 > INIT_LIST_HEAD(&priv->irq_list); > =20 > - priv->irq_mask =3D DISPC_IRQ_GFX_FIFO_UNDERFLOW > + priv->irq_mask =3D DISPC_IRQ_OCP_ERR > + | DISPC_IRQ_GFX_FIFO_UNDERFLOW > | DISPC_IRQ_VID1_FIFO_UNDERFLOW > | DISPC_IRQ_VID2_FIFO_UNDERFLOW > | DISPC_IRQ_VID3_FIFO_UNDERFLOW; > @@ -293,16 +296,6 @@ int omap_drm_irq_install(struct drm_device *dev) > if (ret < 0) > return ret; > =20 > - error_handler->irq =3D omap_irq_error_handler; > - error_handler->irqmask =3D DISPC_IRQ_OCP_ERR; > - > - /* for now ignore DISPC_IRQ_SYNC_LOST_DIGIT.. really I think > - * we just need to ignore it while enabling tv-out > - */ > - error_handler->irqmask &=3D ~DISPC_IRQ_SYNC_LOST_DIGIT; > - > - omap_irq_register(dev, error_handler); This makes me wonder is the previous patch correct... It doesn't ignore the SYNC_LOST_DIGIT. Oh, but is this ignore only for the error handler that only prints. Ah, confusing =3D). Tomi --c720l9HdljWOICtx13Aa6WXPTTfQUdbr4-- --11Wwv8fvnv8C6llGqERqac5UcsQ1HqFAJ Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXMd3jAAoJEPo9qoy8lh716gsP/309KT2KUSGPAeyXM8qIXIsO 7u6TEbuQ3oOIOWmR6z6+Dn07y0wTJm3RbycQPhjRGLIOYdx+3Wi1yWvglBwOKaf7 HHSRd72eE1WhYfpibZ4RIBEX8djs5BNXkYftuZfsZwu5h5hGDs1GGrUFDQEEgU+y L5Z4wjBH68WZVKRfm7IqrdH3Z0KCXsCPJQSJy0XjgBw365Vd9lj8lzuyb67dGxbQ Nmg2J8LMcDLL3Q1pbiLUj25cu0ky9zmEtqJq3xiZydwKE0G4xWJ4jAwTgv1RpIiB WJpu8DqcQ7lEj5oZjo1KN1T5HTbjnVK3bE5htuutxamBs6S51D3pV025X92FS/cO O2nlAwMh2s1wvOlPAeGFu77HEVGHRljwLxo1Sf4v7BznX/Dioofo5FSksy39ZVR6 5ItEmxQp2qofTseWvr6omvJaZZV7O/N+IinnpceNw/0PqH+2mZKk+76iJ0RF08hP IsYZd2/eZXuhI9bdyrltlooyNI68V9XsuJaUY9DPpuEyXiP538qmnKdE5Qw4J15n LA7fGSH/L1ikVwVq3HSoC3LxAcwXXHQdX+wND9eJRg9KQnzneMqaWOvA7YB3Id5y o4lcZxZCeVV8arCidmTof1g6vHHtijkg21KeIzZiZ/LOmM9w9iy/HfUwtSaeorVf 2hF2UBSu+TrVa6265Q/f =+azL -----END PGP SIGNATURE----- --11Wwv8fvnv8C6llGqERqac5UcsQ1HqFAJ-- --===============1664878926== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --===============1664878926==--