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