All of lore.kernel.org
 help / color / mirror / Atom feed
From: Biju Das <biju.das.jz@bp.renesas.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Maxime Ripard <mripard@kernel.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
	Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Magnus Damm <magnus.damm@gmail.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	"linux-renesas-soc@vger.kernel.org"
	<linux-renesas-soc@vger.kernel.org>,
	Fabrizio Castro <fabrizio.castro.jz@renesas.com>,
	Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	biju.das.au <biju.das.au@gmail.com>,
	"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: RE: [PATCH v15 3/5] drm: renesas: Add RZ/G2L DU Support
Date: Thu, 11 Jan 2024 09:31:33 +0000	[thread overview]
Message-ID: <TYCPR01MB11269FEAC33F53C8D8DF3180786682@TYCPR01MB11269.jpnprd01.prod.outlook.com> (raw)
In-Reply-To: <20240110193852.GF23633@pendragon.ideasonboard.com>

Hi Laurent,

Thanks for the feedback.

> -----Original Message-----
> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Sent: Wednesday, January 10, 2024 7:39 PM
> Subject: Re: [PATCH v15 3/5] drm: renesas: Add RZ/G2L DU Support
> 
> Hi Biju,
> 
> On Thu, Jan 04, 2024 at 02:17:39PM +0000, Biju Das wrote:
> > On Friday, December 15, 2023 2:56 PM, Biju Das wrote:
> > > On Friday, December 15, 2023 2:18 PM, Maxime Ripard wrote:
> > > > On Fri, Dec 15, 2023 at 01:52:28PM +0000, Biju Das wrote:
> > > > > > > > > > > +static int rzg2l_du_crtc_enable_vblank(struct
> drm_crtc *crtc) {
> > > > > > > > > > > +	struct rzg2l_du_crtc *rcrtc = to_rzg2l_crtc(crtc);
> > > > > > > > > > > +
> > > > > > > > > > > +	rcrtc->vblank_enable = true;
> > > > > > > > > > > +
> > > > > > > > > > > +	return 0;
> > > > > > > > > > > +}
> > > > > > > > > > > +
> > > > > > > > > > > +static void rzg2l_du_crtc_disable_vblank(struct
> > > > > > > > > > > +drm_crtc *crtc) {
> > > > > > > > > > > +	struct rzg2l_du_crtc *rcrtc = to_rzg2l_crtc(crtc);
> > > > > > > > > > > +
> > > > > > > > > > > +	rcrtc->vblank_enable = false; }
> > > > > > > > > >
> > > > > > > > > > You should enable / disable your interrupts here
> > > > > > > > >
> > > > > > > > > We don't have dedicated vblank IRQ for enabling/disabling
> vblank.
> > > > > > > > >
> > > > > > > > > vblank is handled by vspd.
> > > > > > > > >
> > > > > > > > > vspd is directly rendering images to display,
> > > > > > > > > rcar_du_crtc_finish_page_flip() and
> > > > > > > > > drm_crtc_handle_vblank() called in vspd's pageflip
> context.
> > > > > > > > >
> > > > > > > > > See rzg2l_du_vsp_complete()in rzg2l_du_vsp.c
> > > > > > > >
> > > > > > > > Sorry, I couldn't really get how the interrupt flow /
> > > > > > > > vblank reporting is going to work. Could you explain it a
> bit more?
> > > > > > >
> > > > > > > We just need to handle vertical blanking in the VSP frame end
> handler.
> > > > > > > See the code below.
> > > > > > >
> > > > > > > static void rzg2l_du_vsp_complete(void *private, unsigned
> > > > > > > int status,
> > > > > > > u32 crc) {
> > > > > > > 	struct rzg2l_du_crtc *crtc = private;
> > > > > > >
> > > > > > > 	if (crtc->vblank_enable)
> > > > > > > 		drm_crtc_handle_vblank(&crtc->crtc);
> > > > > > >
> > > > > > > 	if (status & VSP1_DU_STATUS_COMPLETE)
> > > > > > > 		rzg2l_du_crtc_finish_page_flip(crtc);
> > > > > > >
> > > > > > > 	drm_crtc_add_crc_entry(&crtc->crtc, false, 0, &crc); }
> > > > > >
> > > > > > Then we're back to the same question :)
> > > > > >
> > > > > > Why can't you mask the frame end interrupt?
> > > > >
> > > > > We are masking interrupts.
> > > > >
> > > > > [   70.639139] #######rzg2l_du_crtc_disable_vblank#######
> > > > > [   70.650243] #########rzg2l_du_vsp_disable ############
> > > > > [   70.652003] ########## vsp1_wpf_stop###
> > > > >
> > > > > Unmask is,
> > > > >
> > > > > [ 176.354520] #######rzg2l_du_crtc_enable_vblank#######
> > > > > [ 176.354922] #########rzg2l_du_vsp_atomic_flush ############ [
> > > > > 176.355198] ########## wpf_configure_stream###
> > > >
> > > > Sorry, my question was why aren't you unmasking and masking them
> > > > in the enable/disable_vblank hooks of the CRTC.
> > >
> > > I have n't tried that. Will try and provide feedback.
> > >
> > > Currently the IRQ source belongs to VSPD in media subsystem.
> > > So I need to export an API though vsp1_drm and test it.
> >
> > + linux-media
> >
> > Laurent, are you ok with the below RZ/G2L specific patch[1] for
> > enabling/disabling frame end interrupt in VSP driver?
> > Note:
> > I need to add a quirk for handling this only for RZ/G2L family as
> > other SoCs have Vblank specific interrupt available in DU.
> 
> The DU driver on Gen3 handles vblank exactly as in your patch. What's the
> problem with that ?

There is no issue. Maxime Ripard is checking whether is it possible to mask/unmask
Interrupt associated with vblank reporting during vblank{enable, disable}?

That is the reason I produced the below patch[1] for suggestions.

> 
> > [1]
> >
> > diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > index 9b087bd8df7d..39347c16bb27 100644
> > --- a/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > +++ b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > @@ -936,6 +936,14 @@ void vsp1_du_unmap_sg(struct device *dev, struct
> > sg_table *sgt)  }  EXPORT_SYMBOL_GPL(vsp1_du_unmap_sg);
> >
> > +void vsp1_du_mask_frame_end_interrupt(struct device *dev, bool mask)
> > +{
> > +       struct vsp1_device *vsp1 = dev_get_drvdata(dev);
> > +
> > +       vsp1_write(vsp1, VI6_WPF_IRQ_ENB(0), mask ? 0 :
> > + VI6_WPF_IRQ_ENB_DFEE);
> 
> That will break everything. As soon as you turn of vblank reporting, the
> VSP will stop processing frames and the display will freeze.

OK. I am not able to reproduce this issue on RZ/G2L with limited testing compared to
R-Car. As per your suggestion, I will drop this change. I hope it is ok for
everyone.

Cheers,
Biju

> 
> > +}
> > +EXPORT_SYMBOL_GPL(vsp1_du_mask_frame_end_interrupt);
> > +
> >  /* --------------------------------------------------------------------
> ---------
> >   * Initialization
> >   */
> > diff --git a/include/media/vsp1.h b/include/media/vsp1.h index
> > 48f4a5023d81..ccac48a6bdd2 100644
> > --- a/include/media/vsp1.h
> > +++ b/include/media/vsp1.h
> > @@ -117,4 +117,6 @@ void vsp1_du_atomic_flush(struct device *dev,
> > unsigned int pipe_index,  int vsp1_du_map_sg(struct device *dev,
> > struct sg_table *sgt);  void vsp1_du_unmap_sg(struct device *dev,
> > struct sg_table *sgt);
> >
> > +void vsp1_du_mask_frame_end_interrupt(struct device *dev, bool mask);
> > +
> >  #endif /* __MEDIA_VSP1_H__ */
> 
> --
> Regards,
> 
> Laurent Pinchart

WARNING: multiple messages have this Message-ID (diff)
From: Biju Das <biju.das.jz@bp.renesas.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Fabrizio Castro <fabrizio.castro.jz@renesas.com>,
	"biju.das.au" <biju.das.au@gmail.com>,
	Magnus Damm <magnus.damm@gmail.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	Maxime Ripard <mripard@kernel.org>,
	"linux-renesas-soc@vger.kernel.org"
	<linux-renesas-soc@vger.kernel.org>,
	Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>,
	Jacopo Mondi <jacopo.mondi@ideasonboard.com>,
	"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: RE: [PATCH v15 3/5] drm: renesas: Add RZ/G2L DU Support
Date: Thu, 11 Jan 2024 09:31:33 +0000	[thread overview]
Message-ID: <TYCPR01MB11269FEAC33F53C8D8DF3180786682@TYCPR01MB11269.jpnprd01.prod.outlook.com> (raw)
In-Reply-To: <20240110193852.GF23633@pendragon.ideasonboard.com>

Hi Laurent,

Thanks for the feedback.

> -----Original Message-----
> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Sent: Wednesday, January 10, 2024 7:39 PM
> Subject: Re: [PATCH v15 3/5] drm: renesas: Add RZ/G2L DU Support
> 
> Hi Biju,
> 
> On Thu, Jan 04, 2024 at 02:17:39PM +0000, Biju Das wrote:
> > On Friday, December 15, 2023 2:56 PM, Biju Das wrote:
> > > On Friday, December 15, 2023 2:18 PM, Maxime Ripard wrote:
> > > > On Fri, Dec 15, 2023 at 01:52:28PM +0000, Biju Das wrote:
> > > > > > > > > > > +static int rzg2l_du_crtc_enable_vblank(struct
> drm_crtc *crtc) {
> > > > > > > > > > > +	struct rzg2l_du_crtc *rcrtc = to_rzg2l_crtc(crtc);
> > > > > > > > > > > +
> > > > > > > > > > > +	rcrtc->vblank_enable = true;
> > > > > > > > > > > +
> > > > > > > > > > > +	return 0;
> > > > > > > > > > > +}
> > > > > > > > > > > +
> > > > > > > > > > > +static void rzg2l_du_crtc_disable_vblank(struct
> > > > > > > > > > > +drm_crtc *crtc) {
> > > > > > > > > > > +	struct rzg2l_du_crtc *rcrtc = to_rzg2l_crtc(crtc);
> > > > > > > > > > > +
> > > > > > > > > > > +	rcrtc->vblank_enable = false; }
> > > > > > > > > >
> > > > > > > > > > You should enable / disable your interrupts here
> > > > > > > > >
> > > > > > > > > We don't have dedicated vblank IRQ for enabling/disabling
> vblank.
> > > > > > > > >
> > > > > > > > > vblank is handled by vspd.
> > > > > > > > >
> > > > > > > > > vspd is directly rendering images to display,
> > > > > > > > > rcar_du_crtc_finish_page_flip() and
> > > > > > > > > drm_crtc_handle_vblank() called in vspd's pageflip
> context.
> > > > > > > > >
> > > > > > > > > See rzg2l_du_vsp_complete()in rzg2l_du_vsp.c
> > > > > > > >
> > > > > > > > Sorry, I couldn't really get how the interrupt flow /
> > > > > > > > vblank reporting is going to work. Could you explain it a
> bit more?
> > > > > > >
> > > > > > > We just need to handle vertical blanking in the VSP frame end
> handler.
> > > > > > > See the code below.
> > > > > > >
> > > > > > > static void rzg2l_du_vsp_complete(void *private, unsigned
> > > > > > > int status,
> > > > > > > u32 crc) {
> > > > > > > 	struct rzg2l_du_crtc *crtc = private;
> > > > > > >
> > > > > > > 	if (crtc->vblank_enable)
> > > > > > > 		drm_crtc_handle_vblank(&crtc->crtc);
> > > > > > >
> > > > > > > 	if (status & VSP1_DU_STATUS_COMPLETE)
> > > > > > > 		rzg2l_du_crtc_finish_page_flip(crtc);
> > > > > > >
> > > > > > > 	drm_crtc_add_crc_entry(&crtc->crtc, false, 0, &crc); }
> > > > > >
> > > > > > Then we're back to the same question :)
> > > > > >
> > > > > > Why can't you mask the frame end interrupt?
> > > > >
> > > > > We are masking interrupts.
> > > > >
> > > > > [   70.639139] #######rzg2l_du_crtc_disable_vblank#######
> > > > > [   70.650243] #########rzg2l_du_vsp_disable ############
> > > > > [   70.652003] ########## vsp1_wpf_stop###
> > > > >
> > > > > Unmask is,
> > > > >
> > > > > [ 176.354520] #######rzg2l_du_crtc_enable_vblank#######
> > > > > [ 176.354922] #########rzg2l_du_vsp_atomic_flush ############ [
> > > > > 176.355198] ########## wpf_configure_stream###
> > > >
> > > > Sorry, my question was why aren't you unmasking and masking them
> > > > in the enable/disable_vblank hooks of the CRTC.
> > >
> > > I have n't tried that. Will try and provide feedback.
> > >
> > > Currently the IRQ source belongs to VSPD in media subsystem.
> > > So I need to export an API though vsp1_drm and test it.
> >
> > + linux-media
> >
> > Laurent, are you ok with the below RZ/G2L specific patch[1] for
> > enabling/disabling frame end interrupt in VSP driver?
> > Note:
> > I need to add a quirk for handling this only for RZ/G2L family as
> > other SoCs have Vblank specific interrupt available in DU.
> 
> The DU driver on Gen3 handles vblank exactly as in your patch. What's the
> problem with that ?

There is no issue. Maxime Ripard is checking whether is it possible to mask/unmask
Interrupt associated with vblank reporting during vblank{enable, disable}?

That is the reason I produced the below patch[1] for suggestions.

> 
> > [1]
> >
> > diff --git a/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > index 9b087bd8df7d..39347c16bb27 100644
> > --- a/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > +++ b/drivers/media/platform/renesas/vsp1/vsp1_drm.c
> > @@ -936,6 +936,14 @@ void vsp1_du_unmap_sg(struct device *dev, struct
> > sg_table *sgt)  }  EXPORT_SYMBOL_GPL(vsp1_du_unmap_sg);
> >
> > +void vsp1_du_mask_frame_end_interrupt(struct device *dev, bool mask)
> > +{
> > +       struct vsp1_device *vsp1 = dev_get_drvdata(dev);
> > +
> > +       vsp1_write(vsp1, VI6_WPF_IRQ_ENB(0), mask ? 0 :
> > + VI6_WPF_IRQ_ENB_DFEE);
> 
> That will break everything. As soon as you turn of vblank reporting, the
> VSP will stop processing frames and the display will freeze.

OK. I am not able to reproduce this issue on RZ/G2L with limited testing compared to
R-Car. As per your suggestion, I will drop this change. I hope it is ok for
everyone.

Cheers,
Biju

> 
> > +}
> > +EXPORT_SYMBOL_GPL(vsp1_du_mask_frame_end_interrupt);
> > +
> >  /* --------------------------------------------------------------------
> ---------
> >   * Initialization
> >   */
> > diff --git a/include/media/vsp1.h b/include/media/vsp1.h index
> > 48f4a5023d81..ccac48a6bdd2 100644
> > --- a/include/media/vsp1.h
> > +++ b/include/media/vsp1.h
> > @@ -117,4 +117,6 @@ void vsp1_du_atomic_flush(struct device *dev,
> > unsigned int pipe_index,  int vsp1_du_map_sg(struct device *dev,
> > struct sg_table *sgt);  void vsp1_du_unmap_sg(struct device *dev,
> > struct sg_table *sgt);
> >
> > +void vsp1_du_mask_frame_end_interrupt(struct device *dev, bool mask);
> > +
> >  #endif /* __MEDIA_VSP1_H__ */
> 
> --
> Regards,
> 
> Laurent Pinchart

  reply	other threads:[~2024-01-11  9:31 UTC|newest]

Thread overview: 77+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-28 10:51 [PATCH v15 0/5] Add RZ/{G2L,G2LC} and RZ/V2L Display Unit support Biju Das
2023-11-28 10:51 ` Biju Das
2023-11-28 10:51 ` [PATCH v15 1/5] dt-bindings: display: Document Renesas RZ/G2L DU bindings Biju Das
2023-11-28 10:51   ` Biju Das
2023-11-28 10:51 ` [PATCH v15 2/5] dt-bindings: display: renesas, rzg2l-du: Document RZ/V2L " Biju Das
2023-11-28 10:51   ` [PATCH v15 2/5] dt-bindings: display: renesas,rzg2l-du: " Biju Das
2023-11-28 10:51 ` [PATCH v15 3/5] drm: renesas: Add RZ/G2L DU Support Biju Das
2023-11-28 10:51   ` Biju Das
2023-12-13 15:47   ` Maxime Ripard
2023-12-13 15:47     ` Maxime Ripard
2023-12-13 15:48     ` Maxime Ripard
2023-12-13 15:48       ` Maxime Ripard
2023-12-13 15:50     ` Laurent Pinchart
2023-12-13 15:50       ` Laurent Pinchart
2023-12-13 16:11       ` Geert Uytterhoeven
2023-12-13 16:11         ` Geert Uytterhoeven
2023-12-13 16:46       ` Biju Das
2023-12-13 16:46         ` Biju Das
2023-12-14 15:24     ` Biju Das
2023-12-14 15:24       ` Biju Das
2023-12-14 18:35       ` Biju Das
2023-12-14 18:35         ` Biju Das
2023-12-14 20:50       ` Biju Das
2023-12-14 20:50         ` Biju Das
2023-12-15  7:47         ` Biju Das
2023-12-15  7:47           ` Biju Das
2023-12-15  9:24           ` Maxime Ripard
2023-12-15  9:24             ` Maxime Ripard
2023-12-15 11:19             ` Biju Das
2023-12-15 11:19               ` Biju Das
2023-12-15  9:22         ` Maxime Ripard
2023-12-15  9:22           ` Maxime Ripard
2023-12-15 10:23       ` Maxime Ripard
2023-12-15 10:23         ` Maxime Ripard
2023-12-15 11:37         ` Biju Das
2023-12-15 11:37           ` Biju Das
2023-12-15 12:58           ` Maxime Ripard
2023-12-15 12:58             ` Maxime Ripard
2023-12-15 13:52             ` Biju Das
2023-12-15 13:52               ` Biju Das
2023-12-15 14:18               ` Maxime Ripard
2023-12-15 14:18                 ` Maxime Ripard
2023-12-15 14:55                 ` Biju Das
2023-12-15 14:55                   ` Biju Das
2023-12-15 14:58                   ` Biju Das
2023-12-15 14:58                     ` Biju Das
2024-01-04 14:17                   ` Biju Das
2024-01-04 14:17                     ` Biju Das
2024-01-10 19:38                     ` Laurent Pinchart
2024-01-10 19:38                       ` Laurent Pinchart
2024-01-11  9:31                       ` Biju Das [this message]
2024-01-11  9:31                         ` Biju Das
2023-12-15 14:19               ` Biju Das
2023-12-15 14:19                 ` Biju Das
2023-12-15 14:23                 ` Maxime Ripard
2023-12-15 14:23                   ` Maxime Ripard
2023-12-15 14:42                   ` Biju Das
2023-12-15 14:42                     ` Biju Das
2023-12-15 13:25         ` Biju Das
2023-12-15 13:25           ` Biju Das
2023-12-15 14:24           ` Maxime Ripard
2023-12-15 14:24             ` Maxime Ripard
2024-01-04 14:34             ` Biju Das
2024-01-04 14:34               ` Biju Das
2024-01-10 16:14               ` Maxime Ripard
2024-01-10 16:14                 ` Maxime Ripard
2024-01-10 17:58                 ` Laurent Pinchart
2024-01-10 17:58                   ` Laurent Pinchart
2023-11-28 10:51 ` [PATCH v15 4/5] MAINTAINERS: Update entries for Renesas DRM drivers Biju Das
2023-11-28 10:51   ` Biju Das
2023-11-28 11:05   ` Geert Uytterhoeven
2023-11-28 11:05     ` Geert Uytterhoeven
2023-11-28 10:51 ` [PATCH v15 5/5] MAINTAINERS: Create entry for Renesas RZ " Biju Das
2023-11-28 10:51   ` Biju Das
2023-12-11 12:10 ` [PATCH v15 0/5] Add RZ/{G2L, G2LC} and RZ/V2L Display Unit support Biju Das
2023-12-11 12:10   ` [PATCH v15 0/5] Add RZ/{G2L,G2LC} " Biju Das
2024-02-21 16:24 ` Maxime Ripard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=TYCPR01MB11269FEAC33F53C8D8DF3180786682@TYCPR01MB11269.jpnprd01.prod.outlook.com \
    --to=biju.das.jz@bp.renesas.com \
    --cc=airlied@gmail.com \
    --cc=biju.das.au@gmail.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=fabrizio.castro.jz@renesas.com \
    --cc=geert+renesas@glider.be \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=magnus.damm@gmail.com \
    --cc=mripard@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.