0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: "http://devicetree.org/schemas/soc/qcom/qcom,smd-rpm.yaml#"
0005 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
0006
0007 title: Qualcomm Resource Power Manager (RPM) over SMD
0008
0009 description: |
0010 This driver is used to interface with the Resource Power Manager (RPM) found
0011 in various Qualcomm platforms. The RPM allows each component in the system
0012 to vote for state of the system resources, such as clocks, regulators and bus
0013 frequencies.
0014
0015 The SMD information for the RPM edge should be filled out. See qcom,smd.yaml
0016 for the required edge properties. All SMD related properties will reside
0017 within the RPM node itself.
0018
0019 The RPM exposes resources to its subnodes. The rpm_requests node must be
0020 present and this subnode may contain children that designate regulator
0021 resources.
0022
0023 Refer to Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml
0024 for information on the regulator subnodes that can exist under the
0025 rpm_requests.
0026
0027 maintainers:
0028 - Andy Gross <agross@kernel.org>
0029 - Bjorn Andersson <bjorn.andersson@linaro.org>
0030
0031 properties:
0032 compatible:
0033 enum:
0034 - qcom,rpm-apq8084
0035 - qcom,rpm-ipq6018
0036 - qcom,rpm-msm8226
0037 - qcom,rpm-msm8909
0038 - qcom,rpm-msm8916
0039 - qcom,rpm-msm8936
0040 - qcom,rpm-msm8953
0041 - qcom,rpm-msm8974
0042 - qcom,rpm-msm8976
0043 - qcom,rpm-msm8996
0044 - qcom,rpm-msm8998
0045 - qcom,rpm-sdm660
0046 - qcom,rpm-sm6115
0047 - qcom,rpm-sm6125
0048 - qcom,rpm-qcm2290
0049 - qcom,rpm-qcs404
0050
0051 clock-controller:
0052 $ref: /schemas/clock/qcom,rpmcc.yaml#
0053 unevaluatedProperties: false
0054
0055 power-controller:
0056 $ref: /schemas/power/qcom,rpmpd.yaml#
0057
0058 qcom,smd-channels:
0059 $ref: /schemas/types.yaml#/definitions/string-array
0060 description: Channel name used for the RPM communication
0061 items:
0062 - const: rpm_requests
0063
0064 if:
0065 properties:
0066 compatible:
0067 contains:
0068 enum:
0069 - qcom,rpm-apq8084
0070 - qcom,rpm-msm8916
0071 - qcom,rpm-msm8974
0072 - qcom,rpm-msm8953
0073 then:
0074 required:
0075 - qcom,smd-channels
0076
0077 required:
0078 - compatible
0079
0080 additionalProperties: false
0081
0082 examples:
0083 - |
0084 #include <dt-bindings/interrupt-controller/arm-gic.h>
0085 #include <dt-bindings/interrupt-controller/irq.h>
0086
0087 smd {
0088 compatible = "qcom,smd";
0089
0090 rpm {
0091 interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
0092 qcom,ipc = <&apcs 8 0>;
0093 qcom,smd-edge = <15>;
0094
0095 rpm-requests {
0096 compatible = "qcom,rpm-msm8916";
0097 qcom,smd-channels = "rpm_requests";
0098
0099 clock-controller {
0100 compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
0101 #clock-cells = <1>;
0102 clocks = <&xo_board>;
0103 clock-names = "xo";
0104 };
0105
0106 power-controller {
0107 compatible = "qcom,msm8916-rpmpd";
0108 #power-domain-cells = <1>;
0109 operating-points-v2 = <&rpmpd_opp_table>;
0110
0111 rpmpd_opp_table: opp-table {
0112 compatible = "operating-points-v2";
0113
0114 opp-1 {
0115 opp-level = <1>;
0116 };
0117 opp-2 {
0118 opp-level = <2>;
0119 };
0120 };
0121 };
0122 };
0123 };
0124 };