Re: [PATCH 00/19] media: renesas: rcar-csi2: Support multiple streams

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Niklas
  thanks for the quick reply

On Tue, Apr 30, 2024 at 01:17:18PM +0200, Niklas Söderlund wrote:
> Hi Jacopo,
>
> Thanks for this work! I'm happy that we finally can get this upstream. I
> will test and review this in the coming days. As there appears to be a
> few dependencies to get this to work do you have a branch covering
> everything needed?
>

Sure
https://git.kernel.org/pub/scm/linux/kernel/git/jmondi/linux.git/
jmondi/renesas-drivers-2024-04-23-v6.9-rc5/multistream

I should have added it to the cover letter

> On 2024-04-30 12:39:36 +0200, Jacopo Mondi wrote:
> > Hello this series implements multi-stream support for R-Car CSI-2 and the
> > two CSI-2 devices that are available on Renesas dev-boards which are mainline
> > supported (the ADV748x HDMI decoder and the MAX9286 GMSL deserializer).
>
> You also need to update the MAX96712 driver in staging else V3U and Gen4
> will break.
>

Ouch, right. I can do that but won't be able to test. Would you ?

> >
> > The net gain in feature is:
> > - ADV748x: Select on which MIPI CSI-2 VC to send the stream on
> > - MAX9286: Paves the way for run-time selection of active links
> >
> > Both features are realized by controlling the devices routing tables.
> > The max9286 routing support is not implemented, but these patches are needed
> > in order to maintain the current version compatible with R-Car CSI-2.
> >
> > The R-Car CSI-2 driver needs to be updated in order to support multiplexed
> > transmitters, in particular:
> >
> > - Use LINK_FREQ to compute the lane bandwidth
> > - Support subdev_active state
> > - Configure DT and VC handling by using the remote's frame_desc
> >
> > A separate fix for VIN sits at the top of the series to re-enable YUYV capture
> > operations.
> >
> > The series needs to activate streams in v4l2-subdev to work correctly:
> >
> > --- a/drivers/media/v4l2-core/v4l2-subdev.c
> > +++ b/drivers/media/v4l2-core/v4l2-subdev.c
> > @@ -32,7 +32,7 @@
> >   * 'v4l2_subdev_enable_streams_api' to 1 below.
> >   */
> >
> > -static bool v4l2_subdev_enable_streams_api;
> > +static bool v4l2_subdev_enable_streams_api = 1;
> >  #endif
>
> I'm not up to date with the latest state of the multiple streams API.
> Can this be runtime configured or will this break capture if the kernel
> is not patched to enable this?
>

I'm afraid the latter. I really hope in the next kernel release we can
get rid of this protection and enable streams by default.

> >
> >
> > Test scripts, based on vin-tests are available at:
> > https://git.uk.ideasonboard.com/jmondi/vin-tests
> >
> > A note for Sakari: patch
> > "media: max9286: Implement support for LINK_FREQ"
> >
> > Could actually use your new
> > "media: v4l: Support passing sub-device argument to v4l2_get_link_freq()"
> >
> > I kept it as it is for this version waiting for your patch to get in.
>
> I like this idea.
>
> >
> > A note for Niklas:
> > I think this series paves the way to actually moving the control of which
> > VC goes to which VIN using a routing table instead of using link enablement.
> >
> > Currently the setup is as it follows: routing within R-Car CSI-2 is fixed, sink
> > stream 0/X goes to source stream X+1/0 and each source pad represents a VC.
> > Which VC gets sent to which VIN is controlled by link enablement.
> >
> > A more natural way of handling this would be to make the routing table
> > within CSI-2 configurable and have media-links immutable between the CSI-2
> > source pad. A CSI-2 source pad would then represent a 'channel' between
> > CSI-2 and VIN and not the VC which is sent on it.
> >
> > This setup would better represent the current implementation, with VIN's VCSEL
> > fixed channel routing and with the CSI-2 routing table controlling which VC gets
> > sent on which channel. What do you think ?
>
> That could be useful. Maybe we can even switch to use immutable links
> and use the routing instead greatly simplifying the VIN driver as this
> together with the other VIN series on the list we can drop the ugly
> group concept ;-)

I had the same idea, but I'm not yet sure how this would work when a
CSI-2 can be routed to multiple VIN groups...

>
> But this series is already quiet large, I think we can work on this
> on-top in a new series.
>

Exactly, I didn't want to pile too many things. max9286 routing would
be next in line, I kept it out to avoid sending 30 patches in one go
(and to send this out earlier to get feedbacks)

Thanks
  j

> >
> > Jacopo Mondi (19):
> >   media: adv748x: Add support for active state
> >   media: adv748x: Add flags to adv748x_subdev_init()
> >   media: adv748x: Use V4L2 streams
> >   media: adv748x: Propagate format to opposite stream
> >   media: adv748x: Implement set_routing()
> >   media: adv748x: Use routes to configure VC
> >   media: adv748x: Implement .get_frame_desc()
> >   media: max9286: Add support for subdev active state
> >   media: max9286: Fix enum_mbus_code
> >   media: max9286: Use frame interval from subdev state
> >   media: max9286: Use V4L2 Streams
> >   media: max9286: Implement .get_frame_desc()
> >   media: max9286: Implement support for LINK_FREQ
> >   media: max9286: Implement .get_mbus_config()
> >   media: rcar-csi2: Add support for multiplexed streams
> >   media: rcar-csi2: Support multiplexed transmitters
> >   media: rcar-csi2: Store format in the subdev state
> >   media: rcar-csi2: Implement set_routing
> >   media: rcar-vin: Fix YUYV8_1X16 handling for CSI-2
> >
> >  drivers/media/i2c/adv748x/adv748x-afe.c       |   2 +-
> >  drivers/media/i2c/adv748x/adv748x-core.c      |  12 +-
> >  drivers/media/i2c/adv748x/adv748x-csi2.c      | 251 +++++++---
> >  drivers/media/i2c/adv748x/adv748x-hdmi.c      |   2 +-
> >  drivers/media/i2c/adv748x/adv748x.h           |   4 +-
> >  drivers/media/i2c/max9286.c                   | 457 ++++++++++++------
> >  drivers/media/platform/renesas/rcar-csi2.c    | 442 ++++++++++++-----
> >  .../platform/renesas/rcar-vin/rcar-dma.c      |  16 +-
> >  8 files changed, 834 insertions(+), 352 deletions(-)
> >
> > --
> > 2.44.0
> >
>
> --
> Kind Regards,
> Niklas Söderlund
>




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux