1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2
3%YAML 1.2
4---
5$id: "http://devicetree.org/schemas/media/qcom,sm8250-camss.yaml#"
6$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7
8title: Qualcomm CAMSS ISP
9
10maintainers:
11  - Robert Foss <robert.foss@linaro.org>
12
13description: |
14  The CAMSS IP is a CSI decoder and ISP present on Qualcomm platforms.
15
16properties:
17  compatible:
18    const: qcom,sm8250-camss
19
20  clocks:
21    minItems: 37
22    maxItems: 37
23
24  clock-names:
25    items:
26      - const: cam_ahb_clk
27      - const: cam_hf_axi
28      - const: cam_sf_axi
29      - const: camnoc_axi
30      - const: camnoc_axi_src
31      - const: core_ahb
32      - const: cpas_ahb
33      - const: csiphy0
34      - const: csiphy0_timer
35      - const: csiphy1
36      - const: csiphy1_timer
37      - const: csiphy2
38      - const: csiphy2_timer
39      - const: csiphy3
40      - const: csiphy3_timer
41      - const: csiphy4
42      - const: csiphy4_timer
43      - const: csiphy5
44      - const: csiphy5_timer
45      - const: slow_ahb_src
46      - const: vfe0_ahb
47      - const: vfe0_axi
48      - const: vfe0
49      - const: vfe0_cphy_rx
50      - const: vfe0_csid
51      - const: vfe0_areg
52      - const: vfe1_ahb
53      - const: vfe1_axi
54      - const: vfe1
55      - const: vfe1_cphy_rx
56      - const: vfe1_csid
57      - const: vfe1_areg
58      - const: vfe_lite_ahb
59      - const: vfe_lite_axi
60      - const: vfe_lite
61      - const: vfe_lite_cphy_rx
62      - const: vfe_lite_csid
63
64  interrupts:
65    minItems: 14
66    maxItems: 14
67
68  interrupt-names:
69    items:
70      - const: csiphy0
71      - const: csiphy1
72      - const: csiphy2
73      - const: csiphy3
74      - const: csiphy4
75      - const: csiphy5
76      - const: csid0
77      - const: csid1
78      - const: csid2
79      - const: csid3
80      - const: vfe0
81      - const: vfe1
82      - const: vfe_lite0
83      - const: vfe_lite1
84
85  iommus:
86    minItems: 8
87    maxItems: 8
88
89  interconnects:
90    minItems: 4
91    maxItems: 4
92
93  interconnect-names:
94    items:
95      - const: cam_ahb
96      - const: cam_hf_0_mnoc
97      - const: cam_sf_0_mnoc
98      - const: cam_sf_icp_mnoc
99
100  power-domains:
101    items:
102      - description: IFE0 GDSC - Image Front End, Global Distributed Switch Controller.
103      - description: IFE1 GDSC - Image Front End, Global Distributed Switch Controller.
104      - description: Titan GDSC - Titan ISP Block, Global Distributed Switch Controller.
105
106  ports:
107    $ref: /schemas/graph.yaml#/properties/ports
108
109    description:
110      CSI input ports.
111
112    properties:
113      port@0:
114        $ref: /schemas/graph.yaml#/$defs/port-base
115        unevaluatedProperties: false
116        description:
117          Input port for receiving CSI data.
118
119        properties:
120          endpoint:
121            $ref: video-interfaces.yaml#
122            unevaluatedProperties: false
123
124            properties:
125              clock-lanes:
126                maxItems: 1
127
128              data-lanes:
129                minItems: 1
130                maxItems: 4
131
132            required:
133              - clock-lanes
134              - data-lanes
135
136      port@1:
137        $ref: /schemas/graph.yaml#/$defs/port-base
138        unevaluatedProperties: false
139        description:
140          Input port for receiving CSI data.
141
142        properties:
143          endpoint:
144            $ref: video-interfaces.yaml#
145            unevaluatedProperties: false
146
147            properties:
148              clock-lanes:
149                maxItems: 1
150
151              data-lanes:
152                minItems: 1
153                maxItems: 4
154
155            required:
156              - clock-lanes
157              - data-lanes
158
159      port@2:
160        $ref: /schemas/graph.yaml#/$defs/port-base
161        unevaluatedProperties: false
162        description:
163          Input port for receiving CSI data.
164
165        properties:
166          endpoint:
167            $ref: video-interfaces.yaml#
168            unevaluatedProperties: false
169
170            properties:
171              clock-lanes:
172                maxItems: 1
173
174              data-lanes:
175                minItems: 1
176                maxItems: 4
177
178            required:
179              - clock-lanes
180              - data-lanes
181
182      port@3:
183        $ref: /schemas/graph.yaml#/$defs/port-base
184        unevaluatedProperties: false
185        description:
186          Input port for receiving CSI data.
187
188        properties:
189          endpoint:
190            $ref: video-interfaces.yaml#
191            unevaluatedProperties: false
192
193            properties:
194              clock-lanes:
195                maxItems: 1
196
197              data-lanes:
198                minItems: 1
199                maxItems: 4
200
201            required:
202              - clock-lanes
203              - data-lanes
204
205      port@4:
206        $ref: /schemas/graph.yaml#/$defs/port-base
207        unevaluatedProperties: false
208        description:
209          Input port for receiving CSI data.
210
211        properties:
212          endpoint:
213            $ref: video-interfaces.yaml#
214            unevaluatedProperties: false
215
216            properties:
217              clock-lanes:
218                maxItems: 1
219
220              data-lanes:
221                minItems: 1
222                maxItems: 4
223
224            required:
225              - clock-lanes
226              - data-lanes
227
228      port@5:
229        $ref: /schemas/graph.yaml#/$defs/port-base
230        unevaluatedProperties: false
231        description:
232          Input port for receiving CSI data.
233
234        properties:
235          endpoint:
236            $ref: video-interfaces.yaml#
237            unevaluatedProperties: false
238
239            properties:
240              clock-lanes:
241                maxItems: 1
242
243              data-lanes:
244                minItems: 1
245                maxItems: 4
246
247            required:
248              - clock-lanes
249              - data-lanes
250
251  reg:
252    minItems: 10
253    maxItems: 10
254
255  reg-names:
256    items:
257      - const: csiphy0
258      - const: csiphy1
259      - const: csiphy2
260      - const: csiphy3
261      - const: csiphy4
262      - const: csiphy5
263      - const: vfe0
264      - const: vfe1
265      - const: vfe_lite0
266      - const: vfe_lite1
267
268  vdda-phy-supply:
269    description:
270      Phandle to a regulator supply to PHY core block.
271
272  vdda-pll-supply:
273    description:
274      Phandle to 1.8V regulator supply to PHY refclk pll block.
275
276required:
277  - clock-names
278  - clocks
279  - compatible
280  - interconnects
281  - interconnect-names
282  - interrupts
283  - interrupt-names
284  - iommus
285  - power-domains
286  - reg
287  - reg-names
288  - vdda-phy-supply
289  - vdda-pll-supply
290
291additionalProperties: false
292
293examples:
294  - |
295    #include <dt-bindings/interrupt-controller/arm-gic.h>
296    #include <dt-bindings/clock/qcom,camcc-sm8250.h>
297    #include <dt-bindings/interconnect/qcom,sm8250.h>
298    #include <dt-bindings/clock/qcom,gcc-sm8250.h>
299    #include <dt-bindings/power/qcom-rpmpd.h>
300
301    soc {
302        #address-cells = <2>;
303        #size-cells = <2>;
304
305        camss: camss@ac6a000 {
306            compatible = "qcom,sm8250-camss";
307
308            reg = <0 0xac6a000 0 0x2000>,
309                  <0 0xac6c000 0 0x2000>,
310                  <0 0xac6e000 0 0x1000>,
311                  <0 0xac70000 0 0x1000>,
312                  <0 0xac72000 0 0x1000>,
313                  <0 0xac74000 0 0x1000>,
314                  <0 0xacb4000 0 0xd000>,
315                  <0 0xacc3000 0 0xd000>,
316                  <0 0xacd9000 0 0x2200>,
317                  <0 0xacdb200 0 0x2200>;
318            reg-names = "csiphy0",
319                        "csiphy1",
320                        "csiphy2",
321                        "csiphy3",
322                        "csiphy4",
323                        "csiphy5",
324                        "vfe0",
325                        "vfe1",
326                        "vfe_lite0",
327                        "vfe_lite1";
328
329            vdda-phy-supply = <&vreg_l5a_0p88>;
330            vdda-pll-supply = <&vreg_l9a_1p2>;
331
332            interrupts = <GIC_SPI 477 IRQ_TYPE_LEVEL_HIGH>,
333                         <GIC_SPI 478 IRQ_TYPE_LEVEL_HIGH>,
334                         <GIC_SPI 479 IRQ_TYPE_LEVEL_HIGH>,
335                         <GIC_SPI 448 IRQ_TYPE_LEVEL_HIGH>,
336                         <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>,
337                         <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
338                         <GIC_SPI 464 IRQ_TYPE_LEVEL_HIGH>,
339                         <GIC_SPI 466 IRQ_TYPE_LEVEL_HIGH>,
340                         <GIC_SPI 468 IRQ_TYPE_LEVEL_HIGH>,
341                         <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>,
342                         <GIC_SPI 465 IRQ_TYPE_LEVEL_HIGH>,
343                         <GIC_SPI 467 IRQ_TYPE_LEVEL_HIGH>,
344                         <GIC_SPI 469 IRQ_TYPE_LEVEL_HIGH>,
345                         <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>;
346            interrupt-names = "csiphy0",
347                              "csiphy1",
348                              "csiphy2",
349                              "csiphy3",
350                              "csiphy4",
351                              "csiphy5",
352                              "csid0",
353                              "csid1",
354                              "csid2",
355                              "csid3",
356                              "vfe0",
357                              "vfe1",
358                              "vfe_lite0",
359                              "vfe_lite1";
360
361            power-domains = <&camcc IFE_0_GDSC>,
362                            <&camcc IFE_1_GDSC>,
363                            <&camcc TITAN_TOP_GDSC>;
364
365            clocks = <&gcc GCC_CAMERA_AHB_CLK>,
366                     <&gcc GCC_CAMERA_HF_AXI_CLK>,
367                     <&gcc GCC_CAMERA_SF_AXI_CLK>,
368                     <&camcc CAM_CC_CAMNOC_AXI_CLK>,
369                     <&camcc CAM_CC_CAMNOC_AXI_CLK_SRC>,
370                     <&camcc CAM_CC_CORE_AHB_CLK>,
371                     <&camcc CAM_CC_CPAS_AHB_CLK>,
372                     <&camcc CAM_CC_CSIPHY0_CLK>,
373                     <&camcc CAM_CC_CSI0PHYTIMER_CLK>,
374                     <&camcc CAM_CC_CSIPHY1_CLK>,
375                     <&camcc CAM_CC_CSI1PHYTIMER_CLK>,
376                     <&camcc CAM_CC_CSIPHY2_CLK>,
377                     <&camcc CAM_CC_CSI2PHYTIMER_CLK>,
378                     <&camcc CAM_CC_CSIPHY3_CLK>,
379                     <&camcc CAM_CC_CSI3PHYTIMER_CLK>,
380                     <&camcc CAM_CC_CSIPHY4_CLK>,
381                     <&camcc CAM_CC_CSI4PHYTIMER_CLK>,
382                     <&camcc CAM_CC_CSIPHY5_CLK>,
383                     <&camcc CAM_CC_CSI5PHYTIMER_CLK>,
384                     <&camcc CAM_CC_SLOW_AHB_CLK_SRC>,
385                     <&camcc CAM_CC_IFE_0_AHB_CLK>,
386                     <&camcc CAM_CC_IFE_0_AXI_CLK>,
387                     <&camcc CAM_CC_IFE_0_CLK>,
388                     <&camcc CAM_CC_IFE_0_CPHY_RX_CLK>,
389                     <&camcc CAM_CC_IFE_0_CSID_CLK>,
390                     <&camcc CAM_CC_IFE_0_AREG_CLK>,
391                     <&camcc CAM_CC_IFE_1_AHB_CLK>,
392                     <&camcc CAM_CC_IFE_1_AXI_CLK>,
393                     <&camcc CAM_CC_IFE_1_CLK>,
394                     <&camcc CAM_CC_IFE_1_CPHY_RX_CLK>,
395                     <&camcc CAM_CC_IFE_1_CSID_CLK>,
396                     <&camcc CAM_CC_IFE_1_AREG_CLK>,
397                     <&camcc CAM_CC_IFE_LITE_AHB_CLK>,
398                     <&camcc CAM_CC_IFE_LITE_AXI_CLK>,
399                     <&camcc CAM_CC_IFE_LITE_CLK>,
400                     <&camcc CAM_CC_IFE_LITE_CPHY_RX_CLK>,
401                     <&camcc CAM_CC_IFE_LITE_CSID_CLK>;
402            clock-names = "cam_ahb_clk",
403                          "cam_hf_axi",
404                          "cam_sf_axi",
405                          "camnoc_axi",
406                          "camnoc_axi_src",
407                          "core_ahb",
408                          "cpas_ahb",
409                          "csiphy0",
410                          "csiphy0_timer",
411                          "csiphy1",
412                          "csiphy1_timer",
413                          "csiphy2",
414                          "csiphy2_timer",
415                          "csiphy3",
416                          "csiphy3_timer",
417                          "csiphy4",
418                          "csiphy4_timer",
419                          "csiphy5",
420                          "csiphy5_timer",
421                          "slow_ahb_src",
422                          "vfe0_ahb",
423                          "vfe0_axi",
424                          "vfe0",
425                          "vfe0_cphy_rx",
426                          "vfe0_csid",
427                          "vfe0_areg",
428                          "vfe1_ahb",
429                          "vfe1_axi",
430                          "vfe1",
431                          "vfe1_cphy_rx",
432                          "vfe1_csid",
433                          "vfe1_areg",
434                          "vfe_lite_ahb",
435                          "vfe_lite_axi",
436                          "vfe_lite",
437                          "vfe_lite_cphy_rx",
438                          "vfe_lite_csid";
439
440            iommus = <&apps_smmu 0x800 0x400>,
441                     <&apps_smmu 0x801 0x400>,
442                     <&apps_smmu 0x840 0x400>,
443                     <&apps_smmu 0x841 0x400>,
444                     <&apps_smmu 0xC00 0x400>,
445                     <&apps_smmu 0xC01 0x400>,
446                     <&apps_smmu 0xC40 0x400>,
447                     <&apps_smmu 0xC41 0x400>;
448
449            interconnects = <&gem_noc MASTER_AMPSS_M0 &config_noc SLAVE_CAMERA_CFG>,
450                            <&mmss_noc MASTER_CAMNOC_HF &mc_virt SLAVE_EBI_CH0>,
451                            <&mmss_noc MASTER_CAMNOC_SF &mc_virt SLAVE_EBI_CH0>,
452                            <&mmss_noc MASTER_CAMNOC_ICP &mc_virt SLAVE_EBI_CH0>;
453            interconnect-names = "cam_ahb",
454                                 "cam_hf_0_mnoc",
455                                 "cam_sf_0_mnoc",
456                                 "cam_sf_icp_mnoc";
457
458            ports {
459                #address-cells = <1>;
460                #size-cells = <0>;
461            };
462        };
463    };
464