[PATCH v2 2/9] media: dt-bindings: add rockchip rk3588 vicap

Michael Riesch via B4 Relay posted 9 patches 2 weeks, 6 days ago
There is a newer version of this series
[PATCH v2 2/9] media: dt-bindings: add rockchip rk3588 vicap
Posted by Michael Riesch via B4 Relay 2 weeks, 6 days ago
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
Re: [PATCH v2 2/9] media: dt-bindings: add rockchip rk3588 vicap
Posted by Conor Dooley 2 weeks, 5 days ago
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
> 
> 
Re: [PATCH v2 2/9] media: dt-bindings: add rockchip rk3588 vicap
Posted by Michael Riesch 2 weeks, 4 days ago
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
>>
>>
Re: [PATCH v2 2/9] media: dt-bindings: add rockchip rk3588 vicap
Posted by Conor Dooley 2 weeks, 4 days ago
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.