Merge tag 'nfs-for-5.1-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / power / qcom,rpmpd.txt
1 Qualcomm RPM/RPMh Power domains
2
3 For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh
4 which then translates it into a corresponding voltage on a rail
5
6 Required Properties:
7  - compatible: Should be one of the following
8         * qcom,msm8996-rpmpd: RPM Power domain for the msm8996 family of SoC
9         * qcom,sdm845-rpmhpd: RPMh Power domain for the sdm845 family of SoC
10  - #power-domain-cells: number of cells in Power domain specifier
11         must be 1.
12  - operating-points-v2: Phandle to the OPP table for the Power domain.
13         Refer to Documentation/devicetree/bindings/power/power_domain.txt
14         and Documentation/devicetree/bindings/opp/opp.txt for more details
15
16 Refer to <dt-bindings/power/qcom-rpmpd.h> for the level values for
17 various OPPs for different platforms as well as Power domain indexes
18
19 Example: rpmh power domain controller and OPP table
20
21 #include <dt-bindings/power/qcom-rpmhpd.h>
22
23 opp-level values specified in the OPP tables for RPMh power domains
24 should use the RPMH_REGULATOR_LEVEL_* constants from
25 <dt-bindings/power/qcom-rpmhpd.h>
26
27         rpmhpd: power-controller {
28                 compatible = "qcom,sdm845-rpmhpd";
29                 #power-domain-cells = <1>;
30                 operating-points-v2 = <&rpmhpd_opp_table>;
31
32                 rpmhpd_opp_table: opp-table {
33                         compatible = "operating-points-v2";
34
35                         rpmhpd_opp_ret: opp1 {
36                                 opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
37                         };
38
39                         rpmhpd_opp_min_svs: opp2 {
40                                 opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
41                         };
42
43                         rpmhpd_opp_low_svs: opp3 {
44                                 opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
45                         };
46
47                         rpmhpd_opp_svs: opp4 {
48                                 opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
49                         };
50
51                         rpmhpd_opp_svs_l1: opp5 {
52                                 opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
53                         };
54
55                         rpmhpd_opp_nom: opp6 {
56                                 opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
57                         };
58
59                         rpmhpd_opp_nom_l1: opp7 {
60                                 opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
61                         };
62
63                         rpmhpd_opp_nom_l2: opp8 {
64                                 opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
65                         };
66
67                         rpmhpd_opp_turbo: opp9 {
68                                 opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
69                         };
70
71                         rpmhpd_opp_turbo_l1: opp10 {
72                                 opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
73                         };
74                 };
75         };
76
77 Example: rpm power domain controller and OPP table
78
79         rpmpd: power-controller {
80                 compatible = "qcom,msm8996-rpmpd";
81                 #power-domain-cells = <1>;
82                 operating-points-v2 = <&rpmpd_opp_table>;
83
84                 rpmpd_opp_table: opp-table {
85                         compatible = "operating-points-v2";
86
87                         rpmpd_opp_low: opp1 {
88                                 opp-level = <1>;
89                         };
90
91                         rpmpd_opp_ret: opp2 {
92                                 opp-level = <2>;
93                         };
94
95                         rpmpd_opp_svs: opp3 {
96                                 opp-level = <3>;
97                         };
98
99                         rpmpd_opp_normal: opp4 {
100                                 opp-level = <4>;
101                         };
102
103                         rpmpd_opp_high: opp5 {
104                                 opp-level = <5>;
105                         };
106
107                         rpmpd_opp_turbo: opp6 {
108                                 opp-level = <6>;
109                         };
110                 };
111         };
112
113 Example: Client/Consumer device using OPP table
114
115         leaky-device0@12350000 {
116                 compatible = "foo,i-leak-current";
117                 reg = <0x12350000 0x1000>;
118                 power-domains = <&rpmhpd SDM845_MX>;
119                 operating-points-v2 = <&leaky_opp_table>;
120         };
121
122
123         leaky_opp_table: opp-table {
124                 compatible = "operating-points-v2";
125
126                 opp1 {
127                         opp-hz = /bits/ 64 <144000>;
128                         required-opps = <&rpmhpd_opp_low>;
129                 };
130
131                 opp2 {
132                         opp-hz = /bits/ 64 <400000>;
133                         required-opps = <&rpmhpd_opp_ret>;
134                 };
135
136                 opp3 {
137                         opp-hz = /bits/ 64 <20000000>;
138                         required-opps = <&rpmpd_opp_svs>;
139                 };
140
141                 opp4 {
142                         opp-hz = /bits/ 64 <25000000>;
143                         required-opps = <&rpmpd_opp_normal>;
144                 };
145         };