From: Michael Riesch <michael.riesch@collabora.com>
To: Sakari Ailus <sakari.ailus@linux.intel.com>
Cc: "Laurent Pinchart" <laurent.pinchart@ideasonboard.com>,
"Mehdi Djait" <mehdi.djait@linux.intel.com>,
"Maxime Chevallier" <maxime.chevallier@bootlin.com>,
"Théo Lebrun" <theo.lebrun@bootlin.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
"Gerald Loacker" <gerald.loacker@wolfvision.net>,
"Bryan O'Donoghue" <bryan.odonoghue@linaro.org>,
"Markus Elfring" <Markus.Elfring@web.de>,
"Mauro Carvalho Chehab" <mchehab@kernel.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Heiko Stuebner" <heiko@sntech.de>,
"Kever Yang" <kever.yang@rock-chips.com>,
"Nicolas Dufresne" <nicolas.dufresne@collabora.com>,
"Sebastian Reichel" <sebastian.reichel@collabora.com>,
"Collabora Kernel Team" <kernel@collabora.com>,
"Paul Kocialkowski" <paulk@sys-base.io>,
"Alexander Shiyan" <eagle.alexander923@gmail.com>,
"Val Packett" <val@packett.cool>, "Rob Herring" <robh@kernel.org>,
"Philipp Zabel" <p.zabel@pengutronix.de>,
linux-media@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-rockchip@lists.infradead.org,
"Mehdi Djait" <mehdi.djait@bootlin.com>,
"Krzysztof Kozlowski" <krzysztof.kozlowski@linaro.org>,
"Bryan O'Donoghue" <bod@kernel.org>,
"Chen-Yu Tsai" <wens@csie.org>
Subject: Re: [PATCH v14 00/18] media: rockchip: add a driver for the rockchip camera interface
Date: Mon, 10 Nov 2025 11:29:57 +0100 [thread overview]
Message-ID: <b89746e1-4574-4b65-af69-c533576ed185@collabora.com> (raw)
In-Reply-To: <aRGlvQRVoQs0WjyA@kekkonen.localdomain>
Hi Sakari,
On 11/10/25 09:43, Sakari Ailus wrote:
> Hi Michael, Laurent,
>
> On Fri, Nov 07, 2025 at 09:51:37PM +0100, Michael Riesch wrote:
>> Hi Laurent,
>>
>> On 11/7/25 19:54, Laurent Pinchart wrote:
>>> On Fri, Nov 07, 2025 at 07:41:59PM +0100, Michael Riesch wrote:
>>>> On 11/7/25 18:32, Sakari Ailus wrote:
>>>>> On Fri, Oct 24, 2025 at 02:51:29PM +0200, 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, ...).
>>>>>
>>>>> I understand both RK3568 and RK3588 include an ISP. Do you have insight on
>>>>> how would this work, should the support for the ISP be added later on?
>>>>
>>>> Short answer: Yes and yes.
>>>>
>>>> Long answer:
>>>>
>>>> The patch series at hand adds support for the PX30 VIP and the RK3568
>>>> VICAP. I cannot really say something about the PX30, but on the RK3568
>>>> VICAP and ISP are orthogonal (the ISP features its own MIPI CSI-2
>>>> receiver, different from that introduced in this series). Thus, ISP
>>>> support can be introduced anytime (whenever someone is motivated ;-)).
>>>
>>> Won't they both be connected to the same sensor though, and probably the
>>> same D-PHY in the SoC ? They don't seem entirely separate to me.
>>
>> The MIPI CSI-2 DPHY is shared, indeed. Thus, they *maybe technically
>> could be* connected to the same sensor, but I don't know whether that
>> works and fail to see why anyone would to such a thing (if it is about
>> raw capture, the MIPI CSI-2 receiver in the ISP can do that on its own).
>>
>> The DPHY can be operated in split mode, with two lanes for VICAP and two
>> lanes for ISP. This is not implemented yet, but can be done at a later
>> stage on PHY level (not media related). In this case, ISP and VICAP can
>> receive data from different subdevices via CSI-2.
>
> The two would be part of the same media graph in that case and as there are
> two CSI-2 receivers and a single PHY, the PHY would probably need to have a
> sub-device as well, to allow link configuration to be used to select where
> the PHY is connected.
>
> I don't think we have such a setup elsewhere, and supporting this would
> require changes in the MC framework.
What follows is a response that also addresses issues raised during our
off-list discussion.
First of all, I agree with you that the RK3568 HW is "a bit special" (to
say the least) in that regard. Let's have an outlook to newer SoCs, such
as the RK3588: Here, the MIPI CSI-2 DPHYs (there are two of them) with
their split mode are present as well, but the assignment is fixed. For
example, the RK3588 VICAP has six MIPI CSI-2 receiver units and six MIPI
CSI-2 capture units. Units 1 and 2 handle a different MIPI PHY, units 3
and 5 handle the DPHYs (without split mode), units 4 and/or 6 are active
whenever DPHY 1 and/or 2 is in split mode.
I would model this by adding support for more than one (logical) PHYs
(phy-cells = <1>;) and assigning the logical PHYs to the MIPI CSI-2
receivers. There is not really a possibility to route anything at this
point (routing is done in a MUX unit that takes the different MIPI CSI-2
receivers as inputs).
Now back to the peculiar RK3568 situation: By default the split mode of
the DPHY is off and both VICAP and ISP are able to receive the same data
(from up to four lanes) with their MIPI CSI-2 receivers (not sure
whether both can be active at the same time, though). There are two bits
in the GRF that define the lanes that ISP and VICAP receive in split
mode (lane 0/1 or lane 2/3). Not sure whether these bits are supposed to
be changed during runtime.
I would suggest modelling this on PHY level in DT, e.g., by passing
reasonable properties to the dphy node, such as
rockchip,dphy-split-mode;
rockchip,dphy-split-invert;
where the former activates the split mode and assigns lanes 0/1 to the
ISP and lanes 2/3 to the VICAP, and the latter inverts this assignment
(lanes 2/3 to the ISP and lanes 0/1 to the VICAP). This would facilitate
the reasonable use cases with reasonable effort.
Otherwise, to keep it perfectly general and most flexible and
everything, we would have to introduce another subdevice indeed, which
would be active on the RK3568 exclusively. Therefore, I don't see that
the PHY driver introduces this subdevice, but a specialized (syscon?)
MUX driver that deals with the RK3568 GRF bits. Something like this
|----------------------| |-------------|
Sensor A --- /2 lanes --- | lane 0/1 to ISP | --- | ISP MIPI RX |
| | |-------------|
| |
| | |-------------|
Sensor B --- /2 lanes --- | lane 2/3 to VICAP | --- |VICAP MIPI RX|
|----------------------| |-------------|
But IMHO this will be too much effort for corner use case that I doubt
anyone will actually use.
What do you think:
- Let's keep the PHYs out of V4L2/MC, ok?
- Let's model the reasonable use cases with device tree properties in
the dphy DT node, ok?
> How does the media graph look like for the device at the moment?
Please take a look at the media graph in the documentation patch (PATCH
v14 01/18). This is without the ISP, but gives an overview of what the
RK3568 VICAP is capable of.
Best regards,
Michael
>
>>
>> BTW the ISP is able to process the data captured by VICAP, but
>> apparently this includes a RAM round trip (VICAP captures to memory, ISP
>> operates in mem2mem mode).
>>
>>> A block diagram that shows connections between the CSI-2 pins, D-PHY,
>>> CSI-2 receivers, VICAP and ISP could help.
>>>
>>>> Once this patch series is merged, I'll push out changes that introduce
>>>> support for the RK3588 VICAP. We can discuss the integration of any
>>>> RK3588 ISP in this scope then -- and there may be some things to discuss
>>>> as there the VICAP and the ISP(s) are directly connected by means of a
>>>> MUX unit in the VICAP.
>>>>
>>>> Alright?
>>>
>
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2025-11-10 10:30 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-24 12:51 [PATCH v14 00/18] media: rockchip: add a driver for the rockchip camera interface Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 01/18] Documentation: admin-guide: media: add " Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 02/18] media: dt-bindings: video-interfaces: add defines for sampling modes Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 03/18] media: dt-bindings: add rockchip px30 vip Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 04/18] media: dt-bindings: add rockchip rk3568 vicap Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 05/18] media: dt-bindings: add rockchip rk3568 mipi csi-2 receiver Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 06/18] media: rockchip: add driver for the rockchip " Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 07/18] media: rockchip: add driver for the rockchip camera interface Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 08/18] media: rockchip: rkcif: add abstraction for interface and crop blocks Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 09/18] media: rockchip: rkcif: add abstraction for dma blocks Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 10/18] media: rockchip: rkcif: add support for px30 vip dvp capture Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 11/18] media: rockchip: rkcif: add support for rk3568 vicap " Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 12/18] media: rockchip: rkcif: add support for rk3568 vicap mipi capture Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 13/18] arm64: defconfig: enable rockchip camera interface and mipi csi-2 receiver Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 14/18] arm64: dts: rockchip: add the vip node to px30 Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 15/18] arm64: dts: rockchip: add vicap node to rk356x Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 16/18] arm64: dts: rockchip: add mipi csi-2 receiver " Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 17/18] arm64: dts: rockchip: enable vicap dvp on wolfvision pf5 io expander Michael Riesch via B4 Relay
2025-10-24 12:51 ` [PATCH v14 18/18] arm64: dts: rockchip: add radxa camera 8m on rock 3a csi port Michael Riesch via B4 Relay
2025-10-24 12:57 ` [PATCH v14 00/18] media: rockchip: add a driver for the rockchip camera interface Michael Riesch
2025-11-07 17:32 ` Sakari Ailus
2025-11-07 18:41 ` Michael Riesch
2025-11-07 18:54 ` Laurent Pinchart
2025-11-07 20:51 ` Michael Riesch
2025-11-10 8:43 ` Sakari Ailus
2025-11-10 10:29 ` Michael Riesch [this message]
2025-11-11 0:06 ` Laurent Pinchart
2025-11-11 8:37 ` Michael Riesch
2025-11-11 10:42 ` Michael Riesch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b89746e1-4574-4b65-af69-c533576ed185@collabora.com \
--to=michael.riesch@collabora.com \
--cc=Markus.Elfring@web.de \
--cc=bod@kernel.org \
--cc=bryan.odonoghue@linaro.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=eagle.alexander923@gmail.com \
--cc=gerald.loacker@wolfvision.net \
--cc=heiko@sntech.de \
--cc=kernel@collabora.com \
--cc=kever.yang@rock-chips.com \
--cc=krzk+dt@kernel.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=maxime.chevallier@bootlin.com \
--cc=mchehab@kernel.org \
--cc=mehdi.djait@bootlin.com \
--cc=mehdi.djait@linux.intel.com \
--cc=nicolas.dufresne@collabora.com \
--cc=p.zabel@pengutronix.de \
--cc=paulk@sys-base.io \
--cc=robh+dt@kernel.org \
--cc=robh@kernel.org \
--cc=sakari.ailus@linux.intel.com \
--cc=sebastian.reichel@collabora.com \
--cc=theo.lebrun@bootlin.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=val@packett.cool \
--cc=wens@csie.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox