summaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/media/xilinx/xlnx,csi2rxss.yaml
blob: 43daf837fc9f08e36f1f4a8a12c63140b214a5ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/xilinx/xlnx,csi2rxss.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Xilinx MIPI CSI-2 Receiver Subsystem

maintainers:
  - Vishal Sagar <vishal.sagar@amd.com>

description: |
  The Xilinx MIPI CSI-2 Receiver Subsystem is used to capture MIPI CSI-2
  traffic from compliant camera sensors and send the output as AXI4 Stream
  video data for image processing.
  The subsystem consists of a MIPI D-PHY in slave mode which captures the
  data packets. This is passed along the MIPI CSI-2 Rx IP which extracts the
  packet data. The optional Video Format Bridge (VFB) converts this data to
  AXI4 Stream video data.
  For more details, please refer to PG232 Xilinx MIPI CSI-2 Receiver Subsystem.
  Please note that this bindings includes only the MIPI CSI-2 Rx controller
  and Video Format Bridge and not D-PHY.

properties:
  compatible:
    items:
      - enum:
          - xlnx,mipi-csi2-rx-subsystem-5.0

  reg:
    maxItems: 1

  interrupts:
    maxItems: 1

  clocks:
    description: List of clock specifiers
    items:
      - description: AXI Lite clock
      - description: Video clock

  clock-names:
    items:
      - const: lite_aclk
      - const: video_aclk

  xlnx,csi-pxl-format:
    description: |
      This denotes the CSI Data type selected in hw design.
      Packets other than this data type (except for RAW8 and
      User defined data types) will be filtered out.
      Possible values are as below -
      0x1e - YUV4228B
      0x1f - YUV42210B
      0x20 - RGB444
      0x21 - RGB555
      0x22 - RGB565
      0x23 - RGB666
      0x24 - RGB888
      0x28 - RAW6
      0x29 - RAW7
      0x2a - RAW8
      0x2b - RAW10
      0x2c - RAW12
      0x2d - RAW14
      0x2e - RAW16
      0x2f - RAW20
    $ref: /schemas/types.yaml#/definitions/uint32
    oneOf:
      - minimum: 0x1e
        maximum: 0x24
      - minimum: 0x28
        maximum: 0x2f

  xlnx,vfb:
    type: boolean
    description: Present when Video Format Bridge is enabled in IP configuration

  xlnx,en-csi-v2-0:
    type: boolean
    description: Present if CSI v2 is enabled in IP configuration.

  xlnx,en-vcx:
    type: boolean
    description: |
      When present, there are maximum 16 virtual channels, else only 4.

  xlnx,en-active-lanes:
    type: boolean
    description: |
      Present if the number of active lanes can be re-configured at
      runtime in the Protocol Configuration Register. Otherwise all lanes,
      as set in IP configuration, are always active.

  video-reset-gpios:
    description: Optional specifier for a GPIO that asserts video_aresetn.
    maxItems: 1

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/$defs/port-base
        description: |
          Input / sink port node, single endpoint describing the
          CSI-2 transmitter.

        properties:
          endpoint:
            $ref: /schemas/media/video-interfaces.yaml#
            unevaluatedProperties: false

            properties:
              data-lanes:
                description: |
                  This is required only in the sink port 0 endpoint which
                  connects to MIPI CSI-2 source like sensor.
                  The possible values are -
                  1       - For 1 lane enabled in IP.
                  1 2     - For 2 lanes enabled in IP.
                  1 2 3   - For 3 lanes enabled in IP.
                  1 2 3 4 - For 4 lanes enabled in IP.
                items:
                  - const: 1
                  - const: 2
                  - const: 3
                  - const: 4

            required:
              - data-lanes

        unevaluatedProperties: false

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: |
          Output / source port node, endpoint describing modules
          connected the CSI-2 receiver.

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - ports

allOf:
  - if:
      required:
        - xlnx,vfb
    then:
      required:
        - xlnx,csi-pxl-format
    else:
      properties:
        xlnx,csi-pxl-format: false

  - if:
      not:
        required:
          - xlnx,en-csi-v2-0
    then:
      properties:
        xlnx,en-vcx: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>
    xcsi2rxss_1: csi2rx@a0020000 {
        compatible = "xlnx,mipi-csi2-rx-subsystem-5.0";
        reg = <0xa0020000 0x10000>;
        interrupt-parent = <&gic>;
        interrupts = <0 95 4>;
        xlnx,csi-pxl-format = <0x2a>;
        xlnx,vfb;
        xlnx,en-active-lanes;
        xlnx,en-csi-v2-0;
        xlnx,en-vcx;
        clock-names = "lite_aclk", "video_aclk";
        clocks = <&misc_clk_0>, <&misc_clk_1>;
        video-reset-gpios = <&gpio 86 GPIO_ACTIVE_LOW>;

        ports {
            #address-cells = <1>;
            #size-cells = <0>;

            port@0 {
                /* Sink port */
                reg = <0>;
                csiss_in: endpoint {
                    data-lanes = <1 2 3 4>;
                    /* MIPI CSI-2 Camera handle */
                    remote-endpoint = <&camera_out>;
                };
            };
            port@1 {
                /* Source port */
                reg = <1>;
                csiss_out: endpoint {
                    remote-endpoint = <&vproc_in>;
                };
            };
        };
    };
...