xref: /freebsd/sys/contrib/device-tree/Bindings/media/cdns,csi2rx.yaml (revision 833e5d42ab135b0238e61c5b3c19b8619677cbfa)
1aa1a8ff2SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2aa1a8ff2SEmmanuel Vadot%YAML 1.2
3aa1a8ff2SEmmanuel Vadot---
4aa1a8ff2SEmmanuel Vadot$id: http://devicetree.org/schemas/media/cdns,csi2rx.yaml#
5aa1a8ff2SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6aa1a8ff2SEmmanuel Vadot
7aa1a8ff2SEmmanuel Vadottitle: Cadence MIPI-CSI2 RX controller
8aa1a8ff2SEmmanuel Vadot
9aa1a8ff2SEmmanuel Vadotmaintainers:
10aa1a8ff2SEmmanuel Vadot  - Maxime Ripard <mripard@kernel.org>
11aa1a8ff2SEmmanuel Vadot
12aa1a8ff2SEmmanuel Vadotdescription:
13aa1a8ff2SEmmanuel Vadot  The Cadence MIPI-CSI2 RX controller is a CSI-2 bridge supporting up to 4 CSI
14aa1a8ff2SEmmanuel Vadot  lanes in input, and 4 different pixel streams in output.
15aa1a8ff2SEmmanuel Vadot
16aa1a8ff2SEmmanuel Vadotproperties:
17aa1a8ff2SEmmanuel Vadot  compatible:
18aa1a8ff2SEmmanuel Vadot    items:
19aa1a8ff2SEmmanuel Vadot      - enum:
20aa1a8ff2SEmmanuel Vadot          - starfive,jh7110-csi2rx
2184943d6fSEmmanuel Vadot          - ti,j721e-csi2rx
22aa1a8ff2SEmmanuel Vadot      - const: cdns,csi2rx
23aa1a8ff2SEmmanuel Vadot
24aa1a8ff2SEmmanuel Vadot  reg:
25aa1a8ff2SEmmanuel Vadot    maxItems: 1
26aa1a8ff2SEmmanuel Vadot
27*833e5d42SEmmanuel Vadot  interrupts:
28*833e5d42SEmmanuel Vadot    maxItems: 2
29*833e5d42SEmmanuel Vadot
30*833e5d42SEmmanuel Vadot  interrupt-names:
31*833e5d42SEmmanuel Vadot    items:
32*833e5d42SEmmanuel Vadot      - const: error_irq
33*833e5d42SEmmanuel Vadot      - const: irq
34*833e5d42SEmmanuel Vadot
35aa1a8ff2SEmmanuel Vadot  clocks:
36aa1a8ff2SEmmanuel Vadot    items:
37aa1a8ff2SEmmanuel Vadot      - description: CSI2Rx system clock
38aa1a8ff2SEmmanuel Vadot      - description: Gated Register bank clock for APB interface
39aa1a8ff2SEmmanuel Vadot      - description: pixel Clock for Stream interface 0
40aa1a8ff2SEmmanuel Vadot      - description: pixel Clock for Stream interface 1
41aa1a8ff2SEmmanuel Vadot      - description: pixel Clock for Stream interface 2
42aa1a8ff2SEmmanuel Vadot      - description: pixel Clock for Stream interface 3
43aa1a8ff2SEmmanuel Vadot
44aa1a8ff2SEmmanuel Vadot  clock-names:
45aa1a8ff2SEmmanuel Vadot    items:
46aa1a8ff2SEmmanuel Vadot      - const: sys_clk
47aa1a8ff2SEmmanuel Vadot      - const: p_clk
48aa1a8ff2SEmmanuel Vadot      - const: pixel_if0_clk
49aa1a8ff2SEmmanuel Vadot      - const: pixel_if1_clk
50aa1a8ff2SEmmanuel Vadot      - const: pixel_if2_clk
51aa1a8ff2SEmmanuel Vadot      - const: pixel_if3_clk
52aa1a8ff2SEmmanuel Vadot
53aa1a8ff2SEmmanuel Vadot  resets:
54aa1a8ff2SEmmanuel Vadot    items:
55aa1a8ff2SEmmanuel Vadot      - description: CSI2Rx system reset
56aa1a8ff2SEmmanuel Vadot      - description: Gated Register bank reset for APB interface
57aa1a8ff2SEmmanuel Vadot      - description: pixel reset for Stream interface 0
58aa1a8ff2SEmmanuel Vadot      - description: pixel reset for Stream interface 1
59aa1a8ff2SEmmanuel Vadot      - description: pixel reset for Stream interface 2
60aa1a8ff2SEmmanuel Vadot      - description: pixel reset for Stream interface 3
61aa1a8ff2SEmmanuel Vadot
62aa1a8ff2SEmmanuel Vadot  reset-names:
63aa1a8ff2SEmmanuel Vadot    items:
64aa1a8ff2SEmmanuel Vadot      - const: sys
65aa1a8ff2SEmmanuel Vadot      - const: reg_bank
66aa1a8ff2SEmmanuel Vadot      - const: pixel_if0
67aa1a8ff2SEmmanuel Vadot      - const: pixel_if1
68aa1a8ff2SEmmanuel Vadot      - const: pixel_if2
69aa1a8ff2SEmmanuel Vadot      - const: pixel_if3
70aa1a8ff2SEmmanuel Vadot
71aa1a8ff2SEmmanuel Vadot  phys:
72aa1a8ff2SEmmanuel Vadot    maxItems: 1
73aa1a8ff2SEmmanuel Vadot    description: MIPI D-PHY
74aa1a8ff2SEmmanuel Vadot
75aa1a8ff2SEmmanuel Vadot  phy-names:
76aa1a8ff2SEmmanuel Vadot    items:
77aa1a8ff2SEmmanuel Vadot      - const: dphy
78aa1a8ff2SEmmanuel Vadot
79aa1a8ff2SEmmanuel Vadot  ports:
80aa1a8ff2SEmmanuel Vadot    $ref: /schemas/graph.yaml#/properties/ports
81aa1a8ff2SEmmanuel Vadot
82aa1a8ff2SEmmanuel Vadot    properties:
83aa1a8ff2SEmmanuel Vadot      port@0:
84aa1a8ff2SEmmanuel Vadot        $ref: /schemas/graph.yaml#/$defs/port-base
85aa1a8ff2SEmmanuel Vadot        unevaluatedProperties: false
86aa1a8ff2SEmmanuel Vadot        description:
87aa1a8ff2SEmmanuel Vadot          Input port node, single endpoint describing the CSI-2 transmitter.
88aa1a8ff2SEmmanuel Vadot
89aa1a8ff2SEmmanuel Vadot        properties:
90aa1a8ff2SEmmanuel Vadot          endpoint:
91aa1a8ff2SEmmanuel Vadot            $ref: video-interfaces.yaml#
92aa1a8ff2SEmmanuel Vadot            unevaluatedProperties: false
93aa1a8ff2SEmmanuel Vadot
94aa1a8ff2SEmmanuel Vadot            properties:
95aa1a8ff2SEmmanuel Vadot              bus-type:
96aa1a8ff2SEmmanuel Vadot                const: 4
97aa1a8ff2SEmmanuel Vadot
98aa1a8ff2SEmmanuel Vadot              clock-lanes:
99aa1a8ff2SEmmanuel Vadot                const: 0
100aa1a8ff2SEmmanuel Vadot
101aa1a8ff2SEmmanuel Vadot              data-lanes:
102aa1a8ff2SEmmanuel Vadot                minItems: 1
103aa1a8ff2SEmmanuel Vadot                maxItems: 4
104aa1a8ff2SEmmanuel Vadot                items:
105aa1a8ff2SEmmanuel Vadot                  maximum: 4
106aa1a8ff2SEmmanuel Vadot
107aa1a8ff2SEmmanuel Vadot            required:
108aa1a8ff2SEmmanuel Vadot              - data-lanes
109aa1a8ff2SEmmanuel Vadot
110aa1a8ff2SEmmanuel Vadot      port@1:
111aa1a8ff2SEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
112aa1a8ff2SEmmanuel Vadot        description:
113aa1a8ff2SEmmanuel Vadot          Stream 0 Output port node
114aa1a8ff2SEmmanuel Vadot
115aa1a8ff2SEmmanuel Vadot      port@2:
116aa1a8ff2SEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
117aa1a8ff2SEmmanuel Vadot        description:
118aa1a8ff2SEmmanuel Vadot          Stream 1 Output port node
119aa1a8ff2SEmmanuel Vadot
120aa1a8ff2SEmmanuel Vadot      port@3:
121aa1a8ff2SEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
122aa1a8ff2SEmmanuel Vadot        description:
123aa1a8ff2SEmmanuel Vadot          Stream 2 Output port node
124aa1a8ff2SEmmanuel Vadot
125aa1a8ff2SEmmanuel Vadot      port@4:
126aa1a8ff2SEmmanuel Vadot        $ref: /schemas/graph.yaml#/properties/port
127aa1a8ff2SEmmanuel Vadot        description:
128aa1a8ff2SEmmanuel Vadot          Stream 3 Output port node
129aa1a8ff2SEmmanuel Vadot
130aa1a8ff2SEmmanuel Vadot    required:
131aa1a8ff2SEmmanuel Vadot      - port@0
132aa1a8ff2SEmmanuel Vadot
133aa1a8ff2SEmmanuel Vadotrequired:
134aa1a8ff2SEmmanuel Vadot  - compatible
135aa1a8ff2SEmmanuel Vadot  - reg
136aa1a8ff2SEmmanuel Vadot  - clocks
137aa1a8ff2SEmmanuel Vadot  - clock-names
138aa1a8ff2SEmmanuel Vadot  - ports
139aa1a8ff2SEmmanuel Vadot
140aa1a8ff2SEmmanuel VadotadditionalProperties: false
141aa1a8ff2SEmmanuel Vadot
142aa1a8ff2SEmmanuel Vadotexamples:
143aa1a8ff2SEmmanuel Vadot  - |
144aa1a8ff2SEmmanuel Vadot    csi@d060000 {
145aa1a8ff2SEmmanuel Vadot        compatible = "starfive,jh7110-csi2rx", "cdns,csi2rx";
146aa1a8ff2SEmmanuel Vadot        reg = <0x0d060000 0x1000>;
147aa1a8ff2SEmmanuel Vadot        clocks = <&byteclock 7>, <&byteclock 6>,
148aa1a8ff2SEmmanuel Vadot                 <&coreclock 8>, <&coreclock 9>,
149aa1a8ff2SEmmanuel Vadot                 <&coreclock 10>, <&coreclock 11>;
150aa1a8ff2SEmmanuel Vadot        clock-names = "sys_clk", "p_clk",
151aa1a8ff2SEmmanuel Vadot                      "pixel_if0_clk", "pixel_if1_clk",
152aa1a8ff2SEmmanuel Vadot                      "pixel_if2_clk", "pixel_if3_clk";
153aa1a8ff2SEmmanuel Vadot        resets = <&bytereset 9>, <&bytereset 4>,
154aa1a8ff2SEmmanuel Vadot                 <&corereset 5>, <&corereset 6>,
155aa1a8ff2SEmmanuel Vadot                 <&corereset 7>, <&corereset 8>;
156aa1a8ff2SEmmanuel Vadot        reset-names = "sys", "reg_bank",
157aa1a8ff2SEmmanuel Vadot                      "pixel_if0", "pixel_if1",
158aa1a8ff2SEmmanuel Vadot                      "pixel_if2", "pixel_if3";
159aa1a8ff2SEmmanuel Vadot        phys = <&csi_phy>;
160aa1a8ff2SEmmanuel Vadot        phy-names = "dphy";
161aa1a8ff2SEmmanuel Vadot
162aa1a8ff2SEmmanuel Vadot        ports {
163aa1a8ff2SEmmanuel Vadot                #address-cells = <1>;
164aa1a8ff2SEmmanuel Vadot                #size-cells = <0>;
165aa1a8ff2SEmmanuel Vadot
166aa1a8ff2SEmmanuel Vadot                port@0 {
167aa1a8ff2SEmmanuel Vadot                    reg = <0>;
168aa1a8ff2SEmmanuel Vadot
169aa1a8ff2SEmmanuel Vadot                    csi2rx_in_sensor: endpoint {
170aa1a8ff2SEmmanuel Vadot                        remote-endpoint = <&sensor_out_csi2rx>;
171aa1a8ff2SEmmanuel Vadot                        clock-lanes = <0>;
172aa1a8ff2SEmmanuel Vadot                        data-lanes = <1 2>;
173aa1a8ff2SEmmanuel Vadot                    };
174aa1a8ff2SEmmanuel Vadot                };
175aa1a8ff2SEmmanuel Vadot
176aa1a8ff2SEmmanuel Vadot                port@1 {
177aa1a8ff2SEmmanuel Vadot                    reg = <1>;
178aa1a8ff2SEmmanuel Vadot
179aa1a8ff2SEmmanuel Vadot                    csi2rx_out_grabber0: endpoint {
180aa1a8ff2SEmmanuel Vadot                        remote-endpoint = <&grabber0_in_csi2rx>;
181aa1a8ff2SEmmanuel Vadot                    };
182aa1a8ff2SEmmanuel Vadot                };
183aa1a8ff2SEmmanuel Vadot
184aa1a8ff2SEmmanuel Vadot                port@2 {
185aa1a8ff2SEmmanuel Vadot                    reg = <2>;
186aa1a8ff2SEmmanuel Vadot
187aa1a8ff2SEmmanuel Vadot                    csi2rx_out_grabber1: endpoint {
188aa1a8ff2SEmmanuel Vadot                        remote-endpoint = <&grabber1_in_csi2rx>;
189aa1a8ff2SEmmanuel Vadot                    };
190aa1a8ff2SEmmanuel Vadot                };
191aa1a8ff2SEmmanuel Vadot
192aa1a8ff2SEmmanuel Vadot                port@3 {
193aa1a8ff2SEmmanuel Vadot                    reg = <3>;
194aa1a8ff2SEmmanuel Vadot
195aa1a8ff2SEmmanuel Vadot                    csi2rx_out_grabber2: endpoint {
196aa1a8ff2SEmmanuel Vadot                        remote-endpoint = <&grabber2_in_csi2rx>;
197aa1a8ff2SEmmanuel Vadot                    };
198aa1a8ff2SEmmanuel Vadot                };
199aa1a8ff2SEmmanuel Vadot
200aa1a8ff2SEmmanuel Vadot                port@4 {
201aa1a8ff2SEmmanuel Vadot                    reg = <4>;
202aa1a8ff2SEmmanuel Vadot
203aa1a8ff2SEmmanuel Vadot                    csi2rx_out_grabber3: endpoint {
204aa1a8ff2SEmmanuel Vadot                        remote-endpoint = <&grabber3_in_csi2rx>;
205aa1a8ff2SEmmanuel Vadot                    };
206aa1a8ff2SEmmanuel Vadot                };
207aa1a8ff2SEmmanuel Vadot        };
208aa1a8ff2SEmmanuel Vadot    };
209aa1a8ff2SEmmanuel Vadot
210aa1a8ff2SEmmanuel Vadot...
211