From: Michael Riesch <michael.riesch@collabora.com>
Add documentation for the Rockchip RK3588 Video Capture (VICAP) unit.
To that end, make the existing rockchip,rk3568-vicap documentation
more general and introduce variant specific constraints.
Signed-off-by: Michael Riesch <michael.riesch@collabora.com>
---
.../bindings/media/rockchip,rk3568-vicap.yaml | 191 ++++++++++++++++++---
1 file changed, 167 insertions(+), 24 deletions(-)
diff --git a/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml b/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml
index 18cd0a5a5318..15a889ff8e52 100644
--- a/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml
+++ b/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml
@@ -15,9 +15,15 @@ description:
the data from camera sensors, video decoders, or other companion ICs and
transfers it into system main memory by AXI bus.
+ The Rockchip RK3588 Video Capture (VICAP) is similar to its RK3568
+ counterpart, but features six MIPI CSI-2 ports and additional connections
+ to the image signal processor (ISP) blocks.
+
properties:
compatible:
- const: rockchip,rk3568-vicap
+ enum:
+ - rockchip,rk3568-vicap
+ - rockchip,rk3588-vicap
reg:
maxItems: 1
@@ -26,37 +32,23 @@ properties:
maxItems: 1
clocks:
- items:
- - description: ACLK
- - description: HCLK
- - description: DCLK
- - description: ICLK
+ minItems: 4
+ maxItems: 5
clock-names:
- items:
- - const: aclk
- - const: hclk
- - const: dclk
- - const: iclk
+ minItems: 4
+ maxItems: 5
iommus:
maxItems: 1
resets:
- items:
- - description: ARST
- - description: HRST
- - description: DRST
- - description: PRST
- - description: IRST
+ minItems: 5
+ maxItems: 9
reset-names:
- items:
- - const: arst
- - const: hrst
- - const: drst
- - const: prst
- - const: irst
+ minItems: 5
+ maxItems: 9
rockchip,grf:
$ref: /schemas/types.yaml#/definitions/phandle
@@ -67,8 +59,15 @@ properties:
ports:
$ref: /schemas/graph.yaml#/properties/ports
+ additionalProperties: false
properties:
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
port@0:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
@@ -100,13 +99,75 @@ properties:
port@1:
$ref: /schemas/graph.yaml#/properties/port
- description: Port connected to the MIPI CSI-2 receiver output.
+ description: Port connected to the MIPI CSI-2 receiver 0 output.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ port@2:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Port connected to the MIPI CSI-2 receiver 1 output.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ port@3:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Port connected to the MIPI CSI-2 receiver 2 output.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ port@4:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Port connected to the MIPI CSI-2 receiver 3 output.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ port@5:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Port connected to the MIPI CSI-2 receiver 4 output.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ port@6:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Port connected to the MIPI CSI-2 receiver 5 output.
properties:
endpoint:
$ref: video-interfaces.yaml#
unevaluatedProperties: false
+ port@10:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Port connected to the ISP0 input.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
+
+ port@11:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Port connected to the ISP1 input.
+
+ properties:
+ endpoint:
+ $ref: video-interfaces.yaml#
+ unevaluatedProperties: false
required:
- compatible
- reg
@@ -114,6 +175,88 @@ required:
- clocks
- ports
+allOf:
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: rockchip,rk3568-vicap
+ then:
+ properties:
+ clocks:
+ minItems: 4
+ maxItems: 4
+
+ clock-names:
+ items:
+ - const: aclk
+ - const: hclk
+ - const: dclk
+ - const: iclk
+
+ resets:
+ minItems: 5
+ maxItems: 5
+
+ reset-names:
+ items:
+ - const: arst
+ - const: hrst
+ - const: drst
+ - const: prst
+ - const: irst
+
+ ports:
+ properties:
+ port@2: false
+
+ port@3: false
+
+ port@4: false
+
+ port@5: false
+
+ port@6: false
+
+ port@10: false
+
+ port@11: false
+
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: rockchip,rk3588-vicap
+ then:
+ properties:
+ clocks:
+ minItems: 5
+ maxItems: 5
+
+ clock-names:
+ items:
+ - const: aclk
+ - const: hclk
+ - const: dclk
+ - const: iclk0
+ - const: iclk1
+
+ resets:
+ minItems: 9
+ maxItems: 9
+
+ reset-names:
+ items:
+ - const: arst
+ - const: hrst
+ - const: drst
+ - const: irst0
+ - const: irst1
+ - const: irst2
+ - const: irst3
+ - const: irst4
+ - const: irst5
+
additionalProperties: false
examples:
--
2.39.5
On Tue, Mar 17, 2026 at 10:32:20AM +0100, Michael Riesch via B4 Relay wrote: > From: Michael Riesch <michael.riesch@collabora.com> > > Add documentation for the Rockchip RK3588 Video Capture (VICAP) unit. > To that end, make the existing rockchip,rk3568-vicap documentation > more general and introduce variant specific constraints. > > Signed-off-by: Michael Riesch <michael.riesch@collabora.com> > --- > .../bindings/media/rockchip,rk3568-vicap.yaml | 191 ++++++++++++++++++--- > 1 file changed, 167 insertions(+), 24 deletions(-) > > diff --git a/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml b/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml > index 18cd0a5a5318..15a889ff8e52 100644 > --- a/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml > +++ b/Documentation/devicetree/bindings/media/rockchip,rk3568-vicap.yaml > @@ -15,9 +15,15 @@ description: > the data from camera sensors, video decoders, or other companion ICs and > transfers it into system main memory by AXI bus. > > + The Rockchip RK3588 Video Capture (VICAP) is similar to its RK3568 > + counterpart, but features six MIPI CSI-2 ports and additional connections > + to the image signal processor (ISP) blocks. > + > properties: > compatible: > - const: rockchip,rk3568-vicap > + enum: > + - rockchip,rk3568-vicap > + - rockchip,rk3588-vicap > > reg: > maxItems: 1 > @@ -26,37 +32,23 @@ properties: > maxItems: 1 > > clocks: > - items: > - - description: ACLK > - - description: HCLK > - - description: DCLK > - - description: ICLK > + minItems: 4 > + maxItems: 5 > > clock-names: > - items: > - - const: aclk > - - const: hclk > - - const: dclk > - - const: iclk > + minItems: 4 > + maxItems: 5 > > iommus: > maxItems: 1 > > resets: > - items: > - - description: ARST > - - description: HRST > - - description: DRST > - - description: PRST > - - description: IRST > + minItems: 5 > + maxItems: 9 > > reset-names: > - items: > - - const: arst > - - const: hrst > - - const: drst > - - const: prst > - - const: irst > + minItems: 5 > + maxItems: 9 > +allOf: > + - if: > + properties: > + compatible: > + contains: > + const: rockchip,rk3568-vicap > + then: > + properties: > + clocks: > + minItems: 4 > + maxItems: 4 Anything here that repeats the outermost constraint should be dropped, so no minItems here.. > + > + clock-names: > + items: > + - const: aclk > + - const: hclk > + - const: dclk > + - const: iclk > + > + resets: > + minItems: 5 > + maxItems: 5 ...or here... > + > + reset-names: > + items: > + - const: arst > + - const: hrst > + - const: drst > + - const: prst > + - const: irst > + - if: > + properties: > + compatible: > + contains: > + const: rockchip,rk3588-vicap > + then: > + properties: > + clocks: > + minItems: 5 > + maxItems: 5 ...or maxItems here... > + > + clock-names: > + items: > + - const: aclk > + - const: hclk > + - const: dclk > + - const: iclk0 > + - const: iclk1 > + > + resets: > + minItems: 9 > + maxItems: 9 ...or here. > + > + reset-names: > + items: > + - const: arst > + - const: hrst > + - const: drst > + - const: irst0 Were you willing to reuse "irst" for the 0th irst, all the repetition wouldn't be needed. I assume it represents the reset for the port at address 0, so it wouldn't even be a different meaning on each device. > + - const: irst1 > + - const: irst2 > + - const: irst3 > + - const: irst4 > + - const: irst5 > + > additionalProperties: false > > examples: > > -- > 2.39.5 > >
Hi Conor,
On 3/18/26 18:52, Conor Dooley wrote:
> [...]
>>
>> resets:
>> - items:
>> - - description: ARST
>> - - description: HRST
>> - - description: DRST
>> - - description: PRST
>> - - description: IRST
>> + minItems: 5
>> + maxItems: 9
>>
>> reset-names:
>> - items:
>> - - const: arst
>> - - const: hrst
>> - - const: drst
>> - - const: prst
>> - - const: irst
>> + minItems: 5
>> + maxItems: 9
>
>> +allOf:
>> + - if:
>> + properties:
>> + compatible:
>> + contains:
>> + const: rockchip,rk3568-vicap
>> + then:
>> + properties:
>> + clocks:
>> + minItems: 4
>> + maxItems: 4
>
> Anything here that repeats the outermost constraint should be dropped,
> so no minItems here..
I already took a look at similar VICAPs (e.g., R3576) that will have
more clocks. This is way I left this one in here.
But I guess I will remove it and add it again when e.g. RK3576 VICAP
support is added.
>> [...]
>
>> +
>> + reset-names:
>> + items:
>> + - const: arst
>> + - const: hrst
>> + - const: drst
>> + - const: irst0
>
> Were you willing to reuse "irst" for the 0th irst, all the repetition
> wouldn't be needed. I assume it represents the reset for the port at
> address 0, so it wouldn't even be a different meaning on each device.
Not quite I think. "{a,h,d}rst" are the same on all variants, then there
is "prst" and "irst" on RK3568 and "irst{0-5}" on RK3588. So I thought
that writing it out explicitly for each variant is more readable (even
though it may need a few characters more).
OK?
I'll try to send out a new version later today.
Best regards,
Michael
>
>> + - const: irst1
>> + - const: irst2
>> + - const: irst3
>> + - const: irst4
>> + - const: irst5
>> +
>> additionalProperties: false
>>
>> examples:
>>
>> --
>> 2.39.5
>>
>>
On Thu, Mar 19, 2026 at 09:04:06AM +0100, Michael Riesch wrote:
> Hi Conor,
>
> On 3/18/26 18:52, Conor Dooley wrote:
> > [...]
> >>
> >> resets:
> >> - items:
> >> - - description: ARST
> >> - - description: HRST
> >> - - description: DRST
> >> - - description: PRST
> >> - - description: IRST
> >> + minItems: 5
> >> + maxItems: 9
> >>
> >> reset-names:
> >> - items:
> >> - - const: arst
> >> - - const: hrst
> >> - - const: drst
> >> - - const: prst
> >> - - const: irst
> >> + minItems: 5
> >> + maxItems: 9
> >
> >> +allOf:
> >> + - if:
> >> + properties:
> >> + compatible:
> >> + contains:
> >> + const: rockchip,rk3568-vicap
> >> + then:
> >> + properties:
> >> + clocks:
> >> + minItems: 4
> >> + maxItems: 4
> >
> > Anything here that repeats the outermost constraint should be dropped,
> > so no minItems here..
>
> I already took a look at similar VICAPs (e.g., R3576) that will have
> more clocks. This is way I left this one in here.
>
> But I guess I will remove it and add it again when e.g. RK3576 VICAP
> support is added.
>
> >> [...]
> >
> >> +
> >> + reset-names:
> >> + items:
> >> + - const: arst
> >> + - const: hrst
> >> + - const: drst
> >> + - const: irst0
> >
> > Were you willing to reuse "irst" for the 0th irst, all the repetition
> > wouldn't be needed. I assume it represents the reset for the port at
> > address 0, so it wouldn't even be a different meaning on each device.
>
> Not quite I think. "{a,h,d}rst" are the same on all variants, then there
> is "prst" and "irst" on RK3568 and "irst{0-5}" on RK3588. So I thought
> that writing it out explicitly for each variant is more readable (even
> though it may need a few characters more).
Ah right, I didn't see the prst one somehow. Ignore me so.
© 2016 - 2026 Red Hat, Inc.