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