162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/xilinx/xlnx,csi2rxss.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Xilinx MIPI CSI-2 Receiver Subsystem
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Vishal Sagar <vishal.sagar@amd.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The Xilinx MIPI CSI-2 Receiver Subsystem is used to capture MIPI CSI-2
1462306a36Sopenharmony_ci  traffic from compliant camera sensors and send the output as AXI4 Stream
1562306a36Sopenharmony_ci  video data for image processing.
1662306a36Sopenharmony_ci  The subsystem consists of a MIPI D-PHY in slave mode which captures the
1762306a36Sopenharmony_ci  data packets. This is passed along the MIPI CSI-2 Rx IP which extracts the
1862306a36Sopenharmony_ci  packet data. The optional Video Format Bridge (VFB) converts this data to
1962306a36Sopenharmony_ci  AXI4 Stream video data.
2062306a36Sopenharmony_ci  For more details, please refer to PG232 Xilinx MIPI CSI-2 Receiver Subsystem.
2162306a36Sopenharmony_ci  Please note that this bindings includes only the MIPI CSI-2 Rx controller
2262306a36Sopenharmony_ci  and Video Format Bridge and not D-PHY.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    items:
2762306a36Sopenharmony_ci      - enum:
2862306a36Sopenharmony_ci          - xlnx,mipi-csi2-rx-subsystem-5.0
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  reg:
3162306a36Sopenharmony_ci    maxItems: 1
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  interrupts:
3462306a36Sopenharmony_ci    maxItems: 1
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  clocks:
3762306a36Sopenharmony_ci    description: List of clock specifiers
3862306a36Sopenharmony_ci    items:
3962306a36Sopenharmony_ci      - description: AXI Lite clock
4062306a36Sopenharmony_ci      - description: Video clock
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  clock-names:
4362306a36Sopenharmony_ci    items:
4462306a36Sopenharmony_ci      - const: lite_aclk
4562306a36Sopenharmony_ci      - const: video_aclk
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  xlnx,csi-pxl-format:
4862306a36Sopenharmony_ci    description: |
4962306a36Sopenharmony_ci      This denotes the CSI Data type selected in hw design.
5062306a36Sopenharmony_ci      Packets other than this data type (except for RAW8 and
5162306a36Sopenharmony_ci      User defined data types) will be filtered out.
5262306a36Sopenharmony_ci      Possible values are as below -
5362306a36Sopenharmony_ci      0x1e - YUV4228B
5462306a36Sopenharmony_ci      0x1f - YUV42210B
5562306a36Sopenharmony_ci      0x20 - RGB444
5662306a36Sopenharmony_ci      0x21 - RGB555
5762306a36Sopenharmony_ci      0x22 - RGB565
5862306a36Sopenharmony_ci      0x23 - RGB666
5962306a36Sopenharmony_ci      0x24 - RGB888
6062306a36Sopenharmony_ci      0x28 - RAW6
6162306a36Sopenharmony_ci      0x29 - RAW7
6262306a36Sopenharmony_ci      0x2a - RAW8
6362306a36Sopenharmony_ci      0x2b - RAW10
6462306a36Sopenharmony_ci      0x2c - RAW12
6562306a36Sopenharmony_ci      0x2d - RAW14
6662306a36Sopenharmony_ci      0x2e - RAW16
6762306a36Sopenharmony_ci      0x2f - RAW20
6862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
6962306a36Sopenharmony_ci    oneOf:
7062306a36Sopenharmony_ci      - minimum: 0x1e
7162306a36Sopenharmony_ci        maximum: 0x24
7262306a36Sopenharmony_ci      - minimum: 0x28
7362306a36Sopenharmony_ci        maximum: 0x2f
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci  xlnx,vfb:
7662306a36Sopenharmony_ci    type: boolean
7762306a36Sopenharmony_ci    description: Present when Video Format Bridge is enabled in IP configuration
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci  xlnx,en-csi-v2-0:
8062306a36Sopenharmony_ci    type: boolean
8162306a36Sopenharmony_ci    description: Present if CSI v2 is enabled in IP configuration.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci  xlnx,en-vcx:
8462306a36Sopenharmony_ci    type: boolean
8562306a36Sopenharmony_ci    description: |
8662306a36Sopenharmony_ci      When present, there are maximum 16 virtual channels, else only 4.
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci  xlnx,en-active-lanes:
8962306a36Sopenharmony_ci    type: boolean
9062306a36Sopenharmony_ci    description: |
9162306a36Sopenharmony_ci      Present if the number of active lanes can be re-configured at
9262306a36Sopenharmony_ci      runtime in the Protocol Configuration Register. Otherwise all lanes,
9362306a36Sopenharmony_ci      as set in IP configuration, are always active.
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci  video-reset-gpios:
9662306a36Sopenharmony_ci    description: Optional specifier for a GPIO that asserts video_aresetn.
9762306a36Sopenharmony_ci    maxItems: 1
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci  ports:
10062306a36Sopenharmony_ci    $ref: /schemas/graph.yaml#/properties/ports
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci    properties:
10362306a36Sopenharmony_ci      port@0:
10462306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/$defs/port-base
10562306a36Sopenharmony_ci        description: |
10662306a36Sopenharmony_ci          Input / sink port node, single endpoint describing the
10762306a36Sopenharmony_ci          CSI-2 transmitter.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci        properties:
11062306a36Sopenharmony_ci          endpoint:
11162306a36Sopenharmony_ci            $ref: /schemas/media/video-interfaces.yaml#
11262306a36Sopenharmony_ci            unevaluatedProperties: false
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci            properties:
11562306a36Sopenharmony_ci              data-lanes:
11662306a36Sopenharmony_ci                description: |
11762306a36Sopenharmony_ci                  This is required only in the sink port 0 endpoint which
11862306a36Sopenharmony_ci                  connects to MIPI CSI-2 source like sensor.
11962306a36Sopenharmony_ci                  The possible values are -
12062306a36Sopenharmony_ci                  1       - For 1 lane enabled in IP.
12162306a36Sopenharmony_ci                  1 2     - For 2 lanes enabled in IP.
12262306a36Sopenharmony_ci                  1 2 3   - For 3 lanes enabled in IP.
12362306a36Sopenharmony_ci                  1 2 3 4 - For 4 lanes enabled in IP.
12462306a36Sopenharmony_ci                items:
12562306a36Sopenharmony_ci                  - const: 1
12662306a36Sopenharmony_ci                  - const: 2
12762306a36Sopenharmony_ci                  - const: 3
12862306a36Sopenharmony_ci                  - const: 4
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci            required:
13162306a36Sopenharmony_ci              - data-lanes
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci        unevaluatedProperties: false
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci      port@1:
13662306a36Sopenharmony_ci        $ref: /schemas/graph.yaml#/properties/port
13762306a36Sopenharmony_ci        description: |
13862306a36Sopenharmony_ci          Output / source port node, endpoint describing modules
13962306a36Sopenharmony_ci          connected the CSI-2 receiver.
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_cirequired:
14262306a36Sopenharmony_ci  - compatible
14362306a36Sopenharmony_ci  - reg
14462306a36Sopenharmony_ci  - interrupts
14562306a36Sopenharmony_ci  - clocks
14662306a36Sopenharmony_ci  - clock-names
14762306a36Sopenharmony_ci  - ports
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ciallOf:
15062306a36Sopenharmony_ci  - if:
15162306a36Sopenharmony_ci      required:
15262306a36Sopenharmony_ci        - xlnx,vfb
15362306a36Sopenharmony_ci    then:
15462306a36Sopenharmony_ci      required:
15562306a36Sopenharmony_ci        - xlnx,csi-pxl-format
15662306a36Sopenharmony_ci    else:
15762306a36Sopenharmony_ci      properties:
15862306a36Sopenharmony_ci        xlnx,csi-pxl-format: false
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci  - if:
16162306a36Sopenharmony_ci      not:
16262306a36Sopenharmony_ci        required:
16362306a36Sopenharmony_ci          - xlnx,en-csi-v2-0
16462306a36Sopenharmony_ci    then:
16562306a36Sopenharmony_ci      properties:
16662306a36Sopenharmony_ci        xlnx,en-vcx: false
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ciadditionalProperties: false
16962306a36Sopenharmony_ci
17062306a36Sopenharmony_ciexamples:
17162306a36Sopenharmony_ci  - |
17262306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
17362306a36Sopenharmony_ci    xcsi2rxss_1: csi2rx@a0020000 {
17462306a36Sopenharmony_ci        compatible = "xlnx,mipi-csi2-rx-subsystem-5.0";
17562306a36Sopenharmony_ci        reg = <0xa0020000 0x10000>;
17662306a36Sopenharmony_ci        interrupt-parent = <&gic>;
17762306a36Sopenharmony_ci        interrupts = <0 95 4>;
17862306a36Sopenharmony_ci        xlnx,csi-pxl-format = <0x2a>;
17962306a36Sopenharmony_ci        xlnx,vfb;
18062306a36Sopenharmony_ci        xlnx,en-active-lanes;
18162306a36Sopenharmony_ci        xlnx,en-csi-v2-0;
18262306a36Sopenharmony_ci        xlnx,en-vcx;
18362306a36Sopenharmony_ci        clock-names = "lite_aclk", "video_aclk";
18462306a36Sopenharmony_ci        clocks = <&misc_clk_0>, <&misc_clk_1>;
18562306a36Sopenharmony_ci        video-reset-gpios = <&gpio 86 GPIO_ACTIVE_LOW>;
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci        ports {
18862306a36Sopenharmony_ci            #address-cells = <1>;
18962306a36Sopenharmony_ci            #size-cells = <0>;
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci            port@0 {
19262306a36Sopenharmony_ci                /* Sink port */
19362306a36Sopenharmony_ci                reg = <0>;
19462306a36Sopenharmony_ci                csiss_in: endpoint {
19562306a36Sopenharmony_ci                    data-lanes = <1 2 3 4>;
19662306a36Sopenharmony_ci                    /* MIPI CSI-2 Camera handle */
19762306a36Sopenharmony_ci                    remote-endpoint = <&camera_out>;
19862306a36Sopenharmony_ci                };
19962306a36Sopenharmony_ci            };
20062306a36Sopenharmony_ci            port@1 {
20162306a36Sopenharmony_ci                /* Source port */
20262306a36Sopenharmony_ci                reg = <1>;
20362306a36Sopenharmony_ci                csiss_out: endpoint {
20462306a36Sopenharmony_ci                    remote-endpoint = <&vproc_in>;
20562306a36Sopenharmony_ci                };
20662306a36Sopenharmony_ci            };
20762306a36Sopenharmony_ci        };
20862306a36Sopenharmony_ci    };
20962306a36Sopenharmony_ci...
210