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