162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci# Copyright (C) 2020 Renesas Electronics Corp.
362306a36Sopenharmony_ci%YAML 1.2
462306a36Sopenharmony_ci---
562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/renesas,vin.yaml#
662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
762306a36Sopenharmony_ci
862306a36Sopenharmony_cititle: Renesas R-Car Video Input (VIN)
962306a36Sopenharmony_ci
1062306a36Sopenharmony_cimaintainers:
1162306a36Sopenharmony_ci  - Niklas Söderlund <niklas.soderlund@ragnatech.se>
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cidescription:
1462306a36Sopenharmony_ci  The R-Car Video Input (VIN) device provides video input capabilities for the
1562306a36Sopenharmony_ci  Renesas R-Car family of devices.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci  Each VIN instance has a single parallel input that supports RGB and YUV video,
1862306a36Sopenharmony_ci  with both external synchronization and BT.656 synchronization for the latter.
1962306a36Sopenharmony_ci  Depending on the instance the VIN input is connected to external SoC pins, or
2062306a36Sopenharmony_ci  on Gen3 and RZ/G2 platforms to a CSI-2 receiver.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciproperties:
2362306a36Sopenharmony_ci  compatible:
2462306a36Sopenharmony_ci    oneOf:
2562306a36Sopenharmony_ci      - items:
2662306a36Sopenharmony_ci          - enum:
2762306a36Sopenharmony_ci              - renesas,vin-r8a7742  # RZ/G1H
2862306a36Sopenharmony_ci              - renesas,vin-r8a7743  # RZ/G1M
2962306a36Sopenharmony_ci              - renesas,vin-r8a7744  # RZ/G1N
3062306a36Sopenharmony_ci              - renesas,vin-r8a7745  # RZ/G1E
3162306a36Sopenharmony_ci              - renesas,vin-r8a77470 # RZ/G1C
3262306a36Sopenharmony_ci              - renesas,vin-r8a7790  # R-Car H2
3362306a36Sopenharmony_ci              - renesas,vin-r8a7791  # R-Car M2-W
3462306a36Sopenharmony_ci              - renesas,vin-r8a7792  # R-Car V2H
3562306a36Sopenharmony_ci              - renesas,vin-r8a7793  # R-Car M2-N
3662306a36Sopenharmony_ci              - renesas,vin-r8a7794  # R-Car E2
3762306a36Sopenharmony_ci          - const: renesas,rcar-gen2-vin # Generic R-Car Gen2 or RZ/G1
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci      - items:
4062306a36Sopenharmony_ci          - enum:
4162306a36Sopenharmony_ci              - renesas,vin-r8a774a1 # RZ/G2M
4262306a36Sopenharmony_ci              - renesas,vin-r8a774b1 # RZ/G2N
4362306a36Sopenharmony_ci              - renesas,vin-r8a774c0 # RZ/G2E
4462306a36Sopenharmony_ci              - renesas,vin-r8a774e1 # RZ/G2H
4562306a36Sopenharmony_ci              - renesas,vin-r8a7778  # R-Car M1
4662306a36Sopenharmony_ci              - renesas,vin-r8a7779  # R-Car H1
4762306a36Sopenharmony_ci              - renesas,vin-r8a7795  # R-Car H3
4862306a36Sopenharmony_ci              - renesas,vin-r8a7796  # R-Car M3-W
4962306a36Sopenharmony_ci              - renesas,vin-r8a77961 # R-Car M3-W+
5062306a36Sopenharmony_ci              - renesas,vin-r8a77965 # R-Car M3-N
5162306a36Sopenharmony_ci              - renesas,vin-r8a77970 # R-Car V3M
5262306a36Sopenharmony_ci              - renesas,vin-r8a77980 # R-Car V3H
5362306a36Sopenharmony_ci              - renesas,vin-r8a77990 # R-Car E3
5462306a36Sopenharmony_ci              - renesas,vin-r8a77995 # R-Car D3
5562306a36Sopenharmony_ci              - renesas,vin-r8a779a0 # R-Car V3U
5662306a36Sopenharmony_ci              - renesas,vin-r8a779g0 # R-Car V4H
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  reg:
5962306a36Sopenharmony_ci    maxItems: 1
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  interrupts:
6262306a36Sopenharmony_ci    maxItems: 1
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci  clocks:
6562306a36Sopenharmony_ci    maxItems: 1
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  power-domains:
6862306a36Sopenharmony_ci    maxItems: 1
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci  resets:
7162306a36Sopenharmony_ci    maxItems: 1
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  # The per-board settings for Gen2 and RZ/G1 platforms:
7462306a36Sopenharmony_ci  port:
7562306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/$defs/port-base
7662306a36Sopenharmony_ci    unevaluatedProperties: false
7762306a36Sopenharmony_ci    description:
7862306a36Sopenharmony_ci      A node containing a parallel input
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci    properties:
8162306a36Sopenharmony_ci      endpoint:
8262306a36Sopenharmony_ci        $ref: video-interfaces.yaml#
8362306a36Sopenharmony_ci        unevaluatedProperties: false
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci        properties:
8662306a36Sopenharmony_ci          hsync-active:
8762306a36Sopenharmony_ci            description:
8862306a36Sopenharmony_ci              If both HSYNC and VSYNC polarities are not specified, embedded
8962306a36Sopenharmony_ci              synchronization is selected.
9062306a36Sopenharmony_ci            default: 1
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci          vsync-active:
9362306a36Sopenharmony_ci            description:
9462306a36Sopenharmony_ci              If both HSYNC and VSYNC polarities are not specified, embedded
9562306a36Sopenharmony_ci              synchronization is selected.
9662306a36Sopenharmony_ci            default: 1
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ci          field-even-active: true
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci          bus-width: true
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci          data-shift: true
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci          data-enable-active:
10562306a36Sopenharmony_ci            description: Polarity of CLKENB signal
10662306a36Sopenharmony_ci            default: 1
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci          pclk-sample: true
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci          data-active: true
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci  # The per-board settings for Gen3 and RZ/G2 platforms:
11362306a36Sopenharmony_ci  renesas,id:
11462306a36Sopenharmony_ci    description: VIN channel number
11562306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
11662306a36Sopenharmony_ci    minimum: 0
11762306a36Sopenharmony_ci    maximum: 31
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci  ports:
12062306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/ports
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci    properties:
12362306a36Sopenharmony_ci      port@0:
12462306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/$defs/port-base
12562306a36Sopenharmony_ci        unevaluatedProperties: false
12662306a36Sopenharmony_ci        description:
12762306a36Sopenharmony_ci          Input port node, single endpoint describing a parallel input source.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci        properties:
13062306a36Sopenharmony_ci          endpoint:
13162306a36Sopenharmony_ci            $ref: video-interfaces.yaml#
13262306a36Sopenharmony_ci            unevaluatedProperties: false
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci            properties:
13562306a36Sopenharmony_ci              hsync-active:
13662306a36Sopenharmony_ci                description:
13762306a36Sopenharmony_ci                  If both HSYNC and VSYNC polarities are not specified, embedded
13862306a36Sopenharmony_ci                  synchronization is selected.
13962306a36Sopenharmony_ci                default: 1
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci              vsync-active:
14262306a36Sopenharmony_ci                description:
14362306a36Sopenharmony_ci                  If both HSYNC and VSYNC polarities are not specified, embedded
14462306a36Sopenharmony_ci                  synchronization is selected.
14562306a36Sopenharmony_ci                default: 1
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ci              field-even-active: true
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci              bus-width: true
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci              data-shift: true
15262306a36Sopenharmony_ci
15362306a36Sopenharmony_ci              data-enable-active:
15462306a36Sopenharmony_ci                description: Polarity of CLKENB signal
15562306a36Sopenharmony_ci                default: 1
15662306a36Sopenharmony_ci
15762306a36Sopenharmony_ci              pclk-sample: true
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci              data-active: true
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci      port@1:
16262306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
16362306a36Sopenharmony_ci        description:
16462306a36Sopenharmony_ci          Input port node, multiple endpoints describing all the R-Car CSI-2
16562306a36Sopenharmony_ci          modules connected the VIN.
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci        properties:
16862306a36Sopenharmony_ci          endpoint@0:
16962306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
17062306a36Sopenharmony_ci            description: Endpoint connected to CSI20.
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci          endpoint@1:
17362306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
17462306a36Sopenharmony_ci            description: Endpoint connected to CSI21.
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci          endpoint@2:
17762306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
17862306a36Sopenharmony_ci            description: Endpoint connected to CSI40.
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci          endpoint@3:
18162306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
18262306a36Sopenharmony_ci            description: Endpoint connected to CSI41.
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci        anyOf:
18562306a36Sopenharmony_ci          - required:
18662306a36Sopenharmony_ci              - endpoint@0
18762306a36Sopenharmony_ci          - required:
18862306a36Sopenharmony_ci              - endpoint@1
18962306a36Sopenharmony_ci          - required:
19062306a36Sopenharmony_ci              - endpoint@2
19162306a36Sopenharmony_ci          - required:
19262306a36Sopenharmony_ci              - endpoint@3
19362306a36Sopenharmony_ci
19462306a36Sopenharmony_ci      port@2:
19562306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
19662306a36Sopenharmony_ci        description:
19762306a36Sopenharmony_ci          Input port node, multiple endpoints describing all the R-Car ISP
19862306a36Sopenharmony_ci          modules connected the VIN.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci        properties:
20162306a36Sopenharmony_ci          endpoint@0:
20262306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
20362306a36Sopenharmony_ci            description: Endpoint connected to ISP0.
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ci          endpoint@1:
20662306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
20762306a36Sopenharmony_ci            description: Endpoint connected to ISP1.
20862306a36Sopenharmony_ci
20962306a36Sopenharmony_ci          endpoint@2:
21062306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
21162306a36Sopenharmony_ci            description: Endpoint connected to ISP2.
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci          endpoint@3:
21462306a36Sopenharmony_ci            $ref: /schemas/graph.yaml#/properties/endpoint
21562306a36Sopenharmony_ci            description: Endpoint connected to ISP3.
21662306a36Sopenharmony_ci
21762306a36Sopenharmony_cirequired:
21862306a36Sopenharmony_ci  - compatible
21962306a36Sopenharmony_ci  - reg
22062306a36Sopenharmony_ci  - interrupts
22162306a36Sopenharmony_ci  - clocks
22262306a36Sopenharmony_ci  - power-domains
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ciallOf:
22562306a36Sopenharmony_ci  - if:
22662306a36Sopenharmony_ci      not:
22762306a36Sopenharmony_ci        properties:
22862306a36Sopenharmony_ci          compatible:
22962306a36Sopenharmony_ci            contains:
23062306a36Sopenharmony_ci              enum:
23162306a36Sopenharmony_ci                - renesas,vin-r8a7778
23262306a36Sopenharmony_ci                - renesas,vin-r8a7779
23362306a36Sopenharmony_ci    then:
23462306a36Sopenharmony_ci      required:
23562306a36Sopenharmony_ci        - resets
23662306a36Sopenharmony_ci
23762306a36Sopenharmony_ci  - if:
23862306a36Sopenharmony_ci      properties:
23962306a36Sopenharmony_ci        compatible:
24062306a36Sopenharmony_ci          contains:
24162306a36Sopenharmony_ci            enum:
24262306a36Sopenharmony_ci              - renesas,vin-r8a7778
24362306a36Sopenharmony_ci              - renesas,vin-r8a7779
24462306a36Sopenharmony_ci              - renesas,rcar-gen2-vin
24562306a36Sopenharmony_ci    then:
24662306a36Sopenharmony_ci      required:
24762306a36Sopenharmony_ci        - port
24862306a36Sopenharmony_ci    else:
24962306a36Sopenharmony_ci      required:
25062306a36Sopenharmony_ci        - renesas,id
25162306a36Sopenharmony_ci        - ports
25262306a36Sopenharmony_ci
25362306a36Sopenharmony_ciadditionalProperties: false
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ciexamples:
25662306a36Sopenharmony_ci  # Device node example for Gen2 platform
25762306a36Sopenharmony_ci  - |
25862306a36Sopenharmony_ci    #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
25962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
26062306a36Sopenharmony_ci    #include <dt-bindings/power/r8a7790-sysc.h>
26162306a36Sopenharmony_ci
26262306a36Sopenharmony_ci    vin1: vin@e6ef1000 {
26362306a36Sopenharmony_ci            compatible = "renesas,vin-r8a7790",
26462306a36Sopenharmony_ci                         "renesas,rcar-gen2-vin";
26562306a36Sopenharmony_ci            reg = <0xe6ef1000 0x1000>;
26662306a36Sopenharmony_ci            interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
26762306a36Sopenharmony_ci            clocks = <&cpg CPG_MOD 810>;
26862306a36Sopenharmony_ci            power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
26962306a36Sopenharmony_ci            resets = <&cpg 810>;
27062306a36Sopenharmony_ci
27162306a36Sopenharmony_ci            port {
27262306a36Sopenharmony_ci                    vin1ep0: endpoint {
27362306a36Sopenharmony_ci                            remote-endpoint = <&adv7180>;
27462306a36Sopenharmony_ci                            bus-width = <8>;
27562306a36Sopenharmony_ci                    };
27662306a36Sopenharmony_ci            };
27762306a36Sopenharmony_ci    };
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ci  # Device node example for Gen3 platform with only CSI-2
28062306a36Sopenharmony_ci  - |
28162306a36Sopenharmony_ci    #include <dt-bindings/clock/r8a7795-cpg-mssr.h>
28262306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
28362306a36Sopenharmony_ci    #include <dt-bindings/power/r8a7795-sysc.h>
28462306a36Sopenharmony_ci
28562306a36Sopenharmony_ci    vin0: video@e6ef0000 {
28662306a36Sopenharmony_ci            compatible = "renesas,vin-r8a7795";
28762306a36Sopenharmony_ci            reg = <0xe6ef0000 0x1000>;
28862306a36Sopenharmony_ci            interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH>;
28962306a36Sopenharmony_ci            clocks = <&cpg CPG_MOD 811>;
29062306a36Sopenharmony_ci            power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
29162306a36Sopenharmony_ci            resets = <&cpg 811>;
29262306a36Sopenharmony_ci            renesas,id = <0>;
29362306a36Sopenharmony_ci
29462306a36Sopenharmony_ci            ports {
29562306a36Sopenharmony_ci                    #address-cells = <1>;
29662306a36Sopenharmony_ci                    #size-cells = <0>;
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ci                    port@1 {
29962306a36Sopenharmony_ci                            #address-cells = <1>;
30062306a36Sopenharmony_ci                            #size-cells = <0>;
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci                            reg = <1>;
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ci                            vin0csi20: endpoint@0 {
30562306a36Sopenharmony_ci                                    reg = <0>;
30662306a36Sopenharmony_ci                                    remote-endpoint = <&csi20vin0>;
30762306a36Sopenharmony_ci                            };
30862306a36Sopenharmony_ci                            vin0csi40: endpoint@2 {
30962306a36Sopenharmony_ci                                    reg = <2>;
31062306a36Sopenharmony_ci                                    remote-endpoint = <&csi40vin0>;
31162306a36Sopenharmony_ci                            };
31262306a36Sopenharmony_ci                    };
31362306a36Sopenharmony_ci            };
31462306a36Sopenharmony_ci    };
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci  # Device node example for Gen3 platform with CSI-2 and parallel
31762306a36Sopenharmony_ci  - |
31862306a36Sopenharmony_ci    #include <dt-bindings/clock/r8a77970-cpg-mssr.h>
31962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
32062306a36Sopenharmony_ci    #include <dt-bindings/power/r8a77970-sysc.h>
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci    vin2: video@e6ef2000 {
32362306a36Sopenharmony_ci            compatible = "renesas,vin-r8a77970";
32462306a36Sopenharmony_ci            reg = <0xe6ef2000 0x1000>;
32562306a36Sopenharmony_ci            interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
32662306a36Sopenharmony_ci            clocks = <&cpg CPG_MOD 809>;
32762306a36Sopenharmony_ci            power-domains = <&sysc R8A77970_PD_ALWAYS_ON>;
32862306a36Sopenharmony_ci            resets = <&cpg 809>;
32962306a36Sopenharmony_ci            renesas,id = <2>;
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci            ports {
33262306a36Sopenharmony_ci                    #address-cells = <1>;
33362306a36Sopenharmony_ci                    #size-cells = <0>;
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ci                    port@0 {
33662306a36Sopenharmony_ci                            reg = <0>;
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_ci                            vin2_in: endpoint {
33962306a36Sopenharmony_ci                                    remote-endpoint = <&adv7612_out>;
34062306a36Sopenharmony_ci                                    hsync-active = <0>;
34162306a36Sopenharmony_ci                                    vsync-active = <0>;
34262306a36Sopenharmony_ci                            };
34362306a36Sopenharmony_ci                    };
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ci                    port@1 {
34662306a36Sopenharmony_ci                            #address-cells = <1>;
34762306a36Sopenharmony_ci                            #size-cells = <0>;
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci                            reg = <1>;
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci                            vin2csi40: endpoint@2 {
35262306a36Sopenharmony_ci                                    reg = <2>;
35362306a36Sopenharmony_ci                                    remote-endpoint = <&csi40vin2>;
35462306a36Sopenharmony_ci                            };
35562306a36Sopenharmony_ci                    };
35662306a36Sopenharmony_ci            };
35762306a36Sopenharmony_ci    };
358