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