xref: /freebsd/sys/contrib/device-tree/Bindings/power/qcom,rpmpd.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
1c66ec88fSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2c66ec88fSEmmanuel Vadot%YAML 1.2
3c66ec88fSEmmanuel Vadot---
4c66ec88fSEmmanuel Vadot$id: http://devicetree.org/schemas/power/qcom,rpmpd.yaml#
5c66ec88fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6c66ec88fSEmmanuel Vadot
7c66ec88fSEmmanuel Vadottitle: Qualcomm RPM/RPMh Power domains
8c66ec88fSEmmanuel Vadot
9c66ec88fSEmmanuel Vadotmaintainers:
10b97ee269SEmmanuel Vadot  - Bjorn Andersson <andersson@kernel.org>
11c66ec88fSEmmanuel Vadot
12c66ec88fSEmmanuel Vadotdescription:
13c66ec88fSEmmanuel Vadot  For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh
14c66ec88fSEmmanuel Vadot  which then translates it into a corresponding voltage on a rail.
15c66ec88fSEmmanuel Vadot
16c66ec88fSEmmanuel Vadotproperties:
17c66ec88fSEmmanuel Vadot  compatible:
1884943d6fSEmmanuel Vadot    oneOf:
1984943d6fSEmmanuel Vadot      - enum:
205956d97fSEmmanuel Vadot          - qcom,mdm9607-rpmpd
21c9ccf3a3SEmmanuel Vadot          - qcom,msm8226-rpmpd
22b97ee269SEmmanuel Vadot          - qcom,msm8909-rpmpd
235def4c47SEmmanuel Vadot          - qcom,msm8916-rpmpd
2484943d6fSEmmanuel Vadot          - qcom,msm8917-rpmpd
255def4c47SEmmanuel Vadot          - qcom,msm8939-rpmpd
268cc087a1SEmmanuel Vadot          - qcom,msm8953-rpmpd
27*01950c46SEmmanuel Vadot          - qcom,msm8974-rpmpd
28*01950c46SEmmanuel Vadot          - qcom,msm8974pro-pma8084-rpmpd
29c66ec88fSEmmanuel Vadot          - qcom,msm8976-rpmpd
305def4c47SEmmanuel Vadot          - qcom,msm8994-rpmpd
31c66ec88fSEmmanuel Vadot          - qcom,msm8996-rpmpd
32c66ec88fSEmmanuel Vadot          - qcom,msm8998-rpmpd
33e67e8565SEmmanuel Vadot          - qcom,qcm2290-rpmpd
34c66ec88fSEmmanuel Vadot          - qcom,qcs404-rpmpd
358bab661aSEmmanuel Vadot          - qcom,qdu1000-rpmhpd
3684943d6fSEmmanuel Vadot          - qcom,qm215-rpmpd
37fac71e4eSEmmanuel Vadot          - qcom,sa8155p-rpmhpd
38d5b0e70fSEmmanuel Vadot          - qcom,sa8540p-rpmhpd
39cb7aa33aSEmmanuel Vadot          - qcom,sa8775p-rpmhpd
40c66ec88fSEmmanuel Vadot          - qcom,sc7180-rpmhpd
412eb4d8dcSEmmanuel Vadot          - qcom,sc7280-rpmhpd
425956d97fSEmmanuel Vadot          - qcom,sc8180x-rpmhpd
43d5b0e70fSEmmanuel Vadot          - qcom,sc8280xp-rpmhpd
4484943d6fSEmmanuel Vadot          - qcom,sdm660-rpmpd
458bab661aSEmmanuel Vadot          - qcom,sdm670-rpmhpd
46c66ec88fSEmmanuel Vadot          - qcom,sdm845-rpmhpd
475def4c47SEmmanuel Vadot          - qcom,sdx55-rpmhpd
48d5b0e70fSEmmanuel Vadot          - qcom,sdx65-rpmhpd
49aa1a8ff2SEmmanuel Vadot          - qcom,sdx75-rpmhpd
50354d7675SEmmanuel Vadot          - qcom,sm6115-rpmpd
51e67e8565SEmmanuel Vadot          - qcom,sm6125-rpmpd
528cc087a1SEmmanuel Vadot          - qcom,sm6350-rpmhpd
537ef62cebSEmmanuel Vadot          - qcom,sm6375-rpmpd
5484943d6fSEmmanuel Vadot          - qcom,sm7150-rpmhpd
55c66ec88fSEmmanuel Vadot          - qcom,sm8150-rpmhpd
56c66ec88fSEmmanuel Vadot          - qcom,sm8250-rpmhpd
572eb4d8dcSEmmanuel Vadot          - qcom,sm8350-rpmhpd
58e67e8565SEmmanuel Vadot          - qcom,sm8450-rpmhpd
598bab661aSEmmanuel Vadot          - qcom,sm8550-rpmhpd
6084943d6fSEmmanuel Vadot          - qcom,sm8650-rpmhpd
618d13bc63SEmmanuel Vadot          - qcom,x1e80100-rpmhpd
6284943d6fSEmmanuel Vadot      - items:
6384943d6fSEmmanuel Vadot          - enum:
6484943d6fSEmmanuel Vadot              - qcom,msm8937-rpmpd
6584943d6fSEmmanuel Vadot          - const: qcom,msm8917-rpmpd
66c66ec88fSEmmanuel Vadot
67c66ec88fSEmmanuel Vadot  '#power-domain-cells':
68c66ec88fSEmmanuel Vadot    const: 1
69c66ec88fSEmmanuel Vadot
70c66ec88fSEmmanuel Vadot  operating-points-v2: true
71c66ec88fSEmmanuel Vadot
72c66ec88fSEmmanuel Vadot  opp-table:
73c66ec88fSEmmanuel Vadot    type: object
74c66ec88fSEmmanuel Vadot
75c66ec88fSEmmanuel Vadotrequired:
76c66ec88fSEmmanuel Vadot  - compatible
77c66ec88fSEmmanuel Vadot  - '#power-domain-cells'
78c66ec88fSEmmanuel Vadot  - operating-points-v2
79c66ec88fSEmmanuel Vadot
80c66ec88fSEmmanuel VadotadditionalProperties: false
81c66ec88fSEmmanuel Vadot
82c66ec88fSEmmanuel Vadotexamples:
83c66ec88fSEmmanuel Vadot  - |
84c66ec88fSEmmanuel Vadot
85c66ec88fSEmmanuel Vadot    // Example 1 (rpmh power domain controller and OPP table):
86c66ec88fSEmmanuel Vadot
87c66ec88fSEmmanuel Vadot    #include <dt-bindings/power/qcom-rpmpd.h>
88c66ec88fSEmmanuel Vadot
89c66ec88fSEmmanuel Vadot    rpmhpd: power-controller {
90c66ec88fSEmmanuel Vadot      compatible = "qcom,sdm845-rpmhpd";
91c66ec88fSEmmanuel Vadot      #power-domain-cells = <1>;
92c66ec88fSEmmanuel Vadot      operating-points-v2 = <&rpmhpd_opp_table>;
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot      rpmhpd_opp_table: opp-table {
95c66ec88fSEmmanuel Vadot        compatible = "operating-points-v2";
96c66ec88fSEmmanuel Vadot
97c66ec88fSEmmanuel Vadot        rpmhpd_opp_ret: opp1 {
98c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
99c66ec88fSEmmanuel Vadot        };
100c66ec88fSEmmanuel Vadot
101c66ec88fSEmmanuel Vadot        rpmhpd_opp_min_svs: opp2 {
102c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
103c66ec88fSEmmanuel Vadot        };
104c66ec88fSEmmanuel Vadot
105c66ec88fSEmmanuel Vadot        rpmhpd_opp_low_svs: opp3 {
106c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
107c66ec88fSEmmanuel Vadot        };
108c66ec88fSEmmanuel Vadot
109c66ec88fSEmmanuel Vadot        rpmhpd_opp_svs: opp4 {
110c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
111c66ec88fSEmmanuel Vadot        };
112c66ec88fSEmmanuel Vadot
113c66ec88fSEmmanuel Vadot        rpmhpd_opp_svs_l1: opp5 {
114c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
115c66ec88fSEmmanuel Vadot        };
116c66ec88fSEmmanuel Vadot
117c66ec88fSEmmanuel Vadot        rpmhpd_opp_nom: opp6 {
118c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
119c66ec88fSEmmanuel Vadot        };
120c66ec88fSEmmanuel Vadot
121c66ec88fSEmmanuel Vadot        rpmhpd_opp_nom_l1: opp7 {
122c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
123c66ec88fSEmmanuel Vadot        };
124c66ec88fSEmmanuel Vadot
125c66ec88fSEmmanuel Vadot        rpmhpd_opp_nom_l2: opp8 {
126c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
127c66ec88fSEmmanuel Vadot        };
128c66ec88fSEmmanuel Vadot
129c66ec88fSEmmanuel Vadot        rpmhpd_opp_turbo: opp9 {
130c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
131c66ec88fSEmmanuel Vadot        };
132c66ec88fSEmmanuel Vadot
133c66ec88fSEmmanuel Vadot        rpmhpd_opp_turbo_l1: opp10 {
134c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
135c66ec88fSEmmanuel Vadot        };
136c66ec88fSEmmanuel Vadot      };
137c66ec88fSEmmanuel Vadot    };
138c66ec88fSEmmanuel Vadot
139c66ec88fSEmmanuel Vadot  - |
140c66ec88fSEmmanuel Vadot
141c66ec88fSEmmanuel Vadot    // Example 2 (rpm power domain controller and OPP table):
142c66ec88fSEmmanuel Vadot
143c66ec88fSEmmanuel Vadot    rpmpd: power-controller {
144c66ec88fSEmmanuel Vadot      compatible = "qcom,msm8996-rpmpd";
145c66ec88fSEmmanuel Vadot      #power-domain-cells = <1>;
146c66ec88fSEmmanuel Vadot      operating-points-v2 = <&rpmpd_opp_table>;
147c66ec88fSEmmanuel Vadot
148c66ec88fSEmmanuel Vadot      rpmpd_opp_table: opp-table {
149c66ec88fSEmmanuel Vadot        compatible = "operating-points-v2";
150c66ec88fSEmmanuel Vadot
151c66ec88fSEmmanuel Vadot        rpmpd_opp_low: opp1 {
152c66ec88fSEmmanuel Vadot          opp-level = <1>;
153c66ec88fSEmmanuel Vadot        };
154c66ec88fSEmmanuel Vadot
155c66ec88fSEmmanuel Vadot        rpmpd_opp_ret: opp2 {
156c66ec88fSEmmanuel Vadot          opp-level = <2>;
157c66ec88fSEmmanuel Vadot        };
158c66ec88fSEmmanuel Vadot
159c66ec88fSEmmanuel Vadot        rpmpd_opp_svs: opp3 {
160c66ec88fSEmmanuel Vadot          opp-level = <3>;
161c66ec88fSEmmanuel Vadot        };
162c66ec88fSEmmanuel Vadot
163c66ec88fSEmmanuel Vadot        rpmpd_opp_normal: opp4 {
164c66ec88fSEmmanuel Vadot          opp-level = <4>;
165c66ec88fSEmmanuel Vadot        };
166c66ec88fSEmmanuel Vadot
167c66ec88fSEmmanuel Vadot        rpmpd_opp_high: opp5 {
168c66ec88fSEmmanuel Vadot          opp-level = <5>;
169c66ec88fSEmmanuel Vadot        };
170c66ec88fSEmmanuel Vadot
171c66ec88fSEmmanuel Vadot        rpmpd_opp_turbo: opp6 {
172c66ec88fSEmmanuel Vadot          opp-level = <6>;
173c66ec88fSEmmanuel Vadot        };
174c66ec88fSEmmanuel Vadot      };
175c66ec88fSEmmanuel Vadot    };
176c66ec88fSEmmanuel Vadot
177c66ec88fSEmmanuel Vadot  - |
178c66ec88fSEmmanuel Vadot
179c66ec88fSEmmanuel Vadot    // Example 3 (Client/Consumer device using OPP table):
180c66ec88fSEmmanuel Vadot
181c66ec88fSEmmanuel Vadot    leaky-device0@12350000 {
182c66ec88fSEmmanuel Vadot      compatible = "foo,i-leak-current";
183c66ec88fSEmmanuel Vadot      reg = <0x12350000 0x1000>;
184c66ec88fSEmmanuel Vadot      power-domains = <&rpmhpd 0>;
185c66ec88fSEmmanuel Vadot      operating-points-v2 = <&leaky_opp_table>;
186c66ec88fSEmmanuel Vadot    };
187c66ec88fSEmmanuel Vadot
188c66ec88fSEmmanuel Vadot    leaky_opp_table: opp-table {
189c66ec88fSEmmanuel Vadot      compatible = "operating-points-v2";
190c66ec88fSEmmanuel Vadot      opp1 {
191c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <144000>;
192c66ec88fSEmmanuel Vadot        required-opps = <&rpmhpd_opp_low>;
193c66ec88fSEmmanuel Vadot      };
194c66ec88fSEmmanuel Vadot
195c66ec88fSEmmanuel Vadot      opp2 {
196c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <400000>;
197c66ec88fSEmmanuel Vadot        required-opps = <&rpmhpd_opp_ret>;
198c66ec88fSEmmanuel Vadot      };
199c66ec88fSEmmanuel Vadot
200c66ec88fSEmmanuel Vadot      opp3 {
201c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <20000000>;
202c66ec88fSEmmanuel Vadot        required-opps = <&rpmpd_opp_svs>;
203c66ec88fSEmmanuel Vadot      };
204c66ec88fSEmmanuel Vadot
205c66ec88fSEmmanuel Vadot      opp4 {
206c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <25000000>;
207c66ec88fSEmmanuel Vadot        required-opps = <&rpmpd_opp_normal>;
208c66ec88fSEmmanuel Vadot      };
209c66ec88fSEmmanuel Vadot    };
210c66ec88fSEmmanuel Vadot...
211