GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / interconnect / qcom,qcm2290.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,qcm2290.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm QCM2290 Network-On-Chip interconnect
8
9 maintainers:
10   - Shawn Guo <shawn.guo@linaro.org>
11
12 description: |
13   The Qualcomm QCM2290 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,qcm2290-bimc
23       - qcom,qcm2290-cnoc
24       - qcom,qcm2290-snoc
25
26   '#interconnect-cells':
27     const: 1
28
29   clock-names:
30     items:
31       - const: bus
32       - const: bus_a
33
34   clocks:
35     items:
36       - description: Bus Clock
37       - description: Bus A Clock
38
39 # Child node's properties
40 patternProperties:
41   '^interconnect-[a-z0-9]+$':
42     type: object
43     description:
44       The interconnect providers do not have a separate QoS register space,
45       but share parent's space.
46
47     properties:
48       compatible:
49         enum:
50           - qcom,qcm2290-qup-virt
51           - qcom,qcm2290-mmrt-virt
52           - qcom,qcm2290-mmnrt-virt
53
54       '#interconnect-cells':
55         const: 1
56
57       clock-names:
58         items:
59           - const: bus
60           - const: bus_a
61
62       clocks:
63         items:
64           - description: Bus Clock
65           - description: Bus A Clock
66
67     required:
68       - compatible
69       - '#interconnect-cells'
70       - clock-names
71       - clocks
72
73     additionalProperties: false
74
75 required:
76   - compatible
77   - reg
78   - '#interconnect-cells'
79   - clock-names
80   - clocks
81
82 additionalProperties: false
83
84 examples:
85   - |
86     #include <dt-bindings/clock/qcom,rpmcc.h>
87
88     snoc: interconnect@1880000 {
89         compatible = "qcom,qcm2290-snoc";
90         reg = <0x01880000 0x60200>;
91         #interconnect-cells = <1>;
92         clock-names = "bus", "bus_a";
93         clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
94                  <&rpmcc RPM_SMD_SNOC_A_CLK>;
95
96         qup_virt: interconnect-qup {
97             compatible = "qcom,qcm2290-qup-virt";
98             #interconnect-cells = <1>;
99             clock-names = "bus", "bus_a";
100             clocks = <&rpmcc RPM_SMD_QUP_CLK>,
101                      <&rpmcc RPM_SMD_QUP_A_CLK>;
102         };
103
104         mmnrt_virt: interconnect-mmnrt {
105             compatible = "qcom,qcm2290-mmnrt-virt";
106             #interconnect-cells = <1>;
107             clock-names = "bus", "bus_a";
108             clocks = <&rpmcc RPM_SMD_MMNRT_CLK>,
109                      <&rpmcc RPM_SMD_MMNRT_A_CLK>;
110         };
111
112         mmrt_virt: interconnect-mmrt {
113             compatible = "qcom,qcm2290-mmrt-virt";
114             #interconnect-cells = <1>;
115             clock-names = "bus", "bus_a";
116             clocks = <&rpmcc RPM_SMD_MMRT_CLK>,
117                      <&rpmcc RPM_SMD_MMRT_A_CLK>;
118         };
119     };
120
121     cnoc: interconnect@1900000 {
122         compatible = "qcom,qcm2290-cnoc";
123         reg = <0x01900000 0x8200>;
124         #interconnect-cells = <1>;
125         clock-names = "bus", "bus_a";
126         clocks = <&rpmcc RPM_SMD_CNOC_CLK>,
127                  <&rpmcc RPM_SMD_CNOC_A_CLK>;
128     };
129
130     bimc: interconnect@4480000 {
131         compatible = "qcom,qcm2290-bimc";
132         reg = <0x04480000 0x80000>;
133         #interconnect-cells = <1>;
134         clock-names = "bus", "bus_a";
135         clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
136                  <&rpmcc RPM_SMD_BIMC_A_CLK>;
137     };