dt-bindings: power: rpmpd: Add SDM660 power-domains bindings
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / power / qcom,rpmpd.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/power/qcom,rpmpd.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm RPM/RPMh Power domains
8
9 maintainers:
10   - Rajendra Nayak <rnayak@codeaurora.org>
11
12 description:
13   For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh
14   which then translates it into a corresponding voltage on a rail.
15
16 properties:
17   compatible:
18     enum:
19       - qcom,msm8976-rpmpd
20       - qcom,msm8996-rpmpd
21       - qcom,msm8998-rpmpd
22       - qcom,qcs404-rpmpd
23       - qcom,sdm660-rpmpd
24       - qcom,sc7180-rpmhpd
25       - qcom,sdm845-rpmhpd
26       - qcom,sm8150-rpmhpd
27       - qcom,sm8250-rpmhpd
28
29   '#power-domain-cells':
30     const: 1
31
32   operating-points-v2: true
33
34   opp-table:
35     type: object
36
37 required:
38   - compatible
39   - '#power-domain-cells'
40   - operating-points-v2
41
42 additionalProperties: false
43
44 examples:
45   - |
46
47     // Example 1 (rpmh power domain controller and OPP table):
48
49     #include <dt-bindings/power/qcom-rpmpd.h>
50
51     rpmhpd: power-controller {
52       compatible = "qcom,sdm845-rpmhpd";
53       #power-domain-cells = <1>;
54       operating-points-v2 = <&rpmhpd_opp_table>;
55
56       rpmhpd_opp_table: opp-table {
57         compatible = "operating-points-v2";
58
59         rpmhpd_opp_ret: opp1 {
60           opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
61         };
62
63         rpmhpd_opp_min_svs: opp2 {
64           opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
65         };
66
67         rpmhpd_opp_low_svs: opp3 {
68           opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
69         };
70
71         rpmhpd_opp_svs: opp4 {
72           opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
73         };
74
75         rpmhpd_opp_svs_l1: opp5 {
76           opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
77         };
78
79         rpmhpd_opp_nom: opp6 {
80           opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
81         };
82
83         rpmhpd_opp_nom_l1: opp7 {
84           opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
85         };
86
87         rpmhpd_opp_nom_l2: opp8 {
88           opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
89         };
90
91         rpmhpd_opp_turbo: opp9 {
92           opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
93         };
94
95         rpmhpd_opp_turbo_l1: opp10 {
96           opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
97         };
98       };
99     };
100
101   - |
102
103     // Example 2 (rpm power domain controller and OPP table):
104
105     rpmpd: power-controller {
106       compatible = "qcom,msm8996-rpmpd";
107       #power-domain-cells = <1>;
108       operating-points-v2 = <&rpmpd_opp_table>;
109
110       rpmpd_opp_table: opp-table {
111         compatible = "operating-points-v2";
112
113         rpmpd_opp_low: opp1 {
114           opp-level = <1>;
115         };
116
117         rpmpd_opp_ret: opp2 {
118           opp-level = <2>;
119         };
120
121         rpmpd_opp_svs: opp3 {
122           opp-level = <3>;
123         };
124
125         rpmpd_opp_normal: opp4 {
126           opp-level = <4>;
127         };
128
129         rpmpd_opp_high: opp5 {
130           opp-level = <5>;
131         };
132
133         rpmpd_opp_turbo: opp6 {
134           opp-level = <6>;
135         };
136       };
137     };
138
139   - |
140
141     // Example 3 (Client/Consumer device using OPP table):
142
143     leaky-device0@12350000 {
144       compatible = "foo,i-leak-current";
145       reg = <0x12350000 0x1000>;
146       power-domains = <&rpmhpd 0>;
147       operating-points-v2 = <&leaky_opp_table>;
148     };
149
150     leaky_opp_table: opp-table {
151       compatible = "operating-points-v2";
152       opp1 {
153         opp-hz = /bits/ 64 <144000>;
154         required-opps = <&rpmhpd_opp_low>;
155       };
156
157       opp2 {
158         opp-hz = /bits/ 64 <400000>;
159         required-opps = <&rpmhpd_opp_ret>;
160       };
161
162       opp3 {
163         opp-hz = /bits/ 64 <20000000>;
164         required-opps = <&rpmpd_opp_svs>;
165       };
166
167       opp4 {
168         opp-hz = /bits/ 64 <25000000>;
169         required-opps = <&rpmpd_opp_normal>;
170       };
171     };
172 ...