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,msm8939-snoc-mm
30      - qcom,msm8996-a0noc
31      - qcom,msm8996-a1noc
32      - qcom,msm8996-a2noc
33      - qcom,msm8996-bimc
34      - qcom,msm8996-cnoc
35      - qcom,msm8996-mnoc
36      - qcom,msm8996-pnoc
37      - qcom,msm8996-snoc
38      - qcom,qcs404-bimc
39      - qcom,qcs404-pcnoc
40      - qcom,qcs404-snoc
41      - qcom,sdm660-a2noc
42      - qcom,sdm660-bimc
43      - qcom,sdm660-cnoc
44      - qcom,sdm660-gnoc
45      - qcom,sdm660-mnoc
46      - qcom,sdm660-snoc
47
48  '#interconnect-cells':
49    const: 1
50
51  clocks:
52    minItems: 2
53    maxItems: 7
54
55  clock-names:
56    minItems: 2
57    maxItems: 7
58
59  power-domains:
60    maxItems: 1
61
62required:
63  - compatible
64  - reg
65  - '#interconnect-cells'
66  - clock-names
67  - clocks
68
69additionalProperties: false
70
71allOf:
72  - if:
73      properties:
74        compatible:
75          contains:
76            enum:
77              - qcom,msm8916-bimc
78              - qcom,msm8916-pcnoc
79              - qcom,msm8916-snoc
80              - qcom,msm8939-bimc
81              - qcom,msm8939-pcnoc
82              - qcom,msm8939-snoc
83              - qcom,msm8939-snoc-mm
84              - qcom,msm8996-a1noc
85              - qcom,msm8996-a2noc
86              - qcom,msm8996-bimc
87              - qcom,msm8996-cnoc
88              - qcom,msm8996-pnoc
89              - qcom,msm8996-snoc
90              - qcom,qcs404-bimc
91              - qcom,qcs404-pcnoc
92              - qcom,qcs404-snoc
93              - qcom,sdm660-bimc
94              - qcom,sdm660-cnoc
95              - qcom,sdm660-gnoc
96              - qcom,sdm660-snoc
97
98      then:
99        properties:
100          clock-names:
101            items:
102              - const: bus
103              - const: bus_a
104
105          clocks:
106            items:
107              - description: Bus Clock
108              - description: Bus A Clock
109
110  - if:
111      properties:
112        compatible:
113          contains:
114            enum:
115              - qcom,msm8996-mnoc
116              - qcom,sdm660-mnoc
117
118    then:
119      properties:
120        clock-names:
121          items:
122            - const: bus
123            - const: bus_a
124            - const: iface
125
126        clocks:
127          items:
128            - description: Bus Clock.
129            - description: Bus A Clock.
130            - description: CPU-NoC High-performance Bus Clock.
131
132  - if:
133      properties:
134        compatible:
135          contains:
136            enum:
137              - qcom,msm8996-a0noc
138
139    then:
140      properties:
141        clock-names:
142          items:
143            - const: aggre0_snoc_axi
144            - const: aggre0_cnoc_ahb
145            - const: aggre0_noc_mpu_cfg
146
147        clocks:
148          items:
149            - description: Aggregate0 System NoC AXI Clock.
150            - description: Aggregate0 Config NoC AHB Clock.
151            - description: Aggregate0 NoC MPU Clock.
152
153      required:
154        - power-domains
155
156  - if:
157      properties:
158        compatible:
159          contains:
160            enum:
161              - qcom,sdm660-a2noc
162
163    then:
164      properties:
165        clock-names:
166          items:
167            - const: bus
168            - const: bus_a
169            - const: ipa
170            - const: ufs_axi
171            - const: aggre2_ufs_axi
172            - const: aggre2_usb3_axi
173            - const: cfg_noc_usb2_axi
174
175        clocks:
176          items:
177            - description: Bus Clock.
178            - description: Bus A Clock.
179            - description: IPA Clock.
180            - description: UFS AXI Clock.
181            - description: Aggregate2 UFS AXI Clock.
182            - description: Aggregate2 USB3 AXI Clock.
183            - description: Config NoC USB2 AXI Clock.
184
185examples:
186  - |
187      #include <dt-bindings/clock/qcom,rpmcc.h>
188
189      bimc: interconnect@400000 {
190              compatible = "qcom,msm8916-bimc";
191              reg = <0x00400000 0x62000>;
192              #interconnect-cells = <1>;
193              clock-names = "bus", "bus_a";
194              clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
195                       <&rpmcc RPM_SMD_BIMC_A_CLK>;
196      };
197
198      pcnoc: interconnect@500000 {
199              compatible = "qcom,msm8916-pcnoc";
200              reg = <0x00500000 0x11000>;
201              #interconnect-cells = <1>;
202              clock-names = "bus", "bus_a";
203              clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
204                       <&rpmcc RPM_SMD_PCNOC_A_CLK>;
205      };
206
207      snoc: interconnect@580000 {
208              compatible = "qcom,msm8916-snoc";
209              reg = <0x00580000 0x14000>;
210              #interconnect-cells = <1>;
211              clock-names = "bus", "bus_a";
212              clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
213                       <&rpmcc RPM_SMD_SNOC_A_CLK>;
214      };
215