Merge tag 'linux-kselftest-fixes-5.15-rc5' of git://git.kernel.org/pub/scm/linux...
[platform/kernel/linux-rpi.git] / Documentation / devicetree / bindings / interconnect / qcom,sdm660.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,sdm660.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm SDM660 Network-On-Chip interconnect
8
9 maintainers:
10   - AngeloGioacchino Del Regno <kholk11@gmail.com>
11
12 description: |
13   The Qualcomm SDM660 interconnect providers support adjusting the
14   bandwidth requirements between the various NoC fabrics.
15
16 properties:
17   reg:
18     maxItems: 1
19
20   compatible:
21     enum:
22       - qcom,sdm660-a2noc
23       - qcom,sdm660-bimc
24       - qcom,sdm660-cnoc
25       - qcom,sdm660-gnoc
26       - qcom,sdm660-mnoc
27       - qcom,sdm660-snoc
28
29   '#interconnect-cells':
30     const: 1
31
32   clocks:
33     minItems: 1
34     maxItems: 7
35
36   clock-names:
37     minItems: 1
38     maxItems: 7
39
40 required:
41   - compatible
42   - reg
43   - '#interconnect-cells'
44   - clock-names
45   - clocks
46
47 additionalProperties: false
48
49 allOf:
50   - if:
51       properties:
52         compatible:
53           contains:
54             enum:
55               - qcom,sdm660-mnoc
56     then:
57       properties:
58         clocks:
59           items:
60             - description: Bus Clock.
61             - description: Bus A Clock.
62             - description: CPU-NoC High-performance Bus Clock.
63         clock-names:
64           items:
65             - const: bus
66             - const: bus_a
67             - const: iface
68
69   - if:
70       properties:
71         compatible:
72           contains:
73             enum:
74               - qcom,sdm660-a2noc
75     then:
76       properties:
77         clocks:
78           items:
79             - description: Bus Clock.
80             - description: Bus A Clock.
81             - description: IPA Clock.
82             - description: UFS AXI Clock.
83             - description: Aggregate2 UFS AXI Clock.
84             - description: Aggregate2 USB3 AXI Clock.
85             - description: Config NoC USB2 AXI Clock.
86         clock-names:
87           items:
88             - const: bus
89             - const: bus_a
90             - const: ipa
91             - const: ufs_axi
92             - const: aggre2_ufs_axi
93             - const: aggre2_usb3_axi
94             - const: cfg_noc_usb2_axi
95
96   - if:
97       properties:
98         compatible:
99           contains:
100             enum:
101               - qcom,sdm660-bimc
102               - qcom,sdm660-cnoc
103               - qcom,sdm660-gnoc
104               - qcom,sdm660-snoc
105     then:
106       properties:
107         clocks:
108           items:
109             - description: Bus Clock.
110             - description: Bus A Clock.
111         clock-names:
112           items:
113             - const: bus
114             - const: bus_a
115
116 examples:
117   - |
118       #include <dt-bindings/clock/qcom,rpmcc.h>
119       #include <dt-bindings/clock/qcom,mmcc-sdm660.h>
120       #include <dt-bindings/clock/qcom,gcc-sdm660.h>
121
122       bimc: interconnect@1008000 {
123               compatible = "qcom,sdm660-bimc";
124               reg = <0x01008000 0x78000>;
125               #interconnect-cells = <1>;
126               clock-names = "bus", "bus_a";
127               clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
128                        <&rpmcc RPM_SMD_BIMC_A_CLK>;
129       };
130
131       cnoc: interconnect@1500000 {
132               compatible = "qcom,sdm660-cnoc";
133               reg = <0x01500000 0x10000>;
134               #interconnect-cells = <1>;
135               clock-names = "bus", "bus_a";
136               clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
137                        <&rpmcc RPM_SMD_CNOC_A_CLK>;
138       };
139
140       snoc: interconnect@1626000 {
141               compatible = "qcom,sdm660-snoc";
142               reg = <0x01626000 0x7090>;
143               #interconnect-cells = <1>;
144               clock-names = "bus", "bus_a";
145               clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
146                        <&rpmcc RPM_SMD_SNOC_A_CLK>;
147       };
148
149       a2noc: interconnect@1704000 {
150               compatible = "qcom,sdm660-a2noc";
151               reg = <0x01704000 0xc100>;
152               #interconnect-cells = <1>;
153               clock-names = "bus",
154                             "bus_a",
155                             "ipa",
156                             "ufs_axi",
157                             "aggre2_ufs_axi",
158                             "aggre2_usb3_axi",
159                             "cfg_noc_usb2_axi";
160               clocks = <&rpmcc RPM_SMD_AGGR2_NOC_CLK>,
161                        <&rpmcc RPM_SMD_AGGR2_NOC_A_CLK>,
162                        <&rpmcc RPM_SMD_IPA_CLK>,
163                        <&gcc GCC_UFS_AXI_CLK>,
164                        <&gcc GCC_AGGRE2_UFS_AXI_CLK>,
165                        <&gcc GCC_AGGRE2_USB3_AXI_CLK>,
166                        <&gcc GCC_CFG_NOC_USB2_AXI_CLK>;
167       };
168
169       mnoc: interconnect@1745000 {
170               compatible = "qcom,sdm660-mnoc";
171               reg = <0x01745000 0xa010>;
172               #interconnect-cells = <1>;
173               clock-names = "bus", "bus_a", "iface";
174               clocks = <&rpmcc RPM_SMD_MMSSNOC_AXI_CLK>,
175                        <&rpmcc RPM_SMD_MMSSNOC_AXI_CLK_A>,
176                        <&mmcc AHB_CLK_SRC>;
177       };
178
179       gnoc: interconnect@17900000 {
180               compatible = "qcom,sdm660-gnoc";
181               reg = <0x17900000 0xe000>;
182               #interconnect-cells = <1>;
183               clock-names = "bus", "bus_a";
184               clocks = <&xo_board>, <&xo_board>;
185       };