162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/power/qcom,rpmpd.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm RPM/RPMh Power domains 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Bjorn Andersson <andersson@kernel.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: 1362306a36Sopenharmony_ci For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh 1462306a36Sopenharmony_ci which then translates it into a corresponding voltage on a rail. 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ciproperties: 1762306a36Sopenharmony_ci compatible: 1862306a36Sopenharmony_ci enum: 1962306a36Sopenharmony_ci - qcom,mdm9607-rpmpd 2062306a36Sopenharmony_ci - qcom,msm8226-rpmpd 2162306a36Sopenharmony_ci - qcom,msm8909-rpmpd 2262306a36Sopenharmony_ci - qcom,msm8916-rpmpd 2362306a36Sopenharmony_ci - qcom,msm8939-rpmpd 2462306a36Sopenharmony_ci - qcom,msm8953-rpmpd 2562306a36Sopenharmony_ci - qcom,msm8976-rpmpd 2662306a36Sopenharmony_ci - qcom,msm8994-rpmpd 2762306a36Sopenharmony_ci - qcom,msm8996-rpmpd 2862306a36Sopenharmony_ci - qcom,msm8998-rpmpd 2962306a36Sopenharmony_ci - qcom,qcm2290-rpmpd 3062306a36Sopenharmony_ci - qcom,qcs404-rpmpd 3162306a36Sopenharmony_ci - qcom,qdu1000-rpmhpd 3262306a36Sopenharmony_ci - qcom,sa8155p-rpmhpd 3362306a36Sopenharmony_ci - qcom,sa8540p-rpmhpd 3462306a36Sopenharmony_ci - qcom,sa8775p-rpmhpd 3562306a36Sopenharmony_ci - qcom,sdm660-rpmpd 3662306a36Sopenharmony_ci - qcom,sc7180-rpmhpd 3762306a36Sopenharmony_ci - qcom,sc7280-rpmhpd 3862306a36Sopenharmony_ci - qcom,sc8180x-rpmhpd 3962306a36Sopenharmony_ci - qcom,sc8280xp-rpmhpd 4062306a36Sopenharmony_ci - qcom,sdm670-rpmhpd 4162306a36Sopenharmony_ci - qcom,sdm845-rpmhpd 4262306a36Sopenharmony_ci - qcom,sdx55-rpmhpd 4362306a36Sopenharmony_ci - qcom,sdx65-rpmhpd 4462306a36Sopenharmony_ci - qcom,sdx75-rpmhpd 4562306a36Sopenharmony_ci - qcom,sm6115-rpmpd 4662306a36Sopenharmony_ci - qcom,sm6125-rpmpd 4762306a36Sopenharmony_ci - qcom,sm6350-rpmhpd 4862306a36Sopenharmony_ci - qcom,sm6375-rpmpd 4962306a36Sopenharmony_ci - qcom,sm8150-rpmhpd 5062306a36Sopenharmony_ci - qcom,sm8250-rpmhpd 5162306a36Sopenharmony_ci - qcom,sm8350-rpmhpd 5262306a36Sopenharmony_ci - qcom,sm8450-rpmhpd 5362306a36Sopenharmony_ci - qcom,sm8550-rpmhpd 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci '#power-domain-cells': 5662306a36Sopenharmony_ci const: 1 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci operating-points-v2: true 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci opp-table: 6162306a36Sopenharmony_ci type: object 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_cirequired: 6462306a36Sopenharmony_ci - compatible 6562306a36Sopenharmony_ci - '#power-domain-cells' 6662306a36Sopenharmony_ci - operating-points-v2 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_ciadditionalProperties: false 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ciexamples: 7162306a36Sopenharmony_ci - | 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci // Example 1 (rpmh power domain controller and OPP table): 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci #include <dt-bindings/power/qcom-rpmpd.h> 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci rpmhpd: power-controller { 7862306a36Sopenharmony_ci compatible = "qcom,sdm845-rpmhpd"; 7962306a36Sopenharmony_ci #power-domain-cells = <1>; 8062306a36Sopenharmony_ci operating-points-v2 = <&rpmhpd_opp_table>; 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ci rpmhpd_opp_table: opp-table { 8362306a36Sopenharmony_ci compatible = "operating-points-v2"; 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci rpmhpd_opp_ret: opp1 { 8662306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>; 8762306a36Sopenharmony_ci }; 8862306a36Sopenharmony_ci 8962306a36Sopenharmony_ci rpmhpd_opp_min_svs: opp2 { 9062306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>; 9162306a36Sopenharmony_ci }; 9262306a36Sopenharmony_ci 9362306a36Sopenharmony_ci rpmhpd_opp_low_svs: opp3 { 9462306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>; 9562306a36Sopenharmony_ci }; 9662306a36Sopenharmony_ci 9762306a36Sopenharmony_ci rpmhpd_opp_svs: opp4 { 9862306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_SVS>; 9962306a36Sopenharmony_ci }; 10062306a36Sopenharmony_ci 10162306a36Sopenharmony_ci rpmhpd_opp_svs_l1: opp5 { 10262306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>; 10362306a36Sopenharmony_ci }; 10462306a36Sopenharmony_ci 10562306a36Sopenharmony_ci rpmhpd_opp_nom: opp6 { 10662306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_NOM>; 10762306a36Sopenharmony_ci }; 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci rpmhpd_opp_nom_l1: opp7 { 11062306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>; 11162306a36Sopenharmony_ci }; 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ci rpmhpd_opp_nom_l2: opp8 { 11462306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>; 11562306a36Sopenharmony_ci }; 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci rpmhpd_opp_turbo: opp9 { 11862306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_TURBO>; 11962306a36Sopenharmony_ci }; 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci rpmhpd_opp_turbo_l1: opp10 { 12262306a36Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>; 12362306a36Sopenharmony_ci }; 12462306a36Sopenharmony_ci }; 12562306a36Sopenharmony_ci }; 12662306a36Sopenharmony_ci 12762306a36Sopenharmony_ci - | 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_ci // Example 2 (rpm power domain controller and OPP table): 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci rpmpd: power-controller { 13262306a36Sopenharmony_ci compatible = "qcom,msm8996-rpmpd"; 13362306a36Sopenharmony_ci #power-domain-cells = <1>; 13462306a36Sopenharmony_ci operating-points-v2 = <&rpmpd_opp_table>; 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci rpmpd_opp_table: opp-table { 13762306a36Sopenharmony_ci compatible = "operating-points-v2"; 13862306a36Sopenharmony_ci 13962306a36Sopenharmony_ci rpmpd_opp_low: opp1 { 14062306a36Sopenharmony_ci opp-level = <1>; 14162306a36Sopenharmony_ci }; 14262306a36Sopenharmony_ci 14362306a36Sopenharmony_ci rpmpd_opp_ret: opp2 { 14462306a36Sopenharmony_ci opp-level = <2>; 14562306a36Sopenharmony_ci }; 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci rpmpd_opp_svs: opp3 { 14862306a36Sopenharmony_ci opp-level = <3>; 14962306a36Sopenharmony_ci }; 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci rpmpd_opp_normal: opp4 { 15262306a36Sopenharmony_ci opp-level = <4>; 15362306a36Sopenharmony_ci }; 15462306a36Sopenharmony_ci 15562306a36Sopenharmony_ci rpmpd_opp_high: opp5 { 15662306a36Sopenharmony_ci opp-level = <5>; 15762306a36Sopenharmony_ci }; 15862306a36Sopenharmony_ci 15962306a36Sopenharmony_ci rpmpd_opp_turbo: opp6 { 16062306a36Sopenharmony_ci opp-level = <6>; 16162306a36Sopenharmony_ci }; 16262306a36Sopenharmony_ci }; 16362306a36Sopenharmony_ci }; 16462306a36Sopenharmony_ci 16562306a36Sopenharmony_ci - | 16662306a36Sopenharmony_ci 16762306a36Sopenharmony_ci // Example 3 (Client/Consumer device using OPP table): 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci leaky-device0@12350000 { 17062306a36Sopenharmony_ci compatible = "foo,i-leak-current"; 17162306a36Sopenharmony_ci reg = <0x12350000 0x1000>; 17262306a36Sopenharmony_ci power-domains = <&rpmhpd 0>; 17362306a36Sopenharmony_ci operating-points-v2 = <&leaky_opp_table>; 17462306a36Sopenharmony_ci }; 17562306a36Sopenharmony_ci 17662306a36Sopenharmony_ci leaky_opp_table: opp-table { 17762306a36Sopenharmony_ci compatible = "operating-points-v2"; 17862306a36Sopenharmony_ci opp1 { 17962306a36Sopenharmony_ci opp-hz = /bits/ 64 <144000>; 18062306a36Sopenharmony_ci required-opps = <&rpmhpd_opp_low>; 18162306a36Sopenharmony_ci }; 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci opp2 { 18462306a36Sopenharmony_ci opp-hz = /bits/ 64 <400000>; 18562306a36Sopenharmony_ci required-opps = <&rpmhpd_opp_ret>; 18662306a36Sopenharmony_ci }; 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci opp3 { 18962306a36Sopenharmony_ci opp-hz = /bits/ 64 <20000000>; 19062306a36Sopenharmony_ci required-opps = <&rpmpd_opp_svs>; 19162306a36Sopenharmony_ci }; 19262306a36Sopenharmony_ci 19362306a36Sopenharmony_ci opp4 { 19462306a36Sopenharmony_ci opp-hz = /bits/ 64 <25000000>; 19562306a36Sopenharmony_ci required-opps = <&rpmpd_opp_normal>; 19662306a36Sopenharmony_ci }; 19762306a36Sopenharmony_ci }; 19862306a36Sopenharmony_ci... 199