public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Niklas Söderlund" <niklas.soderlund@ragnatech.se>
To: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Sakari Ailus <sakari.ailus@linux.intel.com>,
	linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Mauro Carvalho Chehab <mchehab+huawei@kernel.org>,
	Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Subject: Re: [PATCH v3 03/15] media: rcar-isp: Move {enable|disable}_streams() calls
Date: Sat, 27 Sep 2025 08:17:04 +0200	[thread overview]
Message-ID: <20250927061704.GA2027750@ragnatech.se> (raw)
In-Reply-To: <62890f7a-8ce9-47af-be36-e7384d2a99fd@ideasonboard.com>

Hi Tomi,

On 2025-09-26 14:22:10 +0300, Tomi Valkeinen wrote:
> Hi,
> 
> On 02/06/2025 12:43, Laurent Pinchart wrote:
> > Hi Tomi,
> > 
> > Thank you for the patch.
> > 
> > On Fri, May 30, 2025 at 04:50:32PM +0300, Tomi Valkeinen wrote:
> >> With multiple streams the operation to enable the ISP hardware and to
> >> call {enable|disable}_streams() on upstream subdev will need to be
> >> handled separately.
> >>
> >> Prepare for that by moving {enable|disable}_streams() calls out from
> >> risp_start() and risp_stop().
> >>
> >> Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
> >> ---
> >>  drivers/media/platform/renesas/rcar-isp/csisp.c | 18 ++++++++++--------
> >>  1 file changed, 10 insertions(+), 8 deletions(-)
> >>
> >> diff --git a/drivers/media/platform/renesas/rcar-isp/csisp.c b/drivers/media/platform/renesas/rcar-isp/csisp.c
> >> index 8fb2cc3b5650..2337c5d44c40 100644
> >> --- a/drivers/media/platform/renesas/rcar-isp/csisp.c
> >> +++ b/drivers/media/platform/renesas/rcar-isp/csisp.c
> >> @@ -268,18 +268,11 @@ static int risp_start(struct rcar_isp *isp, struct v4l2_subdev_state *state)
> >>  	/* Start ISP. */
> >>  	risp_write_cs(isp, ISPSTART_REG, ISPSTART_START);
> >>  
> >> -	ret = v4l2_subdev_enable_streams(isp->remote, isp->remote_pad,
> >> -					 BIT_ULL(0));
> >> -	if (ret)
> >> -		risp_power_off(isp);
> >> -
> >> -	return ret;
> >> +	return 0;
> >>  }
> >>  
> >>  static void risp_stop(struct rcar_isp *isp)
> >>  {
> >> -	v4l2_subdev_disable_streams(isp->remote, isp->remote_pad, BIT_ULL(0));
> >> -
> >>  	/* Stop ISP. */
> >>  	risp_write_cs(isp, ISPSTART_REG, ISPSTART_STOP);
> >>  
> >> @@ -305,6 +298,13 @@ static int risp_enable_streams(struct v4l2_subdev *sd,
> >>  			return ret;
> >>  	}
> >>  
> >> +	ret = v4l2_subdev_enable_streams(isp->remote, isp->remote_pad,
> >> +					 BIT_ULL(0));
> > 
> > You're now potentially calling v4l2_subdev_disable_streams() multiple
> > times on the same pad and stream, as this call isn't covered by the
> > stream_count check anymore. Is that correct ? Maybe because
> > risp_enable_streams() is guaranteed to never be called multiple times,
> > with stream_count never becoming larger than 1 ? If so that should be
> > explained in the commit message, and stream_count should probably be
> > dropped.
> 
> At this point in the series risp_enable_streams() is called just once,
> from a single VIN. That is, assuming only a single stream is supported.
> In the cover letter I mention that there seems to be some kind of
> attempts for multistreaming in upstream, which breaks during this
> series. My understanding from Niklas was that the custom multistreaming
> doesn't work or at least can be dropped. Niklas, correct me if I'm wrong
> (and if I am wrong, someone else needs to take care of the custom
> multistreaming =).

And as discussed on IRC the main issue for the VIN pipeline will be on 
Gen3 where media graph links are made to model VC-to-VIN as we had no 
streams concept at the time. And that would need to be changed _before_ 
adding streams to instead model the physical busses between the R-Car 
CSI-2 Rx and VIN instances, with all their fun limitations.

If that is not done and streams added to the R-Car CSI-2 driver it would 
do the correct thing, but the VIN driver would still create a lot of 
media links that after streams are not possible to setup in hardware.

> 
> Later in the series risp_enable_streams will be called multiple times.
> Each VIN video node will call it once when enabling.
> 
>  Tomi
> 
> > 
> > Same when stopping.
> > 
> >> +	if (ret) {
> >> +		risp_stop(isp);
> > 
> > This is also not covered by the stream_count, while risp_start() is.
> > 
> >> +		return ret;
> >> +	}
> >> +
> >>  	isp->stream_count += 1;
> >>  
> >>  	return ret;
> >> @@ -322,6 +322,8 @@ static int risp_disable_streams(struct v4l2_subdev *sd,
> >>  	if (!isp->remote)
> >>  		return -ENODEV;
> >>  
> >> +	v4l2_subdev_disable_streams(isp->remote, isp->remote_pad, BIT_ULL(0));
> >> +
> >>  	if (isp->stream_count == 1)
> >>  		risp_stop(isp);
> >>  
> > 
> 

-- 
Kind Regards,
Niklas Söderlund

  reply	other threads:[~2025-09-27  6:17 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-30 13:50 [PATCH v3 00/15] media: rcar: Streams support Tomi Valkeinen
2025-05-30 13:50 ` [PATCH v3 01/15] media: rcar-csi2: Use the pad version of v4l2_get_link_freq() Tomi Valkeinen
2025-06-02  9:43   ` Laurent Pinchart
2025-07-02 15:07     ` Niklas Söderlund
2025-07-02 20:51       ` Laurent Pinchart
2025-06-06 11:57   ` Niklas Söderlund
2025-05-30 13:50 ` [PATCH v3 02/15] media: rcar-isp: Improve ISPPROCMODE_DT_PROC_MODE_VC Tomi Valkeinen
2025-06-02  9:43   ` Laurent Pinchart
2025-06-06 11:58   ` Niklas Söderlund
2025-05-30 13:50 ` [PATCH v3 03/15] media: rcar-isp: Move {enable|disable}_streams() calls Tomi Valkeinen
2025-06-02  9:43   ` Laurent Pinchart
2025-09-26 11:22     ` Tomi Valkeinen
2025-09-27  6:17       ` Niklas Söderlund [this message]
2025-12-16 12:48     ` Tomi Valkeinen
2025-05-30 13:50 ` [PATCH v3 04/15] media: rcar-csi2: " Tomi Valkeinen
2025-06-02  9:43   ` Laurent Pinchart
2025-05-30 13:50 ` [PATCH v3 05/15] media: rcar-csi2: Move rcar2_calc_mbps() Tomi Valkeinen
2025-06-02 14:03   ` Laurent Pinchart
2025-06-06 12:03   ` Niklas Söderlund
2025-05-30 13:50 ` [PATCH v3 06/15] media: rcar-csi2: Simplify rcsi2_calc_mbps() Tomi Valkeinen
2025-06-02  9:43   ` Laurent Pinchart
2025-06-06 12:02   ` Niklas Söderlund
2025-05-30 13:50 ` [PATCH v3 07/15] media: rcar-csi2: Optimize rcsi2_calc_mbps() Tomi Valkeinen
2025-06-02  9:43   ` Laurent Pinchart
2025-06-06 12:07   ` Niklas Söderlund
2025-12-08 14:03     ` Tomi Valkeinen
2025-05-30 13:50 ` [PATCH v3 08/15] media: rcar-csi2: Switch to Streams API Tomi Valkeinen
2025-06-02 14:06   ` Laurent Pinchart
2025-12-16 13:15     ` Tomi Valkeinen
2025-06-06 12:09   ` Niklas Söderlund
2025-05-30 13:50 ` [PATCH v3 09/15] media: rcar-isp: " Tomi Valkeinen
2025-06-02 14:17   ` Laurent Pinchart
2025-06-06 12:10   ` Niklas Söderlund
2025-05-30 13:50 ` [PATCH v3 10/15] media: rcar-csi2: Add .get_frame_desc op Tomi Valkeinen
2025-06-02  9:44   ` Laurent Pinchart
2025-06-06 12:14   ` Niklas Söderlund
2025-12-16 13:18     ` Tomi Valkeinen
2025-12-16 13:22       ` Tomi Valkeinen
2025-05-30 13:50 ` [PATCH v3 11/15] media: rcar-isp: Call get_frame_desc to find out VC & DT Tomi Valkeinen
2025-06-02 13:22   ` Laurent Pinchart
2025-12-16 11:57     ` Tomi Valkeinen
2025-06-06 12:20   ` Niklas Söderlund
2025-12-16 13:35     ` Tomi Valkeinen
2025-05-30 13:50 ` [PATCH v3 12/15] media: rcar-csi2: Add more stream support to rcsi2_calc_mbps() Tomi Valkeinen
2025-06-02 13:28   ` Laurent Pinchart
2025-12-16 12:45     ` Tomi Valkeinen
2025-06-06 12:25   ` Niklas Söderlund
2025-05-30 13:50 ` [PATCH v3 13/15] media: rcar-csi2: Call get_frame_desc to find out VC & DT (Gen3) Tomi Valkeinen
2025-06-02 13:49   ` Laurent Pinchart
2025-12-16 12:58     ` Tomi Valkeinen
2025-05-30 13:50 ` [PATCH v3 14/15] media: rcar-csi2: Add full streams support Tomi Valkeinen
2025-06-02 13:54   ` Laurent Pinchart
2025-12-16 13:03     ` Tomi Valkeinen
2025-05-30 13:50 ` [PATCH v3 15/15] media: rcar-isp: " Tomi Valkeinen
2025-06-02 13:57   ` Laurent Pinchart
2025-12-16 13:11     ` Tomi Valkeinen
2025-06-06 12:32 ` [PATCH v3 00/15] media: rcar: Streams support Niklas Söderlund

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=20250927061704.GA2027750@ragnatech.se \
    --to=niklas.soderlund@ragnatech.se \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mchehab+huawei@kernel.org \
    --cc=mchehab@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=tomi.valkeinen+renesas@ideasonboard.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox