18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 28c2ecf20Sopenharmony_ci%YAML 1.2 38c2ecf20Sopenharmony_ci--- 48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/power/qcom,rpmpd.yaml# 58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_cititle: Qualcomm RPM/RPMh Power domains 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cimaintainers: 108c2ecf20Sopenharmony_ci - Rajendra Nayak <rnayak@codeaurora.org> 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_cidescription: 138c2ecf20Sopenharmony_ci For RPM/RPMh Power domains, we communicate a performance state to RPM/RPMh 148c2ecf20Sopenharmony_ci which then translates it into a corresponding voltage on a rail. 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ciproperties: 178c2ecf20Sopenharmony_ci compatible: 188c2ecf20Sopenharmony_ci enum: 198c2ecf20Sopenharmony_ci - qcom,msm8976-rpmpd 208c2ecf20Sopenharmony_ci - qcom,msm8996-rpmpd 218c2ecf20Sopenharmony_ci - qcom,msm8998-rpmpd 228c2ecf20Sopenharmony_ci - qcom,qcs404-rpmpd 238c2ecf20Sopenharmony_ci - qcom,sc7180-rpmhpd 248c2ecf20Sopenharmony_ci - qcom,sdm845-rpmhpd 258c2ecf20Sopenharmony_ci - qcom,sm8150-rpmhpd 268c2ecf20Sopenharmony_ci - qcom,sm8250-rpmhpd 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci '#power-domain-cells': 298c2ecf20Sopenharmony_ci const: 1 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_ci operating-points-v2: true 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci opp-table: 348c2ecf20Sopenharmony_ci type: object 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_cirequired: 378c2ecf20Sopenharmony_ci - compatible 388c2ecf20Sopenharmony_ci - '#power-domain-cells' 398c2ecf20Sopenharmony_ci - operating-points-v2 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciadditionalProperties: false 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciexamples: 448c2ecf20Sopenharmony_ci - | 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci // Example 1 (rpmh power domain controller and OPP table): 478c2ecf20Sopenharmony_ci 488c2ecf20Sopenharmony_ci #include <dt-bindings/power/qcom-rpmpd.h> 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci rpmhpd: power-controller { 518c2ecf20Sopenharmony_ci compatible = "qcom,sdm845-rpmhpd"; 528c2ecf20Sopenharmony_ci #power-domain-cells = <1>; 538c2ecf20Sopenharmony_ci operating-points-v2 = <&rpmhpd_opp_table>; 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci rpmhpd_opp_table: opp-table { 568c2ecf20Sopenharmony_ci compatible = "operating-points-v2"; 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci rpmhpd_opp_ret: opp1 { 598c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>; 608c2ecf20Sopenharmony_ci }; 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_ci rpmhpd_opp_min_svs: opp2 { 638c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>; 648c2ecf20Sopenharmony_ci }; 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci rpmhpd_opp_low_svs: opp3 { 678c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>; 688c2ecf20Sopenharmony_ci }; 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci rpmhpd_opp_svs: opp4 { 718c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_SVS>; 728c2ecf20Sopenharmony_ci }; 738c2ecf20Sopenharmony_ci 748c2ecf20Sopenharmony_ci rpmhpd_opp_svs_l1: opp5 { 758c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>; 768c2ecf20Sopenharmony_ci }; 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci rpmhpd_opp_nom: opp6 { 798c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_NOM>; 808c2ecf20Sopenharmony_ci }; 818c2ecf20Sopenharmony_ci 828c2ecf20Sopenharmony_ci rpmhpd_opp_nom_l1: opp7 { 838c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>; 848c2ecf20Sopenharmony_ci }; 858c2ecf20Sopenharmony_ci 868c2ecf20Sopenharmony_ci rpmhpd_opp_nom_l2: opp8 { 878c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>; 888c2ecf20Sopenharmony_ci }; 898c2ecf20Sopenharmony_ci 908c2ecf20Sopenharmony_ci rpmhpd_opp_turbo: opp9 { 918c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_TURBO>; 928c2ecf20Sopenharmony_ci }; 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci rpmhpd_opp_turbo_l1: opp10 { 958c2ecf20Sopenharmony_ci opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>; 968c2ecf20Sopenharmony_ci }; 978c2ecf20Sopenharmony_ci }; 988c2ecf20Sopenharmony_ci }; 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci - | 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ci // Example 2 (rpm power domain controller and OPP table): 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci rpmpd: power-controller { 1058c2ecf20Sopenharmony_ci compatible = "qcom,msm8996-rpmpd"; 1068c2ecf20Sopenharmony_ci #power-domain-cells = <1>; 1078c2ecf20Sopenharmony_ci operating-points-v2 = <&rpmpd_opp_table>; 1088c2ecf20Sopenharmony_ci 1098c2ecf20Sopenharmony_ci rpmpd_opp_table: opp-table { 1108c2ecf20Sopenharmony_ci compatible = "operating-points-v2"; 1118c2ecf20Sopenharmony_ci 1128c2ecf20Sopenharmony_ci rpmpd_opp_low: opp1 { 1138c2ecf20Sopenharmony_ci opp-level = <1>; 1148c2ecf20Sopenharmony_ci }; 1158c2ecf20Sopenharmony_ci 1168c2ecf20Sopenharmony_ci rpmpd_opp_ret: opp2 { 1178c2ecf20Sopenharmony_ci opp-level = <2>; 1188c2ecf20Sopenharmony_ci }; 1198c2ecf20Sopenharmony_ci 1208c2ecf20Sopenharmony_ci rpmpd_opp_svs: opp3 { 1218c2ecf20Sopenharmony_ci opp-level = <3>; 1228c2ecf20Sopenharmony_ci }; 1238c2ecf20Sopenharmony_ci 1248c2ecf20Sopenharmony_ci rpmpd_opp_normal: opp4 { 1258c2ecf20Sopenharmony_ci opp-level = <4>; 1268c2ecf20Sopenharmony_ci }; 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci rpmpd_opp_high: opp5 { 1298c2ecf20Sopenharmony_ci opp-level = <5>; 1308c2ecf20Sopenharmony_ci }; 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ci rpmpd_opp_turbo: opp6 { 1338c2ecf20Sopenharmony_ci opp-level = <6>; 1348c2ecf20Sopenharmony_ci }; 1358c2ecf20Sopenharmony_ci }; 1368c2ecf20Sopenharmony_ci }; 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci - | 1398c2ecf20Sopenharmony_ci 1408c2ecf20Sopenharmony_ci // Example 3 (Client/Consumer device using OPP table): 1418c2ecf20Sopenharmony_ci 1428c2ecf20Sopenharmony_ci leaky-device0@12350000 { 1438c2ecf20Sopenharmony_ci compatible = "foo,i-leak-current"; 1448c2ecf20Sopenharmony_ci reg = <0x12350000 0x1000>; 1458c2ecf20Sopenharmony_ci power-domains = <&rpmhpd 0>; 1468c2ecf20Sopenharmony_ci operating-points-v2 = <&leaky_opp_table>; 1478c2ecf20Sopenharmony_ci }; 1488c2ecf20Sopenharmony_ci 1498c2ecf20Sopenharmony_ci leaky_opp_table: opp-table { 1508c2ecf20Sopenharmony_ci compatible = "operating-points-v2"; 1518c2ecf20Sopenharmony_ci opp1 { 1528c2ecf20Sopenharmony_ci opp-hz = /bits/ 64 <144000>; 1538c2ecf20Sopenharmony_ci required-opps = <&rpmhpd_opp_low>; 1548c2ecf20Sopenharmony_ci }; 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci opp2 { 1578c2ecf20Sopenharmony_ci opp-hz = /bits/ 64 <400000>; 1588c2ecf20Sopenharmony_ci required-opps = <&rpmhpd_opp_ret>; 1598c2ecf20Sopenharmony_ci }; 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci opp3 { 1628c2ecf20Sopenharmony_ci opp-hz = /bits/ 64 <20000000>; 1638c2ecf20Sopenharmony_ci required-opps = <&rpmpd_opp_svs>; 1648c2ecf20Sopenharmony_ci }; 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_ci opp4 { 1678c2ecf20Sopenharmony_ci opp-hz = /bits/ 64 <25000000>; 1688c2ecf20Sopenharmony_ci required-opps = <&rpmpd_opp_normal>; 1698c2ecf20Sopenharmony_ci }; 1708c2ecf20Sopenharmony_ci }; 1718c2ecf20Sopenharmony_ci... 172