[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <8facac3f-6054-45ce-822c-35f20be813ab@linaro.org>
Date: Tue, 14 Oct 2025 22:14:41 +0100
From: Bryan O'Donoghue <bryan.odonoghue@...aro.org>
To: michael.riesch@...labora.com, Mehdi Djait <mehdi.djait@...ux.intel.com>,
Maxime Chevallier <maxime.chevallier@...tlin.com>,
Théo Lebrun <theo.lebrun@...tlin.com>,
Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
Gerald Loacker <gerald.loacker@...fvision.net>,
Bryan O'Donoghue <bryan.odonoghue@...aro.org>,
Markus Elfring <Markus.Elfring@....de>,
Laurent Pinchart <laurent.pinchart@...asonboard.com>,
Mauro Carvalho Chehab <mchehab@...nel.org>, Rob Herring
<robh+dt@...nel.org>, Krzysztof Kozlowski <krzk+dt@...nel.org>,
Conor Dooley <conor+dt@...nel.org>, Heiko Stuebner <heiko@...ech.de>,
Kever Yang <kever.yang@...k-chips.com>,
Nicolas Dufresne <nicolas.dufresne@...labora.com>,
Sebastian Reichel <sebastian.reichel@...labora.com>,
Collabora Kernel Team <kernel@...labora.com>,
Paul Kocialkowski <paulk@...-base.io>,
Alexander Shiyan <eagle.alexander923@...il.com>,
Val Packett <val@...kett.cool>, Rob Herring <robh@...nel.org>,
Philipp Zabel <p.zabel@...gutronix.de>,
Sakari Ailus <sakari.ailus@...ux.intel.com>
Cc: linux-media@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-rockchip@...ts.infradead.org, Mehdi Djait <mehdi.djait@...tlin.com>,
Krzysztof Kozlowski <krzysztof.kozlowski@...aro.org>
Subject: Re: [PATCH v12 00/18] media: rockchip: add a driver for the rockchip
camera interface
On 14/10/2025 14:01, 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 v12 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 RK3568 DVP has been tested by Gerald on a WolfVision PF5 hardware,
> the RK3568 MIPI CSI-2 have been tested by me on a Radxa ROCK 3A + Radxa
> Camera 8M.
>
> 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@...ux.intel.com>
> To: Maxime Chevallier <maxime.chevallier@...tlin.com>
> To: Théo Lebrun <theo.lebrun@...tlin.com>
> To: Thomas Petazzoni <thomas.petazzoni@...tlin.com>
> To: Gerald Loacker <gerald.loacker@...fvision.net>
> To: Bryan O'Donoghue <bryan.odonoghue@...aro.org>
> To: Markus Elfring <Markus.Elfring@....de>
> To: Sakari Ailus <sakari.ailus@....fi>
> To: Laurent Pinchart <laurent.pinchart@...asonboard.com>
> To: Mauro Carvalho Chehab <mchehab@...nel.org>
> To: Rob Herring <robh+dt@...nel.org>
> To: Krzysztof Kozlowski <krzk+dt@...nel.org>
> To: Conor Dooley <conor+dt@...nel.org>
> To: Heiko Stuebner <heiko@...ech.de>
> To: Kever Yang <kever.yang@...k-chips.com>
> To: Nicolas Dufresne <nicolas.dufresne@...labora.com>
> To: Sebastian Reichel <sebastian.reichel@...labora.com>
> To: Collabora Kernel Team <kernel@...labora.com>
> To: Paul Kocialkowski <paulk@...-base.io>
> To: Alexander Shiyan <eagle.alexander923@...il.com>
> To: Val Packett <val@...kett.cool>
> To: Rob Herring <robh@...nel.org>
> To: Philipp Zabel <p.zabel@...gutronix.de>
> Cc: linux-media@...r.kernel.org
> Cc: devicetree@...r.kernel.org
> Cc: linux-kernel@...r.kernel.org
> Cc: linux-arm-kernel@...ts.infradead.org
> Cc: linux-rockchip@...ts.infradead.org
> Signed-off-by: Michael Riesch <michael.riesch@...fvision.net>
> Signed-off-by: Michael Riesch <michael.riesch@...labora.com>
>
> Changes in v12:
> - added Radxa Camera 8M device tree overlay
> - rebased onto v6.18-rc1
> - fixed IOMMU pagefaults caused by wrong VLW (Mehdi)
> - fixed indentation of register defines in -regs.h (Sakari)
> - renamed CSI-2 receiver interrupts (Rob)
> - added MEDIA_BUS_TYPE_* as comments in DT bindings (Bryan)
> - added newline in rkcif-dev.c (Bryan)
> - Link to v11: https://lore.kernel.org/r/20240220-rk3568-vicap-v11-0-af0eada54e5d@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/@...fvision.net/@...labora.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 (16):
> 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
> arm64: dts: rockchip: add overlay for radxa camera 8m
>
> .../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 | 124 +++
> .../bindings/media/rockchip,rk3568-mipi-csi.yaml | 146 ++++
> .../bindings/media/rockchip,rk3568-vicap.yaml | 172 ++++
> MAINTAINERS | 17 +
> arch/arm64/boot/dts/rockchip/Makefile | 5 +
> arch/arm64/boot/dts/rockchip/px30.dtsi | 12 +
> .../dts/rockchip/rk3568-rock-3a-radxa-cam8m.dtso | 90 +++
> .../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 | 865 +++++++++++++++++++++
> .../platform/rockchip/rkcif/rkcif-capture-dvp.h | 25 +
> .../platform/rockchip/rkcif/rkcif-capture-mipi.c | 777 ++++++++++++++++++
> .../platform/rockchip/rkcif/rkcif-capture-mipi.h | 23 +
> .../media/platform/rockchip/rkcif/rkcif-common.h | 250 ++++++
> drivers/media/platform/rockchip/rkcif/rkcif-dev.c | 303 ++++++++
> .../platform/rockchip/rkcif/rkcif-interface.c | 426 ++++++++++
> .../platform/rockchip/rkcif/rkcif-interface.h | 31 +
> drivers/media/platform/rockchip/rkcif/rkcif-regs.h | 153 ++++
> .../media/platform/rockchip/rkcif/rkcif-stream.c | 638 +++++++++++++++
> .../media/platform/rockchip/rkcif/rkcif-stream.h | 32 +
> drivers/media/platform/rockchip/rkcsi/Kconfig | 16 +
> drivers/media/platform/rockchip/rkcsi/Makefile | 3 +
> drivers/media/platform/rockchip/rkcsi/rkcsi.c | 742 ++++++++++++++++++
> include/dt-bindings/media/video-interfaces.h | 4 +
> 32 files changed, 5089 insertions(+)
> ---
> base-commit: 3a8660878839faadb4f1a6dd72c3179c1df56787
> change-id: 20240220-rk3568-vicap-b9b3f9925f44
>
> Best regards,
> --
> Michael Riesch <michael.riesch@...labora.com>
>
>
>
This series feels like it needs to be merged....
Reviewed-by: Bryan O'Donoghue <bryan.odonoghue@...aro.org>
Powered by blists - more mailing lists