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