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
65# Child node's properties
66patternProperties:
67  '^interconnect-[a-z0-9]+$':
68    type: object
69    additionalProperties: false
70    description:
71      snoc-mm is a child of snoc, sharing snoc's register address space.
72
73    properties:
74      compatible:
75        enum:
76          - qcom,msm8939-snoc-mm
77
78      '#interconnect-cells':
79        const: 1
80
81      clock-names:
82        items:
83          - const: bus
84          - const: bus_a
85
86      clocks:
87        items:
88          - description: Bus Clock
89          - description: Bus A Clock
90
91    required:
92      - compatible
93      - '#interconnect-cells'
94      - clock-names
95      - clocks
96
97required:
98  - compatible
99  - reg
100  - '#interconnect-cells'
101  - clock-names
102  - clocks
103
104additionalProperties: false
105
106allOf:
107  - if:
108      properties:
109        compatible:
110          contains:
111            enum:
112              - qcom,msm8916-bimc
113              - qcom,msm8916-pcnoc
114              - qcom,msm8916-snoc
115              - qcom,msm8939-bimc
116              - qcom,msm8939-pcnoc
117              - qcom,msm8939-snoc
118              - qcom,msm8996-a1noc
119              - qcom,msm8996-bimc
120              - qcom,msm8996-cnoc
121              - qcom,msm8996-pnoc
122              - qcom,msm8996-snoc
123              - qcom,qcs404-bimc
124              - qcom,qcs404-pcnoc
125              - qcom,qcs404-snoc
126              - qcom,sdm660-bimc
127              - qcom,sdm660-cnoc
128              - qcom,sdm660-gnoc
129              - qcom,sdm660-snoc
130
131    then:
132      properties:
133        clock-names:
134          items:
135            - const: bus
136            - const: bus_a
137
138        clocks:
139          items:
140            - description: Bus Clock
141            - description: Bus A Clock
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,msm8996-a2noc
195
196    then:
197      properties:
198        clock-names:
199          items:
200            - const: bus
201            - const: bus_a
202            - const: aggre2_ufs_axi
203            - const: ufs_axi
204
205        clocks:
206          items:
207            - description: Bus Clock
208            - description: Bus A Clock
209            - description: Aggregate2 NoC UFS AXI Clock
210            - description: UFS AXI Clock
211
212  - if:
213      properties:
214        compatible:
215          contains:
216            enum:
217              - qcom,sdm660-a2noc
218
219    then:
220      properties:
221        clock-names:
222          items:
223            - const: bus
224            - const: bus_a
225            - const: ipa
226            - const: ufs_axi
227            - const: aggre2_ufs_axi
228            - const: aggre2_usb3_axi
229            - const: cfg_noc_usb2_axi
230
231        clocks:
232          items:
233            - description: Bus Clock.
234            - description: Bus A Clock.
235            - description: IPA Clock.
236            - description: UFS AXI Clock.
237            - description: Aggregate2 UFS AXI Clock.
238            - description: Aggregate2 USB3 AXI Clock.
239            - description: Config NoC USB2 AXI Clock.
240
241  - if:
242      not:
243        properties:
244          compatible:
245            contains:
246              enum:
247                - qcom,msm8939-snoc
248    then:
249      patternProperties:
250        '^interconnect-[a-z0-9]+$': false
251
252examples:
253  - |
254      #include <dt-bindings/clock/qcom,rpmcc.h>
255
256      bimc: interconnect@400000 {
257              compatible = "qcom,msm8916-bimc";
258              reg = <0x00400000 0x62000>;
259              #interconnect-cells = <1>;
260              clock-names = "bus", "bus_a";
261              clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
262                       <&rpmcc RPM_SMD_BIMC_A_CLK>;
263      };
264
265      pcnoc: interconnect@500000 {
266              compatible = "qcom,msm8916-pcnoc";
267              reg = <0x00500000 0x11000>;
268              #interconnect-cells = <1>;
269              clock-names = "bus", "bus_a";
270              clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
271                       <&rpmcc RPM_SMD_PCNOC_A_CLK>;
272      };
273
274      snoc: interconnect@580000 {
275              compatible = "qcom,msm8916-snoc";
276              reg = <0x00580000 0x14000>;
277              #interconnect-cells = <1>;
278              clock-names = "bus", "bus_a";
279              clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
280                       <&rpmcc RPM_SMD_SNOC_A_CLK>;
281      };
282