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-bimc
88              - qcom,msm8996-cnoc
89              - qcom,msm8996-pnoc
90              - qcom,msm8996-snoc
91              - qcom,qcs404-bimc
92              - qcom,qcs404-pcnoc
93              - qcom,qcs404-snoc
94              - qcom,sdm660-bimc
95              - qcom,sdm660-cnoc
96              - qcom,sdm660-gnoc
97              - qcom,sdm660-snoc
98
99    then:
100      properties:
101        clock-names:
102          items:
103            - const: bus
104            - const: bus_a
105
106        clocks:
107          items:
108            - description: Bus Clock
109            - description: Bus A Clock
110
111      # Child node's properties
112      patternProperties:
113        '^interconnect-[a-z0-9]+$':
114          type: object
115          description:
116            snoc-mm is a child of snoc, sharing snoc's register address space.
117
118          properties:
119            compatible:
120              enum:
121                - qcom,msm8939-snoc-mm
122
123            '#interconnect-cells':
124              const: 1
125
126            clock-names:
127              items:
128                - const: bus
129                - const: bus_a
130
131            clocks:
132              items:
133                - description: Bus Clock
134                - description: Bus A Clock
135
136          required:
137            - compatible
138            - '#interconnect-cells'
139            - clock-names
140            - clocks
141
142  - if:
143      properties:
144        compatible:
145          contains:
146            enum:
147              - qcom,msm8996-mnoc
148              - qcom,sdm660-mnoc
149
150    then:
151      properties:
152        clock-names:
153          items:
154            - const: bus
155            - const: bus_a
156            - const: iface
157
158        clocks:
159          items:
160            - description: Bus Clock.
161            - description: Bus A Clock.
162            - description: CPU-NoC High-performance Bus Clock.
163
164  - if:
165      properties:
166        compatible:
167          contains:
168            enum:
169              - qcom,msm8996-a0noc
170
171    then:
172      properties:
173        clock-names:
174          items:
175            - const: aggre0_snoc_axi
176            - const: aggre0_cnoc_ahb
177            - const: aggre0_noc_mpu_cfg
178
179        clocks:
180          items:
181            - description: Aggregate0 System NoC AXI Clock.
182            - description: Aggregate0 Config NoC AHB Clock.
183            - description: Aggregate0 NoC MPU Clock.
184
185      required:
186        - power-domains
187
188  - if:
189      properties:
190        compatible:
191          contains:
192            enum:
193              - qcom,msm8996-a2noc
194
195    then:
196      properties:
197        clock-names:
198          items:
199            - const: bus
200            - const: bus_a
201            - const: aggre2_ufs_axi
202            - const: ufs_axi
203
204        clocks:
205          items:
206            - description: Bus Clock
207            - description: Bus A Clock
208            - description: Aggregate2 NoC UFS AXI Clock
209            - description: UFS AXI Clock
210
211  - if:
212      properties:
213        compatible:
214          contains:
215            enum:
216              - qcom,sdm660-a2noc
217
218    then:
219      properties:
220        clock-names:
221          items:
222            - const: bus
223            - const: bus_a
224            - const: ipa
225            - const: ufs_axi
226            - const: aggre2_ufs_axi
227            - const: aggre2_usb3_axi
228            - const: cfg_noc_usb2_axi
229
230        clocks:
231          items:
232            - description: Bus Clock.
233            - description: Bus A Clock.
234            - description: IPA Clock.
235            - description: UFS AXI Clock.
236            - description: Aggregate2 UFS AXI Clock.
237            - description: Aggregate2 USB3 AXI Clock.
238            - description: Config NoC USB2 AXI Clock.
239
240examples:
241  - |
242      #include <dt-bindings/clock/qcom,rpmcc.h>
243
244      bimc: interconnect@400000 {
245              compatible = "qcom,msm8916-bimc";
246              reg = <0x00400000 0x62000>;
247              #interconnect-cells = <1>;
248              clock-names = "bus", "bus_a";
249              clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
250                       <&rpmcc RPM_SMD_BIMC_A_CLK>;
251      };
252
253      pcnoc: interconnect@500000 {
254              compatible = "qcom,msm8916-pcnoc";
255              reg = <0x00500000 0x11000>;
256              #interconnect-cells = <1>;
257              clock-names = "bus", "bus_a";
258              clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
259                       <&rpmcc RPM_SMD_PCNOC_A_CLK>;
260      };
261
262      snoc: interconnect@580000 {
263              compatible = "qcom,msm8916-snoc";
264              reg = <0x00580000 0x14000>;
265              #interconnect-cells = <1>;
266              clock-names = "bus", "bus_a";
267              clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
268                       <&rpmcc RPM_SMD_SNOC_A_CLK>;
269      };
270