.../admin-guide/media/rkcif-rk3568-vicap.dot | 21 + Documentation/admin-guide/media/rkcif.rst | 83 ++ Documentation/admin-guide/media/v4l-drivers.rst | 1 + .../bindings/media/rockchip,px30-vip.yaml | 122 +++ .../bindings/media/rockchip,rk3568-mipi-csi.yaml | 144 ++++ .../bindings/media/rockchip,rk3568-vicap.yaml | 170 ++++ MAINTAINERS | 17 + arch/arm64/boot/dts/rockchip/px30.dtsi | 12 + .../rk3568-wolfvision-pf5-io-expander.dtso | 20 + arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 78 ++ arch/arm64/configs/defconfig | 2 + drivers/media/platform/rockchip/Kconfig | 2 + drivers/media/platform/rockchip/Makefile | 2 + drivers/media/platform/rockchip/rkcif/Kconfig | 18 + drivers/media/platform/rockchip/rkcif/Makefile | 8 + .../platform/rockchip/rkcif/rkcif-capture-dvp.c | 864 +++++++++++++++++++++ .../platform/rockchip/rkcif/rkcif-capture-dvp.h | 24 + .../platform/rockchip/rkcif/rkcif-capture-mipi.c | 777 ++++++++++++++++++ .../platform/rockchip/rkcif/rkcif-capture-mipi.h | 22 + .../media/platform/rockchip/rkcif/rkcif-common.h | 249 ++++++ drivers/media/platform/rockchip/rkcif/rkcif-dev.c | 301 +++++++ .../platform/rockchip/rkcif/rkcif-interface.c | 425 ++++++++++ .../platform/rockchip/rkcif/rkcif-interface.h | 30 + drivers/media/platform/rockchip/rkcif/rkcif-regs.h | 153 ++++ .../media/platform/rockchip/rkcif/rkcif-stream.c | 637 +++++++++++++++ .../media/platform/rockchip/rkcif/rkcif-stream.h | 31 + drivers/media/platform/rockchip/rkcsi/Kconfig | 16 + drivers/media/platform/rockchip/rkcsi/Makefile | 3 + drivers/media/platform/rockchip/rkcsi/rkcsi.c | 741 ++++++++++++++++++ include/dt-bindings/media/video-interfaces.h | 4 + 30 files changed, 4977 insertions(+)
Habidere,
This series introduces support for the Rockchip Camera Interface (CIF),
which is featured in many Rockchip SoCs in different variations.
For example, the PX30 Video Input Processor (VIP) is able to receive
video data via the Digital Video Port (DVP, a parallel data interface)
and transfer it into system memory using a double-buffering mechanism
called ping-pong mode.
The RK3568 Video Capture (VICAP) unit, on the other hand, features a
DVP and a MIPI CSI-2 receiver that can receive video data independently
(both using the ping-pong scheme).
The different variants may have additional features, such as scaling
and/or cropping.
Finally, the RK3588 VICAP unit constitutes an essential piece of the
camera interface with one DVP, six MIPI CSI-2 receivers, scale/crop
units, and a data path multiplexer (to scaler units, to ISP, ...).
The v11 of the series adds a media controller centric V4L2 device driver
for the Rockchip CIF with
- support for the PX30 VIP (not tested, though, due to the lack of HW)
- support for the RK3568 VICAP, including
- capturing frames from the DVP
- capturing frames from the MIPI CSI-2 receiver
- abstraction for the ping-pong scheme to allow for future extensions
- abstraction for the INTERFACE and CROP parts to allow for future
extensions
- initial support for different virtual channels (not tested, though,
due to the lack of HW)
and a V4L2 subdevice driver for the Rockchip MIPI CSI-2 Receiver.
The driver can be readily extended to provide support for the RK3588
VICAP variant. In order to keep things simple, however, this extension
shall be submitted separately.
Looking forward to your comments!
To: Mehdi Djait <mehdi.djait@linux.intel.com>
To: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: Théo Lebrun <theo.lebrun@bootlin.com>
To: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
To: Gerald Loacker <gerald.loacker@wolfvision.net>
To: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
To: Markus Elfring <Markus.Elfring@web.de>
To: Sakari Ailus <sakari.ailus@iki.fi>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Mauro Carvalho Chehab <mchehab@kernel.org>
To: Rob Herring <robh+dt@kernel.org>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>
To: Conor Dooley <conor+dt@kernel.org>
To: Heiko Stuebner <heiko@sntech.de>
To: Kever Yang <kever.yang@rock-chips.com>
To: Nicolas Dufresne <nicolas.dufresne@collabora.com>
To: Sebastian Reichel <sebastian.reichel@collabora.com>
To: Collabora Kernel Team <kernel@collabora.com>
To: Paul Kocialkowski <paulk@sys-base.io>
To: Alexander Shiyan <eagle.alexander923@gmail.com>
To: Val Packett <val@packett.cool>
To: Rob Herring <robh@kernel.org>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-media@vger.kernel.org
Cc: devicetree@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-rockchip@lists.infradead.org
Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
Changes in v11:
- rkcif: split large driver patch (6/13 of v10) into smaller
patches (6-11/17 of v11) (Bryan)
- rkcsi: replaced devm_reset_control_array_get_exclusive with
devm_reset_control_get_exclusive (Philipp)
- Link to v10: https://lore.kernel.org/r/20240220-rk3568-vicap-v10-0-62d8a7b209b4@collabora.com
Changes in v10:
- rkcsi: fixed error handling in rkcsi_start (Bryan)
- rkcsi: fixed interrupt references in device tree and bindings
(Rob's bot)
- added missing call to rkcif_mipi_stop_streaming from rkcif_mipi_isr
(Mehdi)
- renamed remaining instances "cif_" -> "rkcif_" in functions
- Link to v9: https://lore.kernel.org/r/20240220-rk3568-vicap-v9-0-ace1e5cc4a82@collabora.com
Changes in v9:
- added compatible for RK3588 MIPI CSI-2 receiver, thus dropped
Krzysztof's R-b
- added interrupts to rkcsi DT binding and RK356x DT
- added variant specific callback to rkcif-capture-mipi that puts
together the CTRL0 register content (which varies between RK3568
and RK3588)
- fixed v4l2_fill_pixfmt_mp() return value handling (Mehdi)
- Link to v8: https://lore.kernel.org/r/20240220-rk3568-vicap-v8-0-9d9cbc4b524d@collabora.com
Changes in v8:
- rebased onto v6.16-rc1
- fixed RKCIF_MIPI_MAX value in rkcif-common.h
- fixed rkcsi Kconfig (kernel test robot)
- sorted rkcsi DT bindings document properly, completed example
(Krzysztof)
- squashed the defconfig patches (Krzysztof), dropped Bryan's R-b
- Link to v7: https://lore.kernel.org/r/20240220-rk3568-vicap-v7-0-7581fd96a33a@collabora.com
Changes in v7:
- moved MIPI CSI-2 receiver driver into separate directory (Laurent)
- rkcsi: fixed return values (Bryan)
- rkcsi: fixed v4l2_get_link_freq to use pad instead of control
handler (Sakari)
- rkcsi: added data-lanes property (Mehdi)
- rkcif: fixed formatting (Bryan)
- fixed "int" -> "unsigned int" in all for loops (Sakari)
- rkcif-stream: fixed minimum number of required buffers (Mehdi)
- rkcif-stream: used guards for the spinlock (Markus and Mehdi)
- rkcif-stream: made driver less noisy with dev_dbg (Mehdi)
- rkcif-stream: fixed issues detected by v4l2-compliance (Mehdi)
- rkcif-dvp-capture: fixed return value propagation in _register()
(Mehdi)
- removed stray "phy-names" from required properties (Rob's bot)
- Link to v6: https://lore.kernel.org/r/20240220-rk3568-vicap-v6-0-d2f5fbee1551@collabora.com
Changes in v6:
- rebased onto v6.15-rc1
- renamed "MIPI CSI HOST" -> "MIPI CSI RECEIVER" (Laurent)
- s/@wolfvision.net/@collabora.com where appropriate
- renamed DVP delay property and moved it to the endpoint (Sakari)
- implemented DT review comments (Krzysztof and Sakari)
- implemented driver review comments (Sakari)
- fixed issues raised by media-ci (yet again)
- added documentation including a RK3568 topology (new patch 1)
(Sakari)
- added patch that enables rkcif in the defconfig (new patch 9)
- Link to v5: https://lore.kernel.org/r/20250306-v6-8-topic-rk3568-vicap-v5-0-f02152534f3c@wolfvision.net
Changes in v5:
- fixed issues raised by media-ci
- fixed dt bindings (comments by Rob and Sakari)
- fixed probe on systems with no DVP in DT (comment by Alexander)
- fixed error path in register offset calculation
- split off MIPI CSI host driver into separate module (comment
by Mehdi)
- added MODULE_DEVICE_TABLE() for both drivers (comment by Mehdi)
- Link to v4: https://lore.kernel.org/r/20250219-v6-8-topic-rk3568-vicap-v4-0-e906600ae3b0@wolfvision.net
Changes in v4:
- added support for the MIPI CSI-2 receiver (new patches 4, 6, 7, 10)
- fixed asserts on stream stop
- fixed register address lookup
- fixed link validiation callback
- fixed issues raised by Rob's bot, kernel test robot, and media-ci
- Link to v3: https://lore.kernel.org/r/20250206-v6-8-topic-rk3568-vicap-v3-0-69d1f19e5c40@wolfvision.net
Changes in v3:
- renamed the driver "cif" -> "rkcif"
- rebased onto v6.14-rc1
- abstracted the generic INTERFACE+CROP part
- addressed comments by Rob and Sakari
- added V4L2 MPLANE formats to DVP
- added patch that enables the RK3568 VICAP DVP on PF5 IO Expander
- fixed formatting issues raised by media-ci bot
- Link to v2: https://lore.kernel.org/r/20241217-v6-8-topic-rk3568-vicap-v2-0-b1d488fcc0d3@wolfvision.net
Changes in v2:
- merged with Mehdi's v13
- refactored the complete driver towards a media controller centric driver
- abstracted the generic ping-pong stream (can be used for DVP as well as for CSI-2)
- switched to MPLANE API
- added support for notifications
- Link to v1: https://lore.kernel.org/r/20240220-v6-8-topic-rk3568-vicap-v1-0-2680a1fa640b@wolfvision.net
---
Mehdi Djait (2):
media: dt-bindings: add rockchip px30 vip
arm64: dts: rockchip: add the vip node to px30
Michael Riesch (15):
Documentation: admin-guide: media: add rockchip camera interface
media: dt-bindings: video-interfaces: add defines for sampling modes
media: dt-bindings: add rockchip rk3568 vicap
media: dt-bindings: add rockchip rk3568 mipi csi-2 receiver
media: rockchip: add driver for the rockchip mipi csi-2 receiver
media: rockchip: add driver for the rockchip camera interface
media: rockchip: rkcif: add abstraction for interface and crop blocks
media: rockchip: rkcif: add abstraction for dma blocks
media: rockchip: rkcif: add support for px30 vip dvp capture
media: rockchip: rkcif: add support for rk3568 vicap dvp capture
media: rockchip: rkcif: add support for rk3568 vicap mipi capture
arm64: defconfig: enable rockchip camera interface and mipi csi-2 receiver
arm64: dts: rockchip: add vicap node to rk356x
arm64: dts: rockchip: add mipi csi-2 receiver node to rk356x
arm64: dts: rockchip: enable vicap dvp on wolfvision pf5 io expander
.../admin-guide/media/rkcif-rk3568-vicap.dot | 21 +
Documentation/admin-guide/media/rkcif.rst | 83 ++
Documentation/admin-guide/media/v4l-drivers.rst | 1 +
.../bindings/media/rockchip,px30-vip.yaml | 122 +++
.../bindings/media/rockchip,rk3568-mipi-csi.yaml | 144 ++++
.../bindings/media/rockchip,rk3568-vicap.yaml | 170 ++++
MAINTAINERS | 17 +
arch/arm64/boot/dts/rockchip/px30.dtsi | 12 +
.../rk3568-wolfvision-pf5-io-expander.dtso | 20 +
arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 78 ++
arch/arm64/configs/defconfig | 2 +
drivers/media/platform/rockchip/Kconfig | 2 +
drivers/media/platform/rockchip/Makefile | 2 +
drivers/media/platform/rockchip/rkcif/Kconfig | 18 +
drivers/media/platform/rockchip/rkcif/Makefile | 8 +
.../platform/rockchip/rkcif/rkcif-capture-dvp.c | 864 +++++++++++++++++++++
.../platform/rockchip/rkcif/rkcif-capture-dvp.h | 24 +
.../platform/rockchip/rkcif/rkcif-capture-mipi.c | 777 ++++++++++++++++++
.../platform/rockchip/rkcif/rkcif-capture-mipi.h | 22 +
.../media/platform/rockchip/rkcif/rkcif-common.h | 249 ++++++
drivers/media/platform/rockchip/rkcif/rkcif-dev.c | 301 +++++++
.../platform/rockchip/rkcif/rkcif-interface.c | 425 ++++++++++
.../platform/rockchip/rkcif/rkcif-interface.h | 30 +
drivers/media/platform/rockchip/rkcif/rkcif-regs.h | 153 ++++
.../media/platform/rockchip/rkcif/rkcif-stream.c | 637 +++++++++++++++
.../media/platform/rockchip/rkcif/rkcif-stream.h | 31 +
drivers/media/platform/rockchip/rkcsi/Kconfig | 16 +
drivers/media/platform/rockchip/rkcsi/Makefile | 3 +
drivers/media/platform/rockchip/rkcsi/rkcsi.c | 741 ++++++++++++++++++
include/dt-bindings/media/video-interfaces.h | 4 +
30 files changed, 4977 insertions(+)
---
base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585
change-id: 20240220-rk3568-vicap-b9b3f9925f44
Best regards,
--
Michael Riesch <michael.riesch@collabora.com>
On 17/09/2025 16:38, Michael Riesch via B4 Relay wrote: > Habidere, > > This series introduces support for the Rockchip Camera Interface (CIF), > which is featured in many Rockchip SoCs in different variations. > For example, the PX30 Video Input Processor (VIP) is able to receive > video data via the Digital Video Port (DVP, a parallel data interface) > and transfer it into system memory using a double-buffering mechanism > called ping-pong mode. > The RK3568 Video Capture (VICAP) unit, on the other hand, features a > DVP and a MIPI CSI-2 receiver that can receive video data independently > (both using the ping-pong scheme). > The different variants may have additional features, such as scaling > and/or cropping. > Finally, the RK3588 VICAP unit constitutes an essential piece of the > camera interface with one DVP, six MIPI CSI-2 receivers, scale/crop > units, and a data path multiplexer (to scaler units, to ISP, ...). > > The v11 of the series adds a media controller centric V4L2 device driver > for the Rockchip CIF with > - support for the PX30 VIP (not tested, though, due to the lack of HW) > - support for the RK3568 VICAP, including > - capturing frames from the DVP > - capturing frames from the MIPI CSI-2 receiver > - abstraction for the ping-pong scheme to allow for future extensions > - abstraction for the INTERFACE and CROP parts to allow for future > extensions > - initial support for different virtual channels (not tested, though, > due to the lack of HW) > and a V4L2 subdevice driver for the Rockchip MIPI CSI-2 Receiver. > > The driver can be readily extended to provide support for the RK3588 > VICAP variant. In order to keep things simple, however, this extension > shall be submitted separately. > > Looking forward to your comments! > > To: Mehdi Djait<mehdi.djait@linux.intel.com> > To: Maxime Chevallier<maxime.chevallier@bootlin.com> > To: Théo Lebrun<theo.lebrun@bootlin.com> > To: Thomas Petazzoni<thomas.petazzoni@bootlin.com> > To: Gerald Loacker<gerald.loacker@wolfvision.net> > To: Bryan O'Donoghue<bryan.odonoghue@linaro.org> > To: Markus Elfring<Markus.Elfring@web.de> > To: Sakari Ailus<sakari.ailus@iki.fi> > To: Laurent Pinchart<laurent.pinchart@ideasonboard.com> > To: Mauro Carvalho Chehab<mchehab@kernel.org> > To: Rob Herring<robh+dt@kernel.org> > To: Krzysztof Kozlowski<krzk+dt@kernel.org> > To: Conor Dooley<conor+dt@kernel.org> > To: Heiko Stuebner<heiko@sntech.de> > To: Kever Yang<kever.yang@rock-chips.com> > To: Nicolas Dufresne<nicolas.dufresne@collabora.com> > To: Sebastian Reichel<sebastian.reichel@collabora.com> > To: Collabora Kernel Team<kernel@collabora.com> > To: Paul Kocialkowski<paulk@sys-base.io> > To: Alexander Shiyan<eagle.alexander923@gmail.com> > To: Val Packett<val@packett.cool> > To: Rob Herring<robh@kernel.org> > To: Philipp Zabel<p.zabel@pengutronix.de> > Cc:linux-media@vger.kernel.org > Cc:devicetree@vger.kernel.org > Cc:linux-kernel@vger.kernel.org > Cc:linux-arm-kernel@lists.infradead.org > Cc:linux-rockchip@lists.infradead.org > Signed-off-by: Michael Riesch<michael.riesch@wolfvision.net> > Signed-off-by: Michael Riesch<michael.riesch@collabora.com> > > Changes in v11: > - rkcif: split large driver patch (6/13 of v10) into smaller > patches (6-11/17 of v11) (Bryan) > - rkcsi: replaced devm_reset_control_array_get_exclusive with > devm_reset_control_get_exclusive (Philipp) > - Link to v10:https://lore.kernel.org/r/20240220-rk3568-vicap- > v10-0-62d8a7b209b4@collabora.com I believe it is the case and please feel free to correct me if I'm wrong that you've dropped a long list of sob/co-develop-by, I think we discussed that too, because of the level of change, it seems reasonable too. On question on that, are these people aware of the change and cc'd on the list of recipients/contactable/agreeable to the change ? --- bod
Hi Bryan, On 10/10/25 14:15, Bryan O'Donoghue wrote: > On 17/09/2025 16:38, Michael Riesch via B4 Relay wrote: >> Habidere, >> >> This series introduces support for the Rockchip Camera Interface (CIF), >> which is featured in many Rockchip SoCs in different variations. >> For example, the PX30 Video Input Processor (VIP) is able to receive >> video data via the Digital Video Port (DVP, a parallel data interface) >> and transfer it into system memory using a double-buffering mechanism >> called ping-pong mode. >> The RK3568 Video Capture (VICAP) unit, on the other hand, features a >> DVP and a MIPI CSI-2 receiver that can receive video data independently >> (both using the ping-pong scheme). >> The different variants may have additional features, such as scaling >> and/or cropping. >> Finally, the RK3588 VICAP unit constitutes an essential piece of the >> camera interface with one DVP, six MIPI CSI-2 receivers, scale/crop >> units, and a data path multiplexer (to scaler units, to ISP, ...). >> >> The v11 of the series adds a media controller centric V4L2 device driver >> for the Rockchip CIF with >> - support for the PX30 VIP (not tested, though, due to the lack of HW) >> - support for the RK3568 VICAP, including >> - capturing frames from the DVP >> - capturing frames from the MIPI CSI-2 receiver >> - abstraction for the ping-pong scheme to allow for future extensions >> - abstraction for the INTERFACE and CROP parts to allow for future >> extensions >> - initial support for different virtual channels (not tested, though, >> due to the lack of HW) >> and a V4L2 subdevice driver for the Rockchip MIPI CSI-2 Receiver. >> >> The driver can be readily extended to provide support for the RK3588 >> VICAP variant. In order to keep things simple, however, this extension >> shall be submitted separately. >> >> Looking forward to your comments! >> >> To: Mehdi Djait<mehdi.djait@linux.intel.com> >> To: Maxime Chevallier<maxime.chevallier@bootlin.com> >> To: Théo Lebrun<theo.lebrun@bootlin.com> >> To: Thomas Petazzoni<thomas.petazzoni@bootlin.com> >> To: Gerald Loacker<gerald.loacker@wolfvision.net> >> To: Bryan O'Donoghue<bryan.odonoghue@linaro.org> >> To: Markus Elfring<Markus.Elfring@web.de> >> To: Sakari Ailus<sakari.ailus@iki.fi> >> To: Laurent Pinchart<laurent.pinchart@ideasonboard.com> >> To: Mauro Carvalho Chehab<mchehab@kernel.org> >> To: Rob Herring<robh+dt@kernel.org> >> To: Krzysztof Kozlowski<krzk+dt@kernel.org> >> To: Conor Dooley<conor+dt@kernel.org> >> To: Heiko Stuebner<heiko@sntech.de> >> To: Kever Yang<kever.yang@rock-chips.com> >> To: Nicolas Dufresne<nicolas.dufresne@collabora.com> >> To: Sebastian Reichel<sebastian.reichel@collabora.com> >> To: Collabora Kernel Team<kernel@collabora.com> >> To: Paul Kocialkowski<paulk@sys-base.io> >> To: Alexander Shiyan<eagle.alexander923@gmail.com> >> To: Val Packett<val@packett.cool> >> To: Rob Herring<robh@kernel.org> >> To: Philipp Zabel<p.zabel@pengutronix.de> >> Cc:linux-media@vger.kernel.org >> Cc:devicetree@vger.kernel.org >> Cc:linux-kernel@vger.kernel.org >> Cc:linux-arm-kernel@lists.infradead.org >> Cc:linux-rockchip@lists.infradead.org >> Signed-off-by: Michael Riesch<michael.riesch@wolfvision.net> >> Signed-off-by: Michael Riesch<michael.riesch@collabora.com> >> >> Changes in v11: >> - rkcif: split large driver patch (6/13 of v10) into smaller >> patches (6-11/17 of v11) (Bryan) >> - rkcsi: replaced devm_reset_control_array_get_exclusive with >> devm_reset_control_get_exclusive (Philipp) >> - Link to v10:https://lore.kernel.org/r/20240220-rk3568-vicap- >> v10-0-62d8a7b209b4@collabora.com > > I believe it is the case and please feel free to correct me if I'm wrong > that you've dropped a long list of sob/co-develop-by, I think we > discussed that too, because of the level of change, it seems reasonable > too. Correct. The tag list used to be quite complicated [0] due to the complicated history of this driver. Maxime worked on the driver up to v5, Mehdi up to v14, I added RK3568 support on top of Mehdi's v14 (with some valuable contributions from Gerald) and submitted that as v1. v2 of my work incorporated Mehdi's v14, and here we are, after several rounds of feedback, at soon-to-be v12 (or, in fact, v25). > On question on that, are these people aware of the change and cc'd on > the list of recipients/contactable/agreeable to the change ? I announced this plan as a response to your comment to v10 [1] with Maxime, Mehdi and Gerald on Cc: and did not hear any objections. Hope that this is still OK for everybody! Best regards, Michael [0] https://lore.kernel.org/linux-media/20240220-rk3568-vicap-v10-6-62d8a7b209b4@collabora.com/ [1] https://lore.kernel.org/linux-media/23ccc744-745d-4a31-a79c-2d64bf1ed43d@collabora.com/
Hi Michael, Bryan, Am 10.10.2025 um 15:46 schrieb Michael Riesch: > Hi Bryan, > > On 10/10/25 14:15, Bryan O'Donoghue wrote: >> On 17/09/2025 16:38, Michael Riesch via B4 Relay wrote: >>> Habidere, >>> >>> This series introduces support for the Rockchip Camera Interface (CIF), >>> which is featured in many Rockchip SoCs in different variations. >>> For example, the PX30 Video Input Processor (VIP) is able to receive >>> video data via the Digital Video Port (DVP, a parallel data interface) >>> and transfer it into system memory using a double-buffering mechanism >>> called ping-pong mode. >>> The RK3568 Video Capture (VICAP) unit, on the other hand, features a >>> DVP and a MIPI CSI-2 receiver that can receive video data independently >>> (both using the ping-pong scheme). >>> The different variants may have additional features, such as scaling >>> and/or cropping. >>> Finally, the RK3588 VICAP unit constitutes an essential piece of the >>> camera interface with one DVP, six MIPI CSI-2 receivers, scale/crop >>> units, and a data path multiplexer (to scaler units, to ISP, ...). >>> >>> The v11 of the series adds a media controller centric V4L2 device driver >>> for the Rockchip CIF with >>> - support for the PX30 VIP (not tested, though, due to the lack of HW) >>> - support for the RK3568 VICAP, including >>> - capturing frames from the DVP >>> - capturing frames from the MIPI CSI-2 receiver >>> - abstraction for the ping-pong scheme to allow for future extensions >>> - abstraction for the INTERFACE and CROP parts to allow for future >>> extensions >>> - initial support for different virtual channels (not tested, though, >>> due to the lack of HW) >>> and a V4L2 subdevice driver for the Rockchip MIPI CSI-2 Receiver. >>> >>> The driver can be readily extended to provide support for the RK3588 >>> VICAP variant. In order to keep things simple, however, this extension >>> shall be submitted separately. >>> >>> Looking forward to your comments! >>> >>> To: Mehdi Djait<mehdi.djait@linux.intel.com> >>> To: Maxime Chevallier<maxime.chevallier@bootlin.com> >>> To: Théo Lebrun<theo.lebrun@bootlin.com> >>> To: Thomas Petazzoni<thomas.petazzoni@bootlin.com> >>> To: Gerald Loacker<gerald.loacker@wolfvision.net> >>> To: Bryan O'Donoghue<bryan.odonoghue@linaro.org> >>> To: Markus Elfring<Markus.Elfring@web.de> >>> To: Sakari Ailus<sakari.ailus@iki.fi> >>> To: Laurent Pinchart<laurent.pinchart@ideasonboard.com> >>> To: Mauro Carvalho Chehab<mchehab@kernel.org> >>> To: Rob Herring<robh+dt@kernel.org> >>> To: Krzysztof Kozlowski<krzk+dt@kernel.org> >>> To: Conor Dooley<conor+dt@kernel.org> >>> To: Heiko Stuebner<heiko@sntech.de> >>> To: Kever Yang<kever.yang@rock-chips.com> >>> To: Nicolas Dufresne<nicolas.dufresne@collabora.com> >>> To: Sebastian Reichel<sebastian.reichel@collabora.com> >>> To: Collabora Kernel Team<kernel@collabora.com> >>> To: Paul Kocialkowski<paulk@sys-base.io> >>> To: Alexander Shiyan<eagle.alexander923@gmail.com> >>> To: Val Packett<val@packett.cool> >>> To: Rob Herring<robh@kernel.org> >>> To: Philipp Zabel<p.zabel@pengutronix.de> >>> Cc:linux-media@vger.kernel.org >>> Cc:devicetree@vger.kernel.org >>> Cc:linux-kernel@vger.kernel.org >>> Cc:linux-arm-kernel@lists.infradead.org >>> Cc:linux-rockchip@lists.infradead.org >>> Signed-off-by: Michael Riesch<michael.riesch@wolfvision.net> >>> Signed-off-by: Michael Riesch<michael.riesch@collabora.com> >>> >>> Changes in v11: >>> - rkcif: split large driver patch (6/13 of v10) into smaller >>> patches (6-11/17 of v11) (Bryan) >>> - rkcsi: replaced devm_reset_control_array_get_exclusive with >>> devm_reset_control_get_exclusive (Philipp) >>> - Link to v10:https://lore.kernel.org/r/20240220-rk3568-vicap- >>> v10-0-62d8a7b209b4@collabora.com >> >> I believe it is the case and please feel free to correct me if I'm wrong >> that you've dropped a long list of sob/co-develop-by, I think we >> discussed that too, because of the level of change, it seems reasonable >> too. > > Correct. The tag list used to be quite complicated [0] due to the > complicated history of this driver. Maxime worked on the driver up to > v5, Mehdi up to v14, I added RK3568 support on top of Mehdi's v14 (with > some valuable contributions from Gerald) and submitted that as v1. v2 of > my work incorporated Mehdi's v14, and here we are, after several rounds > of feedback, at soon-to-be v12 (or, in fact, v25). > >> On question on that, are these people aware of the change and cc'd on >> the list of recipients/contactable/agreeable to the change ? > > I announced this plan as a response to your comment to v10 [1] with > Maxime, Mehdi and Gerald on Cc: and did not hear any objections. > > Hope that this is still OK for everybody! > I agree with that! Regards, Gerald > Best regards, > Michael > > [0] > https://lore.kernel.org/linux-media/20240220-rk3568-vicap-v10-6-62d8a7b209b4@collabora.com/ > [1] > https://lore.kernel.org/linux-media/23ccc744-745d-4a31-a79c-2d64bf1ed43d@collabora.com/ >
Hi Michael, Am 17.09.2025 um 17:38 schrieb Michael Riesch via B4 Relay: > Habidere, > > This series introduces support for the Rockchip Camera Interface (CIF), > which is featured in many Rockchip SoCs in different variations. > For example, the PX30 Video Input Processor (VIP) is able to receive > video data via the Digital Video Port (DVP, a parallel data interface) > and transfer it into system memory using a double-buffering mechanism > called ping-pong mode. > The RK3568 Video Capture (VICAP) unit, on the other hand, features a > DVP and a MIPI CSI-2 receiver that can receive video data independently > (both using the ping-pong scheme). > The different variants may have additional features, such as scaling > and/or cropping. > Finally, the RK3588 VICAP unit constitutes an essential piece of the > camera interface with one DVP, six MIPI CSI-2 receivers, scale/crop > units, and a data path multiplexer (to scaler units, to ISP, ...). > > The v11 of the series adds a media controller centric V4L2 device driver > for the Rockchip CIF with > - support for the PX30 VIP (not tested, though, due to the lack of HW) > - support for the RK3568 VICAP, including > - capturing frames from the DVP > - capturing frames from the MIPI CSI-2 receiver > - abstraction for the ping-pong scheme to allow for future extensions > - abstraction for the INTERFACE and CROP parts to allow for future > extensions > - initial support for different virtual channels (not tested, though, > due to the lack of HW) > and a V4L2 subdevice driver for the Rockchip MIPI CSI-2 Receiver. The entire patch series was applied and verified on Wolfvision PF5 hardware (with the Wolfvision PF5 IO Expander). In this configuration the DVP port is exercised via the IO expander, confirming that patches 07–11 function correctly on the target platform; no regressions were observed. The v10→v11 driver split preserves existing functionality while improving code readability and maintainability. Excellent work by the author. Regards, Gerald > > The driver can be readily extended to provide support for the RK3588 > VICAP variant. In order to keep things simple, however, this extension > shall be submitted separately. > > Looking forward to your comments! > > To: Mehdi Djait <mehdi.djait@linux.intel.com> > To: Maxime Chevallier <maxime.chevallier@bootlin.com> > To: Théo Lebrun <theo.lebrun@bootlin.com> > To: Thomas Petazzoni <thomas.petazzoni@bootlin.com> > To: Gerald Loacker <gerald.loacker@wolfvision.net> > To: Bryan O'Donoghue <bryan.odonoghue@linaro.org> > To: Markus Elfring <Markus.Elfring@web.de> > To: Sakari Ailus <sakari.ailus@iki.fi> > To: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > To: Mauro Carvalho Chehab <mchehab@kernel.org> > To: Rob Herring <robh+dt@kernel.org> > To: Krzysztof Kozlowski <krzk+dt@kernel.org> > To: Conor Dooley <conor+dt@kernel.org> > To: Heiko Stuebner <heiko@sntech.de> > To: Kever Yang <kever.yang@rock-chips.com> > To: Nicolas Dufresne <nicolas.dufresne@collabora.com> > To: Sebastian Reichel <sebastian.reichel@collabora.com> > To: Collabora Kernel Team <kernel@collabora.com> > To: Paul Kocialkowski <paulk@sys-base.io> > To: Alexander Shiyan <eagle.alexander923@gmail.com> > To: Val Packett <val@packett.cool> > To: Rob Herring <robh@kernel.org> > To: Philipp Zabel <p.zabel@pengutronix.de> > Cc: linux-media@vger.kernel.org > Cc: devicetree@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-rockchip@lists.infradead.org > Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net> > Signed-off-by: Michael Riesch <michael.riesch@collabora.com> > > Changes in v11: > - rkcif: split large driver patch (6/13 of v10) into smaller > patches (6-11/17 of v11) (Bryan) > - rkcsi: replaced devm_reset_control_array_get_exclusive with > devm_reset_control_get_exclusive (Philipp) > - Link to v10: https://lore.kernel.org/r/20240220-rk3568-vicap-v10-0-62d8a7b209b4@collabora.com > > Changes in v10: > - rkcsi: fixed error handling in rkcsi_start (Bryan) > - rkcsi: fixed interrupt references in device tree and bindings > (Rob's bot) > - added missing call to rkcif_mipi_stop_streaming from rkcif_mipi_isr > (Mehdi) > - renamed remaining instances "cif_" -> "rkcif_" in functions > - Link to v9: https://lore.kernel.org/r/20240220-rk3568-vicap-v9-0-ace1e5cc4a82@collabora.com > > Changes in v9: > - added compatible for RK3588 MIPI CSI-2 receiver, thus dropped > Krzysztof's R-b > - added interrupts to rkcsi DT binding and RK356x DT > - added variant specific callback to rkcif-capture-mipi that puts > together the CTRL0 register content (which varies between RK3568 > and RK3588) > - fixed v4l2_fill_pixfmt_mp() return value handling (Mehdi) > - Link to v8: https://lore.kernel.org/r/20240220-rk3568-vicap-v8-0-9d9cbc4b524d@collabora.com > > Changes in v8: > - rebased onto v6.16-rc1 > - fixed RKCIF_MIPI_MAX value in rkcif-common.h > - fixed rkcsi Kconfig (kernel test robot) > - sorted rkcsi DT bindings document properly, completed example > (Krzysztof) > - squashed the defconfig patches (Krzysztof), dropped Bryan's R-b > - Link to v7: https://lore.kernel.org/r/20240220-rk3568-vicap-v7-0-7581fd96a33a@collabora.com > > Changes in v7: > - moved MIPI CSI-2 receiver driver into separate directory (Laurent) > - rkcsi: fixed return values (Bryan) > - rkcsi: fixed v4l2_get_link_freq to use pad instead of control > handler (Sakari) > - rkcsi: added data-lanes property (Mehdi) > - rkcif: fixed formatting (Bryan) > - fixed "int" -> "unsigned int" in all for loops (Sakari) > - rkcif-stream: fixed minimum number of required buffers (Mehdi) > - rkcif-stream: used guards for the spinlock (Markus and Mehdi) > - rkcif-stream: made driver less noisy with dev_dbg (Mehdi) > - rkcif-stream: fixed issues detected by v4l2-compliance (Mehdi) > - rkcif-dvp-capture: fixed return value propagation in _register() > (Mehdi) > - removed stray "phy-names" from required properties (Rob's bot) > - Link to v6: https://lore.kernel.org/r/20240220-rk3568-vicap-v6-0-d2f5fbee1551@collabora.com > > Changes in v6: > - rebased onto v6.15-rc1 > - renamed "MIPI CSI HOST" -> "MIPI CSI RECEIVER" (Laurent) > - s/@wolfvision.net/@collabora.com where appropriate > - renamed DVP delay property and moved it to the endpoint (Sakari) > - implemented DT review comments (Krzysztof and Sakari) > - implemented driver review comments (Sakari) > - fixed issues raised by media-ci (yet again) > - added documentation including a RK3568 topology (new patch 1) > (Sakari) > - added patch that enables rkcif in the defconfig (new patch 9) > - Link to v5: https://lore.kernel.org/r/20250306-v6-8-topic-rk3568-vicap-v5-0-f02152534f3c@wolfvision.net > > Changes in v5: > - fixed issues raised by media-ci > - fixed dt bindings (comments by Rob and Sakari) > - fixed probe on systems with no DVP in DT (comment by Alexander) > - fixed error path in register offset calculation > - split off MIPI CSI host driver into separate module (comment > by Mehdi) > - added MODULE_DEVICE_TABLE() for both drivers (comment by Mehdi) > - Link to v4: https://lore.kernel.org/r/20250219-v6-8-topic-rk3568-vicap-v4-0-e906600ae3b0@wolfvision.net > > Changes in v4: > - added support for the MIPI CSI-2 receiver (new patches 4, 6, 7, 10) > - fixed asserts on stream stop > - fixed register address lookup > - fixed link validiation callback > - fixed issues raised by Rob's bot, kernel test robot, and media-ci > - Link to v3: https://lore.kernel.org/r/20250206-v6-8-topic-rk3568-vicap-v3-0-69d1f19e5c40@wolfvision.net > > Changes in v3: > - renamed the driver "cif" -> "rkcif" > - rebased onto v6.14-rc1 > - abstracted the generic INTERFACE+CROP part > - addressed comments by Rob and Sakari > - added V4L2 MPLANE formats to DVP > - added patch that enables the RK3568 VICAP DVP on PF5 IO Expander > - fixed formatting issues raised by media-ci bot > - Link to v2: https://lore.kernel.org/r/20241217-v6-8-topic-rk3568-vicap-v2-0-b1d488fcc0d3@wolfvision.net > > Changes in v2: > - merged with Mehdi's v13 > - refactored the complete driver towards a media controller centric driver > - abstracted the generic ping-pong stream (can be used for DVP as well as for CSI-2) > - switched to MPLANE API > - added support for notifications > - Link to v1: https://lore.kernel.org/r/20240220-v6-8-topic-rk3568-vicap-v1-0-2680a1fa640b@wolfvision.net > > --- > Mehdi Djait (2): > media: dt-bindings: add rockchip px30 vip > arm64: dts: rockchip: add the vip node to px30 > > Michael Riesch (15): > Documentation: admin-guide: media: add rockchip camera interface > media: dt-bindings: video-interfaces: add defines for sampling modes > media: dt-bindings: add rockchip rk3568 vicap > media: dt-bindings: add rockchip rk3568 mipi csi-2 receiver > media: rockchip: add driver for the rockchip mipi csi-2 receiver > media: rockchip: add driver for the rockchip camera interface > media: rockchip: rkcif: add abstraction for interface and crop blocks > media: rockchip: rkcif: add abstraction for dma blocks > media: rockchip: rkcif: add support for px30 vip dvp capture > media: rockchip: rkcif: add support for rk3568 vicap dvp capture > media: rockchip: rkcif: add support for rk3568 vicap mipi capture > arm64: defconfig: enable rockchip camera interface and mipi csi-2 receiver > arm64: dts: rockchip: add vicap node to rk356x > arm64: dts: rockchip: add mipi csi-2 receiver node to rk356x > arm64: dts: rockchip: enable vicap dvp on wolfvision pf5 io expander > > .../admin-guide/media/rkcif-rk3568-vicap.dot | 21 + > Documentation/admin-guide/media/rkcif.rst | 83 ++ > Documentation/admin-guide/media/v4l-drivers.rst | 1 + > .../bindings/media/rockchip,px30-vip.yaml | 122 +++ > .../bindings/media/rockchip,rk3568-mipi-csi.yaml | 144 ++++ > .../bindings/media/rockchip,rk3568-vicap.yaml | 170 ++++ > MAINTAINERS | 17 + > arch/arm64/boot/dts/rockchip/px30.dtsi | 12 + > .../rk3568-wolfvision-pf5-io-expander.dtso | 20 + > arch/arm64/boot/dts/rockchip/rk356x-base.dtsi | 78 ++ > arch/arm64/configs/defconfig | 2 + > drivers/media/platform/rockchip/Kconfig | 2 + > drivers/media/platform/rockchip/Makefile | 2 + > drivers/media/platform/rockchip/rkcif/Kconfig | 18 + > drivers/media/platform/rockchip/rkcif/Makefile | 8 + > .../platform/rockchip/rkcif/rkcif-capture-dvp.c | 864 +++++++++++++++++++++ > .../platform/rockchip/rkcif/rkcif-capture-dvp.h | 24 + > .../platform/rockchip/rkcif/rkcif-capture-mipi.c | 777 ++++++++++++++++++ > .../platform/rockchip/rkcif/rkcif-capture-mipi.h | 22 + > .../media/platform/rockchip/rkcif/rkcif-common.h | 249 ++++++ > drivers/media/platform/rockchip/rkcif/rkcif-dev.c | 301 +++++++ > .../platform/rockchip/rkcif/rkcif-interface.c | 425 ++++++++++ > .../platform/rockchip/rkcif/rkcif-interface.h | 30 + > drivers/media/platform/rockchip/rkcif/rkcif-regs.h | 153 ++++ > .../media/platform/rockchip/rkcif/rkcif-stream.c | 637 +++++++++++++++ > .../media/platform/rockchip/rkcif/rkcif-stream.h | 31 + > drivers/media/platform/rockchip/rkcsi/Kconfig | 16 + > drivers/media/platform/rockchip/rkcsi/Makefile | 3 + > drivers/media/platform/rockchip/rkcsi/rkcsi.c | 741 ++++++++++++++++++ > include/dt-bindings/media/video-interfaces.h | 4 + > 30 files changed, 4977 insertions(+) > --- > base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585 > change-id: 20240220-rk3568-vicap-b9b3f9925f44 > > Best regards,
© 2016 - 2026 Red Hat, Inc.