1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*4882a593Smuzhiyun%YAML 1.2 3*4882a593Smuzhiyun--- 4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/power/qcom,rpmpd.yaml# 5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml# 6*4882a593Smuzhiyun 7*4882a593Smuzhiyuntitle: Qualcomm RPM/RPMh Power domains 8*4882a593Smuzhiyun 9*4882a593Smuzhiyunmaintainers: 10*4882a593Smuzhiyun - Rajendra Nayak <rnayak@codeaurora.org> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyundescription: 13*4882a593Smuzhiyun For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh 14*4882a593Smuzhiyun which then translates it into a corresponding voltage on a rail. 15*4882a593Smuzhiyun 16*4882a593Smuzhiyunproperties: 17*4882a593Smuzhiyun compatible: 18*4882a593Smuzhiyun enum: 19*4882a593Smuzhiyun - qcom,msm8976-rpmpd 20*4882a593Smuzhiyun - qcom,msm8996-rpmpd 21*4882a593Smuzhiyun - qcom,msm8998-rpmpd 22*4882a593Smuzhiyun - qcom,qcs404-rpmpd 23*4882a593Smuzhiyun - qcom,sc7180-rpmhpd 24*4882a593Smuzhiyun - qcom,sdm845-rpmhpd 25*4882a593Smuzhiyun - qcom,sm8150-rpmhpd 26*4882a593Smuzhiyun - qcom,sm8250-rpmhpd 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun '#power-domain-cells': 29*4882a593Smuzhiyun const: 1 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun operating-points-v2: true 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun opp-table: 34*4882a593Smuzhiyun type: object 35*4882a593Smuzhiyun 36*4882a593Smuzhiyunrequired: 37*4882a593Smuzhiyun - compatible 38*4882a593Smuzhiyun - '#power-domain-cells' 39*4882a593Smuzhiyun - operating-points-v2 40*4882a593Smuzhiyun 41*4882a593SmuzhiyunadditionalProperties: false 42*4882a593Smuzhiyun 43*4882a593Smuzhiyunexamples: 44*4882a593Smuzhiyun - | 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun // Example 1 (rpmh power domain controller and OPP table): 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #include <dt-bindings/power/qcom-rpmpd.h> 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun rpmhpd: power-controller { 51*4882a593Smuzhiyun compatible = "qcom,sdm845-rpmhpd"; 52*4882a593Smuzhiyun #power-domain-cells = <1>; 53*4882a593Smuzhiyun operating-points-v2 = <&rpmhpd_opp_table>; 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun rpmhpd_opp_table: opp-table { 56*4882a593Smuzhiyun compatible = "operating-points-v2"; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun rpmhpd_opp_ret: opp1 { 59*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>; 60*4882a593Smuzhiyun }; 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun rpmhpd_opp_min_svs: opp2 { 63*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun rpmhpd_opp_low_svs: opp3 { 67*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun rpmhpd_opp_svs: opp4 { 71*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_SVS>; 72*4882a593Smuzhiyun }; 73*4882a593Smuzhiyun 74*4882a593Smuzhiyun rpmhpd_opp_svs_l1: opp5 { 75*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>; 76*4882a593Smuzhiyun }; 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun rpmhpd_opp_nom: opp6 { 79*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_NOM>; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun rpmhpd_opp_nom_l1: opp7 { 83*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>; 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun rpmhpd_opp_nom_l2: opp8 { 87*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>; 88*4882a593Smuzhiyun }; 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun rpmhpd_opp_turbo: opp9 { 91*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_TURBO>; 92*4882a593Smuzhiyun }; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun rpmhpd_opp_turbo_l1: opp10 { 95*4882a593Smuzhiyun opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>; 96*4882a593Smuzhiyun }; 97*4882a593Smuzhiyun }; 98*4882a593Smuzhiyun }; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun - | 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun // Example 2 (rpm power domain controller and OPP table): 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun rpmpd: power-controller { 105*4882a593Smuzhiyun compatible = "qcom,msm8996-rpmpd"; 106*4882a593Smuzhiyun #power-domain-cells = <1>; 107*4882a593Smuzhiyun operating-points-v2 = <&rpmpd_opp_table>; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun rpmpd_opp_table: opp-table { 110*4882a593Smuzhiyun compatible = "operating-points-v2"; 111*4882a593Smuzhiyun 112*4882a593Smuzhiyun rpmpd_opp_low: opp1 { 113*4882a593Smuzhiyun opp-level = <1>; 114*4882a593Smuzhiyun }; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun rpmpd_opp_ret: opp2 { 117*4882a593Smuzhiyun opp-level = <2>; 118*4882a593Smuzhiyun }; 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun rpmpd_opp_svs: opp3 { 121*4882a593Smuzhiyun opp-level = <3>; 122*4882a593Smuzhiyun }; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun rpmpd_opp_normal: opp4 { 125*4882a593Smuzhiyun opp-level = <4>; 126*4882a593Smuzhiyun }; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun rpmpd_opp_high: opp5 { 129*4882a593Smuzhiyun opp-level = <5>; 130*4882a593Smuzhiyun }; 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun rpmpd_opp_turbo: opp6 { 133*4882a593Smuzhiyun opp-level = <6>; 134*4882a593Smuzhiyun }; 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun }; 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun - | 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun // Example 3 (Client/Consumer device using OPP table): 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun leaky-device0@12350000 { 143*4882a593Smuzhiyun compatible = "foo,i-leak-current"; 144*4882a593Smuzhiyun reg = <0x12350000 0x1000>; 145*4882a593Smuzhiyun power-domains = <&rpmhpd 0>; 146*4882a593Smuzhiyun operating-points-v2 = <&leaky_opp_table>; 147*4882a593Smuzhiyun }; 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun leaky_opp_table: opp-table { 150*4882a593Smuzhiyun compatible = "operating-points-v2"; 151*4882a593Smuzhiyun opp1 { 152*4882a593Smuzhiyun opp-hz = /bits/ 64 <144000>; 153*4882a593Smuzhiyun required-opps = <&rpmhpd_opp_low>; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun opp2 { 157*4882a593Smuzhiyun opp-hz = /bits/ 64 <400000>; 158*4882a593Smuzhiyun required-opps = <&rpmhpd_opp_ret>; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun opp3 { 162*4882a593Smuzhiyun opp-hz = /bits/ 64 <20000000>; 163*4882a593Smuzhiyun required-opps = <&rpmpd_opp_svs>; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun opp4 { 167*4882a593Smuzhiyun opp-hz = /bits/ 64 <25000000>; 168*4882a593Smuzhiyun required-opps = <&rpmpd_opp_normal>; 169*4882a593Smuzhiyun }; 170*4882a593Smuzhiyun }; 171*4882a593Smuzhiyun... 172