[PATCH v7 00/17] media: rzg2l-cru: Add support for RZ/G3E (CSI2, CRU)

Tommaso Merciai posted 17 patches 8 months, 1 week ago
.../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(-)
[PATCH v7 00/17] media: rzg2l-cru: Add support for RZ/G3E (CSI2, CRU)
Posted by Tommaso Merciai 8 months, 1 week ago
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)

------
Some logs:

root@smarc-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@smarc-rzg3e:~# v4l2-compliance -d /dev/v4l-subdev0
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@smarc-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@smarc-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(-)

-- 
2.43.0
Re: [PATCH v7 00/17] media: rzg2l-cru: Add support for RZ/G3E (CSI2, CRU)
Posted by Laurent Pinchart 7 months, 4 weeks ago
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@smarc-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@smarc-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@smarc-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@smarc-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
Re: [PATCH v7 00/17] media: rzg2l-cru: Add support for RZ/G3E (CSI2, CRU)
Posted by Tommaso Merciai 7 months, 4 weeks ago
Hi Laurent,
Thanks for your review.

On Mon, Apr 21, 2025 at 06:11:08PM +0300, Laurent Pinchart wrote:
> 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@smarc-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@smarc-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.

Will do. Thanks for sharing this.

Thanks & Regards,
Tommaso

> 
> > 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@smarc-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@smarc-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
Re: [PATCH v7 00/17] media: rzg2l-cru: Add support for RZ/G3E (CSI2, CRU)
Posted by Geert Uytterhoeven 8 months ago
Hi Tommaso,

On Fri, 11 Apr 2025 at 19:06, Tommaso Merciai
<tommaso.merciai.xr@bp.renesas.com> wrote:
> 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.

[...]

Thanks for the update!

Can you please summarize what was changed in v7, compared to v6
which you posted just one day earlier?
Thanks again!

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds
Re: [PATCH v7 00/17] media: rzg2l-cru: Add support for RZ/G3E (CSI2, CRU)
Posted by Tommaso Merciai 8 months ago
Hi Geert,
Thanks for your comment.

On Mon, Apr 14, 2025 at 09:40:22AM +0200, Geert Uytterhoeven wrote:
> Hi Tommaso,
> 
> On Fri, 11 Apr 2025 at 19:06, Tommaso Merciai
> <tommaso.merciai.xr@bp.renesas.com> wrote:
> > 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.
> 
> [...]
> 
> Thanks for the update!
> 
> Can you please summarize what was changed in v7, compared to v6
> which you posted just one day earlier?
> Thanks again!

Sorry.
I posted per patch recap and not here into the cover letter.

v6->v7:

 PATCH 11/17:
  - Collected tag
  - Drop the cru->info check into rzg2l_cru_probe()

 PATCH 17/17:
  - Fixed indentation + missing space into rzg3e_cru_get_current_slot()

Thanks & Regards,
Tommaso

> 
> Gr{oetje,eeting}s,
> 
>                         Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                 -- Linus Torvalds