xref: /freebsd/sys/contrib/device-tree/Bindings/power/qcom,rpmpd.yaml (revision b97ee269eae3cbaf35c18f51a459aea581c2a7dc)
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:
10*b97ee269SEmmanuel 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:
18c66ec88fSEmmanuel Vadot    enum:
195956d97fSEmmanuel Vadot      - qcom,mdm9607-rpmpd
20c9ccf3a3SEmmanuel Vadot      - qcom,msm8226-rpmpd
21*b97ee269SEmmanuel Vadot      - qcom,msm8909-rpmpd
225def4c47SEmmanuel Vadot      - qcom,msm8916-rpmpd
235def4c47SEmmanuel Vadot      - qcom,msm8939-rpmpd
248cc087a1SEmmanuel Vadot      - qcom,msm8953-rpmpd
25c66ec88fSEmmanuel Vadot      - qcom,msm8976-rpmpd
265def4c47SEmmanuel Vadot      - qcom,msm8994-rpmpd
27c66ec88fSEmmanuel Vadot      - qcom,msm8996-rpmpd
28c66ec88fSEmmanuel Vadot      - qcom,msm8998-rpmpd
29e67e8565SEmmanuel Vadot      - qcom,qcm2290-rpmpd
30c66ec88fSEmmanuel Vadot      - qcom,qcs404-rpmpd
31d5b0e70fSEmmanuel Vadot      - qcom,sa8540p-rpmhpd
325def4c47SEmmanuel Vadot      - qcom,sdm660-rpmpd
33c66ec88fSEmmanuel Vadot      - qcom,sc7180-rpmhpd
342eb4d8dcSEmmanuel Vadot      - qcom,sc7280-rpmhpd
355956d97fSEmmanuel Vadot      - qcom,sc8180x-rpmhpd
36d5b0e70fSEmmanuel Vadot      - qcom,sc8280xp-rpmhpd
37c66ec88fSEmmanuel Vadot      - qcom,sdm845-rpmhpd
385def4c47SEmmanuel Vadot      - qcom,sdx55-rpmhpd
39d5b0e70fSEmmanuel Vadot      - qcom,sdx65-rpmhpd
40354d7675SEmmanuel Vadot      - qcom,sm6115-rpmpd
41e67e8565SEmmanuel Vadot      - qcom,sm6125-rpmpd
428cc087a1SEmmanuel Vadot      - qcom,sm6350-rpmhpd
43c66ec88fSEmmanuel Vadot      - qcom,sm8150-rpmhpd
44c66ec88fSEmmanuel Vadot      - qcom,sm8250-rpmhpd
452eb4d8dcSEmmanuel Vadot      - qcom,sm8350-rpmhpd
46e67e8565SEmmanuel Vadot      - qcom,sm8450-rpmhpd
47c66ec88fSEmmanuel Vadot
48c66ec88fSEmmanuel Vadot  '#power-domain-cells':
49c66ec88fSEmmanuel Vadot    const: 1
50c66ec88fSEmmanuel Vadot
51c66ec88fSEmmanuel Vadot  operating-points-v2: true
52c66ec88fSEmmanuel Vadot
53c66ec88fSEmmanuel Vadot  opp-table:
54c66ec88fSEmmanuel Vadot    type: object
55c66ec88fSEmmanuel Vadot
56c66ec88fSEmmanuel Vadotrequired:
57c66ec88fSEmmanuel Vadot  - compatible
58c66ec88fSEmmanuel Vadot  - '#power-domain-cells'
59c66ec88fSEmmanuel Vadot  - operating-points-v2
60c66ec88fSEmmanuel Vadot
61c66ec88fSEmmanuel VadotadditionalProperties: false
62c66ec88fSEmmanuel Vadot
63c66ec88fSEmmanuel Vadotexamples:
64c66ec88fSEmmanuel Vadot  - |
65c66ec88fSEmmanuel Vadot
66c66ec88fSEmmanuel Vadot    // Example 1 (rpmh power domain controller and OPP table):
67c66ec88fSEmmanuel Vadot
68c66ec88fSEmmanuel Vadot    #include <dt-bindings/power/qcom-rpmpd.h>
69c66ec88fSEmmanuel Vadot
70c66ec88fSEmmanuel Vadot    rpmhpd: power-controller {
71c66ec88fSEmmanuel Vadot      compatible = "qcom,sdm845-rpmhpd";
72c66ec88fSEmmanuel Vadot      #power-domain-cells = <1>;
73c66ec88fSEmmanuel Vadot      operating-points-v2 = <&rpmhpd_opp_table>;
74c66ec88fSEmmanuel Vadot
75c66ec88fSEmmanuel Vadot      rpmhpd_opp_table: opp-table {
76c66ec88fSEmmanuel Vadot        compatible = "operating-points-v2";
77c66ec88fSEmmanuel Vadot
78c66ec88fSEmmanuel Vadot        rpmhpd_opp_ret: opp1 {
79c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
80c66ec88fSEmmanuel Vadot        };
81c66ec88fSEmmanuel Vadot
82c66ec88fSEmmanuel Vadot        rpmhpd_opp_min_svs: opp2 {
83c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
84c66ec88fSEmmanuel Vadot        };
85c66ec88fSEmmanuel Vadot
86c66ec88fSEmmanuel Vadot        rpmhpd_opp_low_svs: opp3 {
87c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
88c66ec88fSEmmanuel Vadot        };
89c66ec88fSEmmanuel Vadot
90c66ec88fSEmmanuel Vadot        rpmhpd_opp_svs: opp4 {
91c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
92c66ec88fSEmmanuel Vadot        };
93c66ec88fSEmmanuel Vadot
94c66ec88fSEmmanuel Vadot        rpmhpd_opp_svs_l1: opp5 {
95c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
96c66ec88fSEmmanuel Vadot        };
97c66ec88fSEmmanuel Vadot
98c66ec88fSEmmanuel Vadot        rpmhpd_opp_nom: opp6 {
99c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
100c66ec88fSEmmanuel Vadot        };
101c66ec88fSEmmanuel Vadot
102c66ec88fSEmmanuel Vadot        rpmhpd_opp_nom_l1: opp7 {
103c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
104c66ec88fSEmmanuel Vadot        };
105c66ec88fSEmmanuel Vadot
106c66ec88fSEmmanuel Vadot        rpmhpd_opp_nom_l2: opp8 {
107c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
108c66ec88fSEmmanuel Vadot        };
109c66ec88fSEmmanuel Vadot
110c66ec88fSEmmanuel Vadot        rpmhpd_opp_turbo: opp9 {
111c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
112c66ec88fSEmmanuel Vadot        };
113c66ec88fSEmmanuel Vadot
114c66ec88fSEmmanuel Vadot        rpmhpd_opp_turbo_l1: opp10 {
115c66ec88fSEmmanuel Vadot          opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
116c66ec88fSEmmanuel Vadot        };
117c66ec88fSEmmanuel Vadot      };
118c66ec88fSEmmanuel Vadot    };
119c66ec88fSEmmanuel Vadot
120c66ec88fSEmmanuel Vadot  - |
121c66ec88fSEmmanuel Vadot
122c66ec88fSEmmanuel Vadot    // Example 2 (rpm power domain controller and OPP table):
123c66ec88fSEmmanuel Vadot
124c66ec88fSEmmanuel Vadot    rpmpd: power-controller {
125c66ec88fSEmmanuel Vadot      compatible = "qcom,msm8996-rpmpd";
126c66ec88fSEmmanuel Vadot      #power-domain-cells = <1>;
127c66ec88fSEmmanuel Vadot      operating-points-v2 = <&rpmpd_opp_table>;
128c66ec88fSEmmanuel Vadot
129c66ec88fSEmmanuel Vadot      rpmpd_opp_table: opp-table {
130c66ec88fSEmmanuel Vadot        compatible = "operating-points-v2";
131c66ec88fSEmmanuel Vadot
132c66ec88fSEmmanuel Vadot        rpmpd_opp_low: opp1 {
133c66ec88fSEmmanuel Vadot          opp-level = <1>;
134c66ec88fSEmmanuel Vadot        };
135c66ec88fSEmmanuel Vadot
136c66ec88fSEmmanuel Vadot        rpmpd_opp_ret: opp2 {
137c66ec88fSEmmanuel Vadot          opp-level = <2>;
138c66ec88fSEmmanuel Vadot        };
139c66ec88fSEmmanuel Vadot
140c66ec88fSEmmanuel Vadot        rpmpd_opp_svs: opp3 {
141c66ec88fSEmmanuel Vadot          opp-level = <3>;
142c66ec88fSEmmanuel Vadot        };
143c66ec88fSEmmanuel Vadot
144c66ec88fSEmmanuel Vadot        rpmpd_opp_normal: opp4 {
145c66ec88fSEmmanuel Vadot          opp-level = <4>;
146c66ec88fSEmmanuel Vadot        };
147c66ec88fSEmmanuel Vadot
148c66ec88fSEmmanuel Vadot        rpmpd_opp_high: opp5 {
149c66ec88fSEmmanuel Vadot          opp-level = <5>;
150c66ec88fSEmmanuel Vadot        };
151c66ec88fSEmmanuel Vadot
152c66ec88fSEmmanuel Vadot        rpmpd_opp_turbo: opp6 {
153c66ec88fSEmmanuel Vadot          opp-level = <6>;
154c66ec88fSEmmanuel Vadot        };
155c66ec88fSEmmanuel Vadot      };
156c66ec88fSEmmanuel Vadot    };
157c66ec88fSEmmanuel Vadot
158c66ec88fSEmmanuel Vadot  - |
159c66ec88fSEmmanuel Vadot
160c66ec88fSEmmanuel Vadot    // Example 3 (Client/Consumer device using OPP table):
161c66ec88fSEmmanuel Vadot
162c66ec88fSEmmanuel Vadot    leaky-device0@12350000 {
163c66ec88fSEmmanuel Vadot      compatible = "foo,i-leak-current";
164c66ec88fSEmmanuel Vadot      reg = <0x12350000 0x1000>;
165c66ec88fSEmmanuel Vadot      power-domains = <&rpmhpd 0>;
166c66ec88fSEmmanuel Vadot      operating-points-v2 = <&leaky_opp_table>;
167c66ec88fSEmmanuel Vadot    };
168c66ec88fSEmmanuel Vadot
169c66ec88fSEmmanuel Vadot    leaky_opp_table: opp-table {
170c66ec88fSEmmanuel Vadot      compatible = "operating-points-v2";
171c66ec88fSEmmanuel Vadot      opp1 {
172c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <144000>;
173c66ec88fSEmmanuel Vadot        required-opps = <&rpmhpd_opp_low>;
174c66ec88fSEmmanuel Vadot      };
175c66ec88fSEmmanuel Vadot
176c66ec88fSEmmanuel Vadot      opp2 {
177c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <400000>;
178c66ec88fSEmmanuel Vadot        required-opps = <&rpmhpd_opp_ret>;
179c66ec88fSEmmanuel Vadot      };
180c66ec88fSEmmanuel Vadot
181c66ec88fSEmmanuel Vadot      opp3 {
182c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <20000000>;
183c66ec88fSEmmanuel Vadot        required-opps = <&rpmpd_opp_svs>;
184c66ec88fSEmmanuel Vadot      };
185c66ec88fSEmmanuel Vadot
186c66ec88fSEmmanuel Vadot      opp4 {
187c66ec88fSEmmanuel Vadot        opp-hz = /bits/ 64 <25000000>;
188c66ec88fSEmmanuel Vadot        required-opps = <&rpmpd_opp_normal>;
189c66ec88fSEmmanuel Vadot      };
190c66ec88fSEmmanuel Vadot    };
191c66ec88fSEmmanuel Vadot...
192