1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/interconnect/qcom,sdm660.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SDM660 Network-On-Chip interconnect
8
9maintainers:
10  - AngeloGioacchino Del Regno <kholk11@gmail.com>
11
12description: |
13  The Qualcomm SDM660 interconnect providers support adjusting the
14  bandwidth requirements between the various NoC fabrics.
15
16properties:
17  reg:
18    maxItems: 1
19
20  compatible:
21    enum:
22      - qcom,sdm660-a2noc
23      - qcom,sdm660-bimc
24      - qcom,sdm660-cnoc
25      - qcom,sdm660-gnoc
26      - qcom,sdm660-mnoc
27      - qcom,sdm660-snoc
28
29  '#interconnect-cells':
30    const: 1
31
32  clocks:
33    minItems: 1
34    maxItems: 7
35
36  clock-names:
37    minItems: 1
38    maxItems: 7
39
40required:
41  - compatible
42  - reg
43  - '#interconnect-cells'
44  - clock-names
45  - clocks
46
47additionalProperties: false
48
49allOf:
50  - if:
51      properties:
52        compatible:
53          contains:
54            enum:
55              - qcom,sdm660-mnoc
56    then:
57      properties:
58        clocks:
59          items:
60            - description: Bus Clock.
61            - description: Bus A Clock.
62            - description: CPU-NoC High-performance Bus Clock.
63        clock-names:
64          items:
65            - const: bus
66            - const: bus_a
67            - const: iface
68
69  - if:
70      properties:
71        compatible:
72          contains:
73            enum:
74              - qcom,sdm660-a2noc
75    then:
76      properties:
77        clocks:
78          items:
79            - description: Bus Clock.
80            - description: Bus A Clock.
81            - description: IPA Clock.
82            - description: UFS AXI Clock.
83            - description: Aggregate2 UFS AXI Clock.
84            - description: Aggregate2 USB3 AXI Clock.
85            - description: Config NoC USB2 AXI Clock.
86        clock-names:
87          items:
88            - const: bus
89            - const: bus_a
90            - const: ipa
91            - const: ufs_axi
92            - const: aggre2_ufs_axi
93            - const: aggre2_usb3_axi
94            - const: cfg_noc_usb2_axi
95
96  - if:
97      properties:
98        compatible:
99          contains:
100            enum:
101              - qcom,sdm660-bimc
102              - qcom,sdm660-cnoc
103              - qcom,sdm660-gnoc
104              - qcom,sdm660-snoc
105    then:
106      properties:
107        clocks:
108          items:
109            - description: Bus Clock.
110            - description: Bus A Clock.
111        clock-names:
112          items:
113            - const: bus
114            - const: bus_a
115
116examples:
117  - |
118      #include <dt-bindings/clock/qcom,rpmcc.h>
119      #include <dt-bindings/clock/qcom,mmcc-sdm660.h>
120      #include <dt-bindings/clock/qcom,gcc-sdm660.h>
121
122      bimc: interconnect@1008000 {
123              compatible = "qcom,sdm660-bimc";
124              reg = <0x01008000 0x78000>;
125              #interconnect-cells = <1>;
126              clock-names = "bus", "bus_a";
127              clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
128                       <&rpmcc RPM_SMD_BIMC_A_CLK>;
129      };
130
131      cnoc: interconnect@1500000 {
132              compatible = "qcom,sdm660-cnoc";
133              reg = <0x01500000 0x10000>;
134              #interconnect-cells = <1>;
135              clock-names = "bus", "bus_a";
136              clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
137                       <&rpmcc RPM_SMD_CNOC_A_CLK>;
138      };
139
140      snoc: interconnect@1626000 {
141              compatible = "qcom,sdm660-snoc";
142              reg = <0x01626000 0x7090>;
143              #interconnect-cells = <1>;
144              clock-names = "bus", "bus_a";
145              clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
146                       <&rpmcc RPM_SMD_SNOC_A_CLK>;
147      };
148
149      a2noc: interconnect@1704000 {
150              compatible = "qcom,sdm660-a2noc";
151              reg = <0x01704000 0xc100>;
152              #interconnect-cells = <1>;
153              clock-names = "bus",
154                            "bus_a",
155                            "ipa",
156                            "ufs_axi",
157                            "aggre2_ufs_axi",
158                            "aggre2_usb3_axi",
159                            "cfg_noc_usb2_axi";
160              clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>,
161                       <&rpmcc RPM_SMD_AGGR2_NOC_A_CLK>,
162                       <&rpmcc RPM_SMD_IPA_CLK>,
163                       <&gcc GCC_UFS_AXI_CLK>,
164                       <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
165                       <&gcc GCC_AGGRE2_USB3_AXI_CLK>,
166                       <&gcc GCC_CFG_NOC_USB2_AXI_CLK>;
167      };
168
169      mnoc: interconnect@1745000 {
170              compatible = "qcom,sdm660-mnoc";
171              reg = <0x01745000 0xa010>;
172              #interconnect-cells = <1>;
173              clock-names = "bus", "bus_a", "iface";
174              clocks = <&rpmcc RPM_SMD_MMSSNOC_AXI_CLK>,
175                       <&rpmcc RPM_SMD_MMSSNOC_AXI_CLK_A>,
176                       <&mmcc AHB_CLK_SRC>;
177      };
178
179      gnoc: interconnect@17900000 {
180              compatible = "qcom,sdm660-gnoc";
181              reg = <0x17900000 0xe000>;
182              #interconnect-cells = <1>;
183              clock-names = "bus", "bus_a";
184              clocks = <&xo_board>, <&xo_board>;
185      };
186