1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: "http://devicetree.org/schemas/soc/qcom/qcom,smd-rpm.yaml#"
5$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7title: Qualcomm Resource Power Manager (RPM) over SMD
8
9description: |
10  This driver is used to interface with the Resource Power Manager (RPM) found
11  in various Qualcomm platforms. The RPM allows each component in the system
12  to vote for state of the system resources, such as clocks, regulators and bus
13  frequencies.
14
15  The SMD information for the RPM edge should be filled out.  See qcom,smd.yaml
16  for the required edge properties.  All SMD related properties will reside
17  within the RPM node itself.
18
19  The RPM exposes resources to its subnodes.  The rpm_requests node must be
20  present and this subnode may contain children that designate regulator
21  resources.
22
23  Refer to Documentation/devicetree/bindings/regulator/qcom,smd-rpm-regulator.yaml
24  for information on the regulator subnodes that can exist under the
25  rpm_requests.
26
27maintainers:
28  - Andy Gross <agross@kernel.org>
29  - Bjorn Andersson <bjorn.andersson@linaro.org>
30
31properties:
32  compatible:
33    enum:
34      - qcom,rpm-apq8084
35      - qcom,rpm-ipq6018
36      - qcom,rpm-msm8226
37      - qcom,rpm-msm8909
38      - qcom,rpm-msm8916
39      - qcom,rpm-msm8936
40      - qcom,rpm-msm8953
41      - qcom,rpm-msm8974
42      - qcom,rpm-msm8976
43      - qcom,rpm-msm8996
44      - qcom,rpm-msm8998
45      - qcom,rpm-sdm660
46      - qcom,rpm-sm6115
47      - qcom,rpm-sm6125
48      - qcom,rpm-qcm2290
49      - qcom,rpm-qcs404
50
51  clock-controller:
52    $ref: /schemas/clock/qcom,rpmcc.yaml#
53    unevaluatedProperties: false
54
55  power-controller:
56    $ref: /schemas/power/qcom,rpmpd.yaml#
57
58  qcom,smd-channels:
59    $ref: /schemas/types.yaml#/definitions/string-array
60    description: Channel name used for the RPM communication
61    items:
62      - const: rpm_requests
63
64if:
65  properties:
66    compatible:
67      contains:
68        enum:
69          - qcom,rpm-apq8084
70          - qcom,rpm-msm8916
71          - qcom,rpm-msm8974
72          - qcom,rpm-msm8953
73then:
74  required:
75    - qcom,smd-channels
76
77required:
78  - compatible
79
80additionalProperties: false
81
82examples:
83  - |
84    #include <dt-bindings/interrupt-controller/arm-gic.h>
85    #include <dt-bindings/interrupt-controller/irq.h>
86
87    smd {
88        compatible = "qcom,smd";
89
90        rpm {
91            interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
92            qcom,ipc = <&apcs 8 0>;
93            qcom,smd-edge = <15>;
94
95            rpm-requests {
96                compatible = "qcom,rpm-msm8916";
97                qcom,smd-channels = "rpm_requests";
98
99                clock-controller {
100                    compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
101                    #clock-cells = <1>;
102                    clocks = <&xo_board>;
103                    clock-names = "xo";
104                };
105
106                power-controller {
107                    compatible = "qcom,msm8916-rpmpd";
108                    #power-domain-cells = <1>;
109                    operating-points-v2 = <&rpmpd_opp_table>;
110
111                    rpmpd_opp_table: opp-table {
112                        compatible = "operating-points-v2";
113
114                        opp-1 {
115                            opp-level = <1>;
116                        };
117                        opp-2 {
118                            opp-level = <2>;
119                        };
120                    };
121                };
122            };
123        };
124    };
125