18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/media/xilinx/xlnx,csi2rxss.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Xilinx MIPI CSI-2 Receiver Subsystem
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Vishal Sagar <vishal.sagar@xilinx.com>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cidescription: |
138c2ecf20Sopenharmony_ci  The Xilinx MIPI CSI-2 Receiver Subsystem is used to capture MIPI CSI-2
148c2ecf20Sopenharmony_ci  traffic from compliant camera sensors and send the output as AXI4 Stream
158c2ecf20Sopenharmony_ci  video data for image processing.
168c2ecf20Sopenharmony_ci  The subsystem consists of a MIPI D-PHY in slave mode which captures the
178c2ecf20Sopenharmony_ci  data packets. This is passed along the MIPI CSI-2 Rx IP which extracts the
188c2ecf20Sopenharmony_ci  packet data. The optional Video Format Bridge (VFB) converts this data to
198c2ecf20Sopenharmony_ci  AXI4 Stream video data.
208c2ecf20Sopenharmony_ci  For more details, please refer to PG232 Xilinx MIPI CSI-2 Receiver Subsystem.
218c2ecf20Sopenharmony_ci  Please note that this bindings includes only the MIPI CSI-2 Rx controller
228c2ecf20Sopenharmony_ci  and Video Format Bridge and not D-PHY.
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ciproperties:
258c2ecf20Sopenharmony_ci  compatible:
268c2ecf20Sopenharmony_ci    items:
278c2ecf20Sopenharmony_ci      - enum:
288c2ecf20Sopenharmony_ci          - xlnx,mipi-csi2-rx-subsystem-5.0
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci  reg:
318c2ecf20Sopenharmony_ci    maxItems: 1
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci  interrupts:
348c2ecf20Sopenharmony_ci    maxItems: 1
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci  clocks:
378c2ecf20Sopenharmony_ci    description: List of clock specifiers
388c2ecf20Sopenharmony_ci    items:
398c2ecf20Sopenharmony_ci      - description: AXI Lite clock
408c2ecf20Sopenharmony_ci      - description: Video clock
418c2ecf20Sopenharmony_ci
428c2ecf20Sopenharmony_ci  clock-names:
438c2ecf20Sopenharmony_ci    items:
448c2ecf20Sopenharmony_ci      - const: lite_aclk
458c2ecf20Sopenharmony_ci      - const: video_aclk
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci  xlnx,csi-pxl-format:
488c2ecf20Sopenharmony_ci    description: |
498c2ecf20Sopenharmony_ci      This denotes the CSI Data type selected in hw design.
508c2ecf20Sopenharmony_ci      Packets other than this data type (except for RAW8 and
518c2ecf20Sopenharmony_ci      User defined data types) will be filtered out.
528c2ecf20Sopenharmony_ci      Possible values are as below -
538c2ecf20Sopenharmony_ci      0x1e - YUV4228B
548c2ecf20Sopenharmony_ci      0x1f - YUV42210B
558c2ecf20Sopenharmony_ci      0x20 - RGB444
568c2ecf20Sopenharmony_ci      0x21 - RGB555
578c2ecf20Sopenharmony_ci      0x22 - RGB565
588c2ecf20Sopenharmony_ci      0x23 - RGB666
598c2ecf20Sopenharmony_ci      0x24 - RGB888
608c2ecf20Sopenharmony_ci      0x28 - RAW6
618c2ecf20Sopenharmony_ci      0x29 - RAW7
628c2ecf20Sopenharmony_ci      0x2a - RAW8
638c2ecf20Sopenharmony_ci      0x2b - RAW10
648c2ecf20Sopenharmony_ci      0x2c - RAW12
658c2ecf20Sopenharmony_ci      0x2d - RAW14
668c2ecf20Sopenharmony_ci      0x2e - RAW16
678c2ecf20Sopenharmony_ci      0x2f - RAW20
688c2ecf20Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
698c2ecf20Sopenharmony_ci    oneOf:
708c2ecf20Sopenharmony_ci      - minimum: 0x1e
718c2ecf20Sopenharmony_ci        maximum: 0x24
728c2ecf20Sopenharmony_ci      - minimum: 0x28
738c2ecf20Sopenharmony_ci        maximum: 0x2f
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci  xlnx,vfb:
768c2ecf20Sopenharmony_ci    type: boolean
778c2ecf20Sopenharmony_ci    description: Present when Video Format Bridge is enabled in IP configuration
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ci  xlnx,en-csi-v2-0:
808c2ecf20Sopenharmony_ci    type: boolean
818c2ecf20Sopenharmony_ci    description: Present if CSI v2 is enabled in IP configuration.
828c2ecf20Sopenharmony_ci
838c2ecf20Sopenharmony_ci  xlnx,en-vcx:
848c2ecf20Sopenharmony_ci    type: boolean
858c2ecf20Sopenharmony_ci    description: |
868c2ecf20Sopenharmony_ci      When present, there are maximum 16 virtual channels, else only 4.
878c2ecf20Sopenharmony_ci
888c2ecf20Sopenharmony_ci  xlnx,en-active-lanes:
898c2ecf20Sopenharmony_ci    type: boolean
908c2ecf20Sopenharmony_ci    description: |
918c2ecf20Sopenharmony_ci      Present if the number of active lanes can be re-configured at
928c2ecf20Sopenharmony_ci      runtime in the Protocol Configuration Register. Otherwise all lanes,
938c2ecf20Sopenharmony_ci      as set in IP configuration, are always active.
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_ci  video-reset-gpios:
968c2ecf20Sopenharmony_ci    description: Optional specifier for a GPIO that asserts video_aresetn.
978c2ecf20Sopenharmony_ci    maxItems: 1
988c2ecf20Sopenharmony_ci
998c2ecf20Sopenharmony_ci  ports:
1008c2ecf20Sopenharmony_ci    type: object
1018c2ecf20Sopenharmony_ci
1028c2ecf20Sopenharmony_ci    properties:
1038c2ecf20Sopenharmony_ci      port@0:
1048c2ecf20Sopenharmony_ci        type: object
1058c2ecf20Sopenharmony_ci        description: |
1068c2ecf20Sopenharmony_ci          Input / sink port node, single endpoint describing the
1078c2ecf20Sopenharmony_ci          CSI-2 transmitter.
1088c2ecf20Sopenharmony_ci
1098c2ecf20Sopenharmony_ci        properties:
1108c2ecf20Sopenharmony_ci          reg:
1118c2ecf20Sopenharmony_ci            const: 0
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci          endpoint:
1148c2ecf20Sopenharmony_ci            type: object
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ci            properties:
1178c2ecf20Sopenharmony_ci
1188c2ecf20Sopenharmony_ci              data-lanes:
1198c2ecf20Sopenharmony_ci                description: |
1208c2ecf20Sopenharmony_ci                  This is required only in the sink port 0 endpoint which
1218c2ecf20Sopenharmony_ci                  connects to MIPI CSI-2 source like sensor.
1228c2ecf20Sopenharmony_ci                  The possible values are -
1238c2ecf20Sopenharmony_ci                  1       - For 1 lane enabled in IP.
1248c2ecf20Sopenharmony_ci                  1 2     - For 2 lanes enabled in IP.
1258c2ecf20Sopenharmony_ci                  1 2 3   - For 3 lanes enabled in IP.
1268c2ecf20Sopenharmony_ci                  1 2 3 4 - For 4 lanes enabled in IP.
1278c2ecf20Sopenharmony_ci                items:
1288c2ecf20Sopenharmony_ci                  - const: 1
1298c2ecf20Sopenharmony_ci                  - const: 2
1308c2ecf20Sopenharmony_ci                  - const: 3
1318c2ecf20Sopenharmony_ci                  - const: 4
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ci              remote-endpoint: true
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci            required:
1368c2ecf20Sopenharmony_ci              - data-lanes
1378c2ecf20Sopenharmony_ci              - remote-endpoint
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ci            additionalProperties: false
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci        additionalProperties: false
1428c2ecf20Sopenharmony_ci
1438c2ecf20Sopenharmony_ci      port@1:
1448c2ecf20Sopenharmony_ci        type: object
1458c2ecf20Sopenharmony_ci        description: |
1468c2ecf20Sopenharmony_ci          Output / source port node, endpoint describing modules
1478c2ecf20Sopenharmony_ci          connected the CSI-2 receiver.
1488c2ecf20Sopenharmony_ci
1498c2ecf20Sopenharmony_ci        properties:
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci          reg:
1528c2ecf20Sopenharmony_ci            const: 1
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci          endpoint:
1558c2ecf20Sopenharmony_ci            type: object
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci            properties:
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci              remote-endpoint: true
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci            required:
1628c2ecf20Sopenharmony_ci              - remote-endpoint
1638c2ecf20Sopenharmony_ci
1648c2ecf20Sopenharmony_ci            additionalProperties: false
1658c2ecf20Sopenharmony_ci
1668c2ecf20Sopenharmony_ci        additionalProperties: false
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_cirequired:
1698c2ecf20Sopenharmony_ci  - compatible
1708c2ecf20Sopenharmony_ci  - reg
1718c2ecf20Sopenharmony_ci  - interrupts
1728c2ecf20Sopenharmony_ci  - clocks
1738c2ecf20Sopenharmony_ci  - clock-names
1748c2ecf20Sopenharmony_ci  - ports
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ciallOf:
1778c2ecf20Sopenharmony_ci  - if:
1788c2ecf20Sopenharmony_ci      required:
1798c2ecf20Sopenharmony_ci        - xlnx,vfb
1808c2ecf20Sopenharmony_ci    then:
1818c2ecf20Sopenharmony_ci      required:
1828c2ecf20Sopenharmony_ci        - xlnx,csi-pxl-format
1838c2ecf20Sopenharmony_ci    else:
1848c2ecf20Sopenharmony_ci      properties:
1858c2ecf20Sopenharmony_ci        xlnx,csi-pxl-format: false
1868c2ecf20Sopenharmony_ci
1878c2ecf20Sopenharmony_ci  - if:
1888c2ecf20Sopenharmony_ci      not:
1898c2ecf20Sopenharmony_ci        required:
1908c2ecf20Sopenharmony_ci          - xlnx,en-csi-v2-0
1918c2ecf20Sopenharmony_ci    then:
1928c2ecf20Sopenharmony_ci      properties:
1938c2ecf20Sopenharmony_ci        xlnx,en-vcx: false
1948c2ecf20Sopenharmony_ci
1958c2ecf20Sopenharmony_ciadditionalProperties: false
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ciexamples:
1988c2ecf20Sopenharmony_ci  - |
1998c2ecf20Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
2008c2ecf20Sopenharmony_ci    xcsi2rxss_1: csi2rx@a0020000 {
2018c2ecf20Sopenharmony_ci        compatible = "xlnx,mipi-csi2-rx-subsystem-5.0";
2028c2ecf20Sopenharmony_ci        reg = <0xa0020000 0x10000>;
2038c2ecf20Sopenharmony_ci        interrupt-parent = <&gic>;
2048c2ecf20Sopenharmony_ci        interrupts = <0 95 4>;
2058c2ecf20Sopenharmony_ci        xlnx,csi-pxl-format = <0x2a>;
2068c2ecf20Sopenharmony_ci        xlnx,vfb;
2078c2ecf20Sopenharmony_ci        xlnx,en-active-lanes;
2088c2ecf20Sopenharmony_ci        xlnx,en-csi-v2-0;
2098c2ecf20Sopenharmony_ci        xlnx,en-vcx;
2108c2ecf20Sopenharmony_ci        clock-names = "lite_aclk", "video_aclk";
2118c2ecf20Sopenharmony_ci        clocks = <&misc_clk_0>, <&misc_clk_1>;
2128c2ecf20Sopenharmony_ci        video-reset-gpios = <&gpio 86 GPIO_ACTIVE_LOW>;
2138c2ecf20Sopenharmony_ci
2148c2ecf20Sopenharmony_ci        ports {
2158c2ecf20Sopenharmony_ci            #address-cells = <1>;
2168c2ecf20Sopenharmony_ci            #size-cells = <0>;
2178c2ecf20Sopenharmony_ci
2188c2ecf20Sopenharmony_ci            port@0 {
2198c2ecf20Sopenharmony_ci                /* Sink port */
2208c2ecf20Sopenharmony_ci                reg = <0>;
2218c2ecf20Sopenharmony_ci                csiss_in: endpoint {
2228c2ecf20Sopenharmony_ci                    data-lanes = <1 2 3 4>;
2238c2ecf20Sopenharmony_ci                    /* MIPI CSI-2 Camera handle */
2248c2ecf20Sopenharmony_ci                    remote-endpoint = <&camera_out>;
2258c2ecf20Sopenharmony_ci                };
2268c2ecf20Sopenharmony_ci            };
2278c2ecf20Sopenharmony_ci            port@1 {
2288c2ecf20Sopenharmony_ci                /* Source port */
2298c2ecf20Sopenharmony_ci                reg = <1>;
2308c2ecf20Sopenharmony_ci                csiss_out: endpoint {
2318c2ecf20Sopenharmony_ci                    remote-endpoint = <&vproc_in>;
2328c2ecf20Sopenharmony_ci                };
2338c2ecf20Sopenharmony_ci            };
2348c2ecf20Sopenharmony_ci        };
2358c2ecf20Sopenharmony_ci    };
2368c2ecf20Sopenharmony_ci...
237