.../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(-)
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
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
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
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
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
© 2016 - 2025 Red Hat, Inc.