[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250421151108.GB19213@pendragon.ideasonboard.com>
Date: Mon, 21 Apr 2025 18:11:08 +0300
From: Laurent Pinchart <laurent.pinchart@...asonboard.com>
To: Tommaso Merciai <tommaso.merciai.xr@...renesas.com>
Cc: tomm.merciai@...il.com, linux-renesas-soc@...r.kernel.org,
linux-media@...r.kernel.org, biju.das.jz@...renesas.com,
prabhakar.mahadev-lad.rj@...renesas.com,
Mauro Carvalho Chehab <mchehab@...nel.org>,
Rob Herring <robh@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>,
Geert Uytterhoeven <geert+renesas@...der.be>,
Magnus Damm <magnus.damm@...il.com>, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH v7 00/17] media: rzg2l-cru: Add support for RZ/G3E (CSI2,
CRU)
Hi Tommaso,
Thank you for the patches.
On Fri, Apr 11, 2025 at 07:05:28PM +0200, Tommaso Merciai wrote:
> Dear All,
>
> In preparation of supporting the CRU/CSI2 IPs found into the Renesas RZ/G3E
> SoC, this series adds driver/dt-bindings support.
> This adds also some minor fixes into rzg2l-csi2 and rzg2l-core drivers.
>
> The series was tested in an out of tree branch with the following hw pipeline:
>
> ov5645 image sensor (Coral Camera) -> rzg3e CSI2 -> rzg3e CRU
> imx219 image sensor (Pi PiNoir Camera Module V2.1) -> rzg3e CSI2 -> rzg3e CRU
>
> base commit: 7702d0130dc00 (tag: next-20250408)
As far as I can tell, the series has been fully reviewed. I'll collect
the patches, run them through CI, and then send a pull request.
> ------
> Some logs:
>
> root@...rc-rzg3e:~# media-ctl -p
> Media controller API version 6.15.0
>
> Media device information
> ------------------------
> driver rzg2l_cru
> model renesas,r9a09g047-cru
> serial
> bus info platform:16000000.video
> hw revision 0x0
> driver version 6.15.0
>
> Device topology
> - entity 1: csi-16000400.csi2 (2 pads, 2 links, 0 routes)
> type V4L2 subdev subtype Unknown flags 0
> device node name /dev/v4l-subdev0
> pad0: Sink
> [stream:0 fmt:UYVY8_1X16/1280x960 field:none colorspace:srgb]
> <- "ov5645 0-003c":0 [ENABLED,IMMUTABLE]
> pad1: Source
> [stream:0 fmt:UYVY8_1X16/1280x960 field:none colorspace:srgb]
> -> "cru-ip-16000000.video":0 [ENABLED,IMMUTABLE]
>
> - entity 4: cru-ip-16000000.video (2 pads, 2 links, 0 routes)
> type V4L2 subdev subtype Unknown flags 0
> device node name /dev/v4l-subdev1
> pad0: Sink
> [stream:0 fmt:UYVY8_1X16/1280x960 field:none]
> <- "csi-16000400.csi2":1 [ENABLED,IMMUTABLE]
> pad1: Source
> [stream:0 fmt:UYVY8_1X16/1280x960 field:none]
> -> "CRU output":0 [ENABLED,IMMUTABLE]
>
> - entity 7: ov5645 0-003c (1 pad, 1 link, 0 routes)
> type V4L2 subdev subtype Sensor flags 0
> device node name /dev/v4l-subdev2
> pad0: Source
> [stream:0 fmt:UYVY8_1X16/1280x960 field:none colorspace:srgb
> crop:(0,0)/1280x960]
> -> "csi-16000400.csi2":0 [ENABLED,IMMUTABLE]
>
> - entity 17: CRU output (1 pad, 1 link)
> type Node subtype V4L flags 0
> device node name /dev/video0
> pad0: Sink
> <- "cru-ip-16000000.video":1 [ENABLED,IMMUTABLE]
>
> root@...rc-rzg3e:~# v4l2-compliance -d /dev/v4l-subdev0
For the next submission, you can use
$ v4l2-compliance -m /dev/media0
to test all subdevs and video nodes.
> v4l2-compliance 1.26.1-5142, 64 bits, 64-bit time_t
> v4l2-compliance SHA: 4aee01a02792 2023-12-12 21:40:38
>
> Compliance test for device /dev/v4l-subdev0:
>
> Driver Info:
> Driver version : 6.15.0
> Capabilities : 0x00[ 580.151532] csi-16000400.csi2: ================= START STATUS =================
> 000000
>
> Requir[ 580.151532] csi-16000400.csi2: ================= START STATUS =================
> ed ioctls:
> tes[ 580.168711] csi-16000400.csi2: ================== END STATUS ==================
> t VIDIOC_SUDBEV_[ 580.168711] csi-16000400.csi2: ================== END STATUS ==================
> QUERYCAP: OK
> test invalid ioctls: OK
>
> Allow for multiple opens:
> test second /dev/v4l-subdev0 open: OK
> test VIDIOC_SUBDEV_QUERYCAP: OK
> test for unlimited opens: OK
>
> Debug ioctls:
> test VIDIOC_LOG_STATUS: OK (Not Supported)
>
> Input ioctls:
> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> test VIDIOC_ENUMAUDIO: OK (Not Supported)
> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> test VIDIOC_G/S_AUDIO: OK (Not Supported)
> Inputs: 0 Audio Inputs: 0 Tuners: 0
>
> Output ioctls:
> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> Outputs: 0 Audio Outputs: 0 Modulators: 0
>
> Input/Output configuration ioctls:
> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> test VIDIOC_G/S_EDID: OK (Not Supported)
>
> Control ioctls:
> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> test VIDIOC_QUERYCTRL: OK (Not Supported)
> test VIDIOC_G/S_CTRL: OK (Not Supported)
> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> Standard Controls: 0 Private Controls: 0
>
> Format ioctls:
> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported)
> test VIDIOC_G/S_PARM: OK (Not Supported)
> test VIDIOC_G_FBUF: OK (Not Supported)
> test VIDIOC_G_FMT: OK (Not Supported)
> test VIDIOC_TRY_FMT: OK (Not Supported)
> test VIDIOC_S_FMT: OK (Not Supported)
> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> test Cropping: OK (Not Supported)
> test Composing: OK (Not Supported)
> test Scaling: OK (Not Supported)
>
> Codec ioctls:
> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>
> Buffer ioctls:
> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
> test CREATE_BUFS maximum buffers: OK
> test VIDIOC_EXPBUF: OK (Not Supported)
> test Requests: OK (Not Supported)
>
> Total for device /dev/v4l-subdev0: 44, Succeeded: 44, Failed: 0, Warnings: 0
>
> root@...rc-rzg3e:~# v4l2-compliance -d /dev/v4l-subdev1
> v4l2-compliance 1.26.1-5142, 64 [ 592.022784] cru-ip-16000000.video: ================= START STATUS =================
> bits, 64-bit tim[ 592.022784] cru-ip-16000000.video: ================= START STATUS =================
> e_t
> v4l2-compli[ 592.040565] cru-ip-16000000.video: ================== END STATUS ==================
> ance SHA: 4aee01[ 592.040565] cru-ip-16000000.video: ================== END STATUS ==================
> a02792 2023-12-12 21:40:38
>
> Compliance test for rzg2l_cru device /dev/v4l-subdev1:
>
> Driver Info:
> Driver version : 6.15.0
> Capabilities : 0x00000000
> Media Driver Info:
> Driver name : rzg2l_cru
> Model : renesas,r9a09g047-cru
> Serial :
> Bus info : platform:16000000.video
> Media version : 6.15.0
> Hardware revision: 0x00000000 (0)
> Driver version : 6.15.0
> Interface Info:
> ID : 0x0300000d
> Type : V4L Sub-Device
> Entity Info:
> ID : 0x00000004 (4)
> Name : cru-ip-16000000.video
> Function : Video Pixel Formatter
> Pad 0x01000005 : 0: Sink, Must Connect
> Link 0x02000015: from remote pad 0x1000003 of entity 'csi-16000400.csi2' (Video Interface Bridge): Data, Enabled, Immutable
> Pad 0x01000006 : 1: Source, Must Connect
> Link 0x02000017: to remote pad 0x1000012 of entity 'CRU output' (V4L2 I/O): Data, Enabled, Immutable
>
> Required ioctls:
> test MC information (see 'Media Driver Info' above): OK
> test VIDIOC_SUDBEV_QUERYCAP: OK
> test invalid ioctls: OK
>
> Allow for multiple opens:
> test second /dev/v4l-subdev1 open: OK
> test VIDIOC_SUBDEV_QUERYCAP: OK
> test for unlimited opens: OK
>
> Debug ioctls:
> test VIDIOC_LOG_STATUS: OK (Not Supported)
>
> Input ioctls:
> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> test VIDIOC_ENUMAUDIO: OK (Not Supported)
> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> test VIDIOC_G/S_AUDIO: OK (Not Supported)
> Inputs: 0 Audio Inputs: 0 Tuners: 0
>
> Output ioctls:
> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> Outputs: 0 Audio Outputs: 0 Modulators: 0
>
> Input/Output configuration ioctls:
> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> test VIDIOC_G/S_EDID: OK (Not Supported)
>
> Sub-Device ioctls (Sink Pad 0):
> Try Stream 0
> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK
> test Try VIDIOC_SUBDEV_G/S_FMT: OK
> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> Active Stream 0
> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK
> test Active VIDIOC_SUBDEV_G/S_FMT: OK
> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>
> Sub-Device ioctls (Source Pad 1):
> Try Stream 0
> test Try VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK
> test Try VIDIOC_SUBDEV_G/S_FMT: OK
> test Try VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> Active Stream 0
> test Active VIDIOC_SUBDEV_ENUM_MBUS_CODE/FRAME_SIZE/FRAME_INTERVAL: OK
> test Active VIDIOC_SUBDEV_G/S_FMT: OK
> test Active VIDIOC_SUBDEV_G/S_SELECTION/CROP: OK (Not Supported)
> test VIDIOC_SUBDEV_G/S_FRAME_INTERVAL: OK (Not Supported)
>
> Control ioctls:
> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK (Not Supported)
> test VIDIOC_QUERYCTRL: OK (Not Supported)
> test VIDIOC_G/S_CTRL: OK (Not Supported)
> test VIDIOC_G/S/TRY_EXT_CTRLS: OK (Not Supported)
> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK (Not Supported)
> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> Standard Controls: 0 Private Controls: 0
>
> Format ioctls:
> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported)
> test VIDIOC_G/S_PARM: OK (Not Supported)
> test VIDIOC_G_FBUF: OK (Not Supported)
> test VIDIOC_G_FMT: OK (Not Supported)
> test VIDIOC_TRY_FMT: OK (Not Supported)
> test VIDIOC_S_FMT: OK (Not Supported)
> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> test Cropping: OK (Not Supported)
> test Composing: OK (Not Supported)
> test Scaling: OK (Not Supported)
>
> Codec ioctls:
> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>
> Buffer ioctls:
> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
> test CREATE_BUFS maximum buffers: OK
> test VIDIOC_EXPBUF: OK (Not Supported)
> test Requests: OK (Not Supported)
>
> Total for rzg2l_cru device /dev/v4l-subdev1: 59, Succeeded: 59, Failed: 0, Warnings: 0
>
> root@...rc-rzg3e:~# v4l2-compliance -d /dev/v4l-subdev2
> v4l2-compliance 1.26.1-5142, 64 [ 602.158977] ov5645 0-003c: ================= START STATUS =================
> bits, 64-bit tim[ 602.158977] ov5645 0-003c: ================= START STATUS =================
> e_t
> v4l2-compli[ 602.175529] ov5645 0-003c: ================== END STATUS ==================
> ance SHA: 4aee01[ 602.175529] ov5645 0-003c: ================== END STATUS ==================
> a02792 2023-12-12 21:40:38
>
> Compliance test for device /dev/v4l-subdev2:
>
> Driver Info:
> Driver version : 6.15.0
> Capabilities : 0x00000000
>
> Required ioctls:
> test VIDIOC_SUDBEV_QUERYCAP: OK
> test invalid ioctls: OK
>
> Allow for multiple opens:
> test second /dev/v4l-subdev2 open: OK
> test VIDIOC_SUBDEV_QUERYCAP: OK
> test for unlimited opens: OK
>
> Debug ioctls:
> test VIDIOC_LOG_STATUS: OK (Not Supported)
>
> Input ioctls:
> test VIDIOC_G/S_TUNER/ENUM_FREQ_BANDS: OK (Not Supported)
> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> test VIDIOC_S_HW_FREQ_SEEK: OK (Not Supported)
> test VIDIOC_ENUMAUDIO: OK (Not Supported)
> test VIDIOC_G/S/ENUMINPUT: OK (Not Supported)
> test VIDIOC_G/S_AUDIO: OK (Not Supported)
> Inputs: 0 Audio Inputs: 0 Tuners: 0
>
> Output ioctls:
> test VIDIOC_G/S_MODULATOR: OK (Not Supported)
> test VIDIOC_G/S_FREQUENCY: OK (Not Supported)
> test VIDIOC_ENUMAUDOUT: OK (Not Supported)
> test VIDIOC_G/S/ENUMOUTPUT: OK (Not Supported)
> test VIDIOC_G/S_AUDOUT: OK (Not Supported)
> Outputs: 0 Audio Outputs: 0 Modulators: 0
>
> Input/Output configuration ioctls:
> test VIDIOC_ENUM/G/S/QUERY_STD: OK (Not Supported)
> test VIDIOC_ENUM/G/S/QUERY_DV_TIMINGS: OK (Not Supported)
> test VIDIOC_DV_TIMINGS_CAP: OK (Not Supported)
> test VIDIOC_G/S_EDID: OK (Not Supported)
>
> Control ioctls:
> test VIDIOC_QUERY_EXT_CTRL/QUERYMENU: OK
> test VIDIOC_QUERYCTRL: OK
> test VIDIOC_G/S_CTRL: OK
> test VIDIOC_G/S/TRY_EXT_CTRLS: OK
> test VIDIOC_(UN)SUBSCRIBE_EVENT/DQEVENT: OK
> test VIDIOC_G/S_JPEGCOMP: OK (Not Supported)
> Standard Controls: 12 Private Controls: 0
>
> Format ioctls:
> test VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS: OK (Not Supported)
> test VIDIOC_G/S_PARM: OK (Not Supported)
> test VIDIOC_G_FBUF: OK (Not Supported)
> test VIDIOC_G_FMT: OK (Not Supported)
> test VIDIOC_TRY_FMT: OK (Not Supported)
> test VIDIOC_S_FMT: OK (Not Supported)
> test VIDIOC_G_SLICED_VBI_CAP: OK (Not Supported)
> test Cropping: OK (Not Supported)
> test Composing: OK (Not Supported)
> test Scaling: OK (Not Supported)
>
> Codec ioctls:
> test VIDIOC_(TRY_)ENCODER_CMD: OK (Not Supported)
> test VIDIOC_G_ENC_INDEX: OK (Not Supported)
> test VIDIOC_(TRY_)DECODER_CMD: OK (Not Supported)
>
> Buffer ioctls:
> test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK (Not Supported)
> test CREATE_BUFS maximum buffers: OK
> test VIDIOC_EXPBUF: OK (Not Supported)
> test Requests: OK (Not Supported)
>
> Total for device /dev/v4l-subdev2: 44, Succeeded: 44, Failed: 0, Warnings: 0
>
> Thanks & Regards,
> Tommaso
>
> Lad Prabhakar (12):
> media: dt-bindings: renesas,rzg2l-csi2: Document Renesas RZ/V2H(P) SoC
> media: rzg2l-cru: csi2: Use local variable for struct device in
> rzg2l_csi2_probe()
> media: rzg2l-cru: rzg2l-core: Use local variable for struct device in
> rzg2l_cru_probe()
> media: rzg2l-cru: csi2: Introduce SoC-specific D-PHY handling
> media: rzg2l-cru: csi2: Add support for RZ/V2H(P) SoC
> media: rzg2l-cru: Add register mapping support
> media: rzg2l-cru: Pass resolution limits via OF data
> media: rzg2l-cru: Add image_conv offset to OF data
> media: rzg2l-cru: Add IRQ handler to OF data
> media: rzg2l-cru: Add function pointer to check if FIFO is empty
> media: rzg2l-cru: Add function pointer to configure CSI
> media: rzg2l-cru: Add support for RZ/G3E SoC
>
> Tommaso Merciai (5):
> media: dt-bindings: renesas,rzg2l-csi2: Document Renesas RZ/G3E CSI-2
> block
> media: dt-bindings: renesas,rzg2l-cru: Document Renesas RZ/G3E SoC
> media: rzg2l-cru: csi2: Use devm_pm_runtime_enable()
> media: rzg2l-cru: rzg2l-core: Use devm_pm_runtime_enable()
> media: rzg2l-cru: csi2: Skip system clock for RZ/V2H(P) SoC
>
> .../bindings/media/renesas,rzg2l-cru.yaml | 65 +++-
> .../bindings/media/renesas,rzg2l-csi2.yaml | 62 +++-
> .../platform/renesas/rzg2l-cru/rzg2l-core.c | 139 ++++++++-
> .../renesas/rzg2l-cru/rzg2l-cru-regs.h | 91 ++++--
> .../platform/renesas/rzg2l-cru/rzg2l-cru.h | 39 ++-
> .../platform/renesas/rzg2l-cru/rzg2l-csi2.c | 165 ++++++++--
> .../platform/renesas/rzg2l-cru/rzg2l-ip.c | 13 +-
> .../platform/renesas/rzg2l-cru/rzg2l-video.c | 295 ++++++++++++++++--
> 8 files changed, 737 insertions(+), 132 deletions(-)
--
Regards,
Laurent Pinchart
Powered by blists - more mailing lists