1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/interconnect/qcom,rpm.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm RPM Network-On-Chip Interconnect
8
9maintainers:
10  - Georgi Djakov <georgi.djakov@linaro.org>
11
12description: |
13  RPM interconnect providers support system bandwidth requirements through
14  RPM processor. The provider is able to communicate with the RPM through
15  the RPM shared memory device.
16
17properties:
18  reg:
19    maxItems: 1
20
21  compatible:
22    enum:
23      - qcom,msm8916-bimc
24      - qcom,msm8916-pcnoc
25      - qcom,msm8916-snoc
26      - qcom,msm8939-bimc
27      - qcom,msm8939-pcnoc
28      - qcom,msm8939-snoc
29      - qcom,msm8996-a0noc
30      - qcom,msm8996-a1noc
31      - qcom,msm8996-a2noc
32      - qcom,msm8996-bimc
33      - qcom,msm8996-cnoc
34      - qcom,msm8996-mnoc
35      - qcom,msm8996-pnoc
36      - qcom,msm8996-snoc
37      - qcom,qcs404-bimc
38      - qcom,qcs404-pcnoc
39      - qcom,qcs404-snoc
40      - qcom,sdm660-a2noc
41      - qcom,sdm660-bimc
42      - qcom,sdm660-cnoc
43      - qcom,sdm660-gnoc
44      - qcom,sdm660-mnoc
45      - qcom,sdm660-snoc
46
47  '#interconnect-cells':
48    description: |
49      Value: <1> is one cell in an interconnect specifier for the
50      interconnect node id, <2> requires the interconnect node id and an
51      extra path tag.
52    enum: [ 1, 2 ]
53
54  clocks:
55    minItems: 2
56    maxItems: 7
57
58  clock-names:
59    minItems: 2
60    maxItems: 7
61
62  power-domains:
63    maxItems: 1
64
65required:
66  - compatible
67  - reg
68  - '#interconnect-cells'
69  - clock-names
70  - clocks
71
72additionalProperties: false
73
74allOf:
75  - if:
76      properties:
77        compatible:
78          contains:
79            enum:
80              - qcom,msm8916-bimc
81              - qcom,msm8916-pcnoc
82              - qcom,msm8916-snoc
83              - qcom,msm8939-bimc
84              - qcom,msm8939-pcnoc
85              - qcom,msm8939-snoc
86              - qcom,msm8996-a1noc
87              - qcom,msm8996-a2noc
88              - qcom,msm8996-bimc
89              - qcom,msm8996-cnoc
90              - qcom,msm8996-pnoc
91              - qcom,msm8996-snoc
92              - qcom,qcs404-bimc
93              - qcom,qcs404-pcnoc
94              - qcom,qcs404-snoc
95              - qcom,sdm660-bimc
96              - qcom,sdm660-cnoc
97              - qcom,sdm660-gnoc
98              - qcom,sdm660-snoc
99
100    then:
101      properties:
102        clock-names:
103          items:
104            - const: bus
105            - const: bus_a
106
107        clocks:
108          items:
109            - description: Bus Clock
110            - description: Bus A Clock
111
112      # Child node's properties
113      patternProperties:
114        '^interconnect-[a-z0-9]+$':
115          type: object
116          description:
117            snoc-mm is a child of snoc, sharing snoc's register address space.
118
119          properties:
120            compatible:
121              enum:
122                - qcom,msm8939-snoc-mm
123
124            '#interconnect-cells':
125              const: 1
126
127            clock-names:
128              items:
129                - const: bus
130                - const: bus_a
131
132            clocks:
133              items:
134                - description: Bus Clock
135                - description: Bus A Clock
136
137          required:
138            - compatible
139            - '#interconnect-cells'
140            - clock-names
141            - clocks
142
143  - if:
144      properties:
145        compatible:
146          contains:
147            enum:
148              - qcom,msm8996-mnoc
149              - qcom,sdm660-mnoc
150
151    then:
152      properties:
153        clock-names:
154          items:
155            - const: bus
156            - const: bus_a
157            - const: iface
158
159        clocks:
160          items:
161            - description: Bus Clock.
162            - description: Bus A Clock.
163            - description: CPU-NoC High-performance Bus Clock.
164
165  - if:
166      properties:
167        compatible:
168          contains:
169            enum:
170              - qcom,msm8996-a0noc
171
172    then:
173      properties:
174        clock-names:
175          items:
176            - const: aggre0_snoc_axi
177            - const: aggre0_cnoc_ahb
178            - const: aggre0_noc_mpu_cfg
179
180        clocks:
181          items:
182            - description: Aggregate0 System NoC AXI Clock.
183            - description: Aggregate0 Config NoC AHB Clock.
184            - description: Aggregate0 NoC MPU Clock.
185
186      required:
187        - power-domains
188
189  - if:
190      properties:
191        compatible:
192          contains:
193            enum:
194              - qcom,sdm660-a2noc
195
196    then:
197      properties:
198        clock-names:
199          items:
200            - const: bus
201            - const: bus_a
202            - const: ipa
203            - const: ufs_axi
204            - const: aggre2_ufs_axi
205            - const: aggre2_usb3_axi
206            - const: cfg_noc_usb2_axi
207
208        clocks:
209          items:
210            - description: Bus Clock.
211            - description: Bus A Clock.
212            - description: IPA Clock.
213            - description: UFS AXI Clock.
214            - description: Aggregate2 UFS AXI Clock.
215            - description: Aggregate2 USB3 AXI Clock.
216            - description: Config NoC USB2 AXI Clock.
217
218examples:
219  - |
220      #include <dt-bindings/clock/qcom,rpmcc.h>
221
222      bimc: interconnect@400000 {
223              compatible = "qcom,msm8916-bimc";
224              reg = <0x00400000 0x62000>;
225              #interconnect-cells = <1>;
226              clock-names = "bus", "bus_a";
227              clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
228                       <&rpmcc RPM_SMD_BIMC_A_CLK>;
229      };
230
231      pcnoc: interconnect@500000 {
232              compatible = "qcom,msm8916-pcnoc";
233              reg = <0x00500000 0x11000>;
234              #interconnect-cells = <1>;
235              clock-names = "bus", "bus_a";
236              clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
237                       <&rpmcc RPM_SMD_PCNOC_A_CLK>;
238      };
239
240      snoc: interconnect@580000 {
241              compatible = "qcom,msm8916-snoc";
242              reg = <0x00580000 0x14000>;
243              #interconnect-cells = <1>;
244              clock-names = "bus", "bus_a";
245              clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
246                       <&rpmcc RPM_SMD_SNOC_A_CLK>;
247      };
248