Merge tag 'for-5.18/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device...
[linux-2.6-microblaze.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     const: 1
49
50   clocks:
51     minItems: 2
52     maxItems: 7
53
54   clock-names:
55     minItems: 2
56     maxItems: 7
57
58   power-domains:
59     maxItems: 1
60
61 required:
62   - compatible
63   - reg
64   - '#interconnect-cells'
65   - clock-names
66   - clocks
67
68 additionalProperties: false
69
70 allOf:
71   - if:
72       properties:
73         compatible:
74           contains:
75             enum:
76               - qcom,msm8916-bimc
77               - qcom,msm8916-pcnoc
78               - qcom,msm8916-snoc
79               - qcom,msm8939-bimc
80               - qcom,msm8939-pcnoc
81               - qcom,msm8939-snoc
82               - qcom,msm8996-a1noc
83               - qcom,msm8996-a2noc
84               - qcom,msm8996-bimc
85               - qcom,msm8996-cnoc
86               - qcom,msm8996-pnoc
87               - qcom,msm8996-snoc
88               - qcom,qcs404-bimc
89               - qcom,qcs404-pcnoc
90               - qcom,qcs404-snoc
91               - qcom,sdm660-bimc
92               - qcom,sdm660-cnoc
93               - qcom,sdm660-gnoc
94               - qcom,sdm660-snoc
95
96       then:
97         properties:
98           clock-names:
99             items:
100               - const: bus
101               - const: bus_a
102
103           clocks:
104             items:
105               - description: Bus Clock
106               - description: Bus A Clock
107
108         # Child node's properties
109         patternProperties:
110           '^interconnect-[a-z0-9]+$':
111             type: object
112             description:
113               snoc-mm is a child of snoc, sharing snoc's register address space.
114
115             properties:
116               compatible:
117                 enum:
118                   - qcom,msm8939-snoc-mm
119
120               '#interconnect-cells':
121                 const: 1
122
123               clock-names:
124                 items:
125                   - const: bus
126                   - const: bus_a
127
128               clocks:
129                 items:
130                   - description: Bus Clock
131                   - description: Bus A Clock
132
133             required:
134               - compatible
135               - '#interconnect-cells'
136               - clock-names
137               - clocks
138
139   - if:
140       properties:
141         compatible:
142           contains:
143             enum:
144               - qcom,msm8996-mnoc
145               - qcom,sdm660-mnoc
146
147     then:
148       properties:
149         clock-names:
150           items:
151             - const: bus
152             - const: bus_a
153             - const: iface
154
155         clocks:
156           items:
157             - description: Bus Clock.
158             - description: Bus A Clock.
159             - description: CPU-NoC High-performance Bus Clock.
160
161   - if:
162       properties:
163         compatible:
164           contains:
165             enum:
166               - qcom,msm8996-a0noc
167
168     then:
169       properties:
170         clock-names:
171           items:
172             - const: aggre0_snoc_axi
173             - const: aggre0_cnoc_ahb
174             - const: aggre0_noc_mpu_cfg
175
176         clocks:
177           items:
178             - description: Aggregate0 System NoC AXI Clock.
179             - description: Aggregate0 Config NoC AHB Clock.
180             - description: Aggregate0 NoC MPU Clock.
181
182       required:
183         - power-domains
184
185   - if:
186       properties:
187         compatible:
188           contains:
189             enum:
190               - qcom,sdm660-a2noc
191
192     then:
193       properties:
194         clock-names:
195           items:
196             - const: bus
197             - const: bus_a
198             - const: ipa
199             - const: ufs_axi
200             - const: aggre2_ufs_axi
201             - const: aggre2_usb3_axi
202             - const: cfg_noc_usb2_axi
203
204         clocks:
205           items:
206             - description: Bus Clock.
207             - description: Bus A Clock.
208             - description: IPA Clock.
209             - description: UFS AXI Clock.
210             - description: Aggregate2 UFS AXI Clock.
211             - description: Aggregate2 USB3 AXI Clock.
212             - description: Config NoC USB2 AXI Clock.
213
214 examples:
215   - |
216       #include <dt-bindings/clock/qcom,rpmcc.h>
217
218       bimc: interconnect@400000 {
219               compatible = "qcom,msm8916-bimc";
220               reg = <0x00400000 0x62000>;
221               #interconnect-cells = <1>;
222               clock-names = "bus", "bus_a";
223               clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
224                        <&rpmcc RPM_SMD_BIMC_A_CLK>;
225       };
226
227       pcnoc: interconnect@500000 {
228               compatible = "qcom,msm8916-pcnoc";
229               reg = <0x00500000 0x11000>;
230               #interconnect-cells = <1>;
231               clock-names = "bus", "bus_a";
232               clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
233                        <&rpmcc RPM_SMD_PCNOC_A_CLK>;
234       };
235
236       snoc: interconnect@580000 {
237               compatible = "qcom,msm8916-snoc";
238               reg = <0x00580000 0x14000>;
239               #interconnect-cells = <1>;
240               clock-names = "bus", "bus_a";
241               clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
242                        <&rpmcc RPM_SMD_SNOC_A_CLK>;
243       };