GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / interconnect / qcom,rpm.yaml
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
7 title: Qualcomm RPM Network-On-Chip Interconnect
8
9 maintainers:
10   - Georgi Djakov <georgi.djakov@linaro.org>
11
12 description: |
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
17 properties:
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 required:
66   - compatible
67   - reg
68   - '#interconnect-cells'
69   - clock-names
70   - clocks
71
72 additionalProperties: false
73
74 allOf:
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
218 examples:
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       };