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