xref: /linux/Documentation/devicetree/bindings/soc/qcom/qcom,smd-rpm.yaml (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
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/GLINK
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 or GLINK information for the RPM edge should be filled out.  See
16  qcom,smd.yaml for the required edge properties.  All SMD/GLINK related
17  properties will reside 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    oneOf:
34      - items:
35          - enum:
36              - qcom,rpm-apq8084
37              - qcom,rpm-mdm9607
38              - qcom,rpm-msm8226
39              - qcom,rpm-msm8610
40              - qcom,rpm-msm8909
41              - qcom,rpm-msm8916
42              - qcom,rpm-msm8917
43              - qcom,rpm-msm8936
44              - qcom,rpm-msm8937
45              - qcom,rpm-msm8952
46              - qcom,rpm-msm8953
47              - qcom,rpm-msm8974
48              - qcom,rpm-msm8976
49              - qcom,rpm-msm8994
50          - const: qcom,smd-rpm
51      - items:
52          - enum:
53              - qcom,rpm-ipq6018
54              - qcom,rpm-ipq9574
55              - qcom,rpm-msm8996
56              - qcom,rpm-msm8998
57              - qcom,rpm-qcm2290
58              - qcom,rpm-qcs404
59              - qcom,rpm-sdm660
60              - qcom,rpm-sm6115
61              - qcom,rpm-sm6125
62              - qcom,rpm-sm6375
63          - const: qcom,glink-smd-rpm
64
65  clock-controller:
66    $ref: /schemas/clock/qcom,rpmcc.yaml#
67    unevaluatedProperties: false
68
69  power-controller:
70    $ref: /schemas/power/qcom,rpmpd.yaml#
71
72  qcom,glink-channels:
73    $ref: /schemas/types.yaml#/definitions/string-array
74    description: Channel name used for the RPM communication
75    items:
76      - const: rpm_requests
77
78  qcom,smd-channels:
79    $ref: /schemas/types.yaml#/definitions/string-array
80    description: Channel name used for the RPM communication
81    items:
82      - const: rpm_requests
83
84patternProperties:
85  "^regulators(-[01])?$":
86    $ref: /schemas/regulator/qcom,smd-rpm-regulator.yaml#
87    unevaluatedProperties: false
88
89if:
90  properties:
91    compatible:
92      contains:
93        const: qcom,smd-rpm
94then:
95  properties:
96    qcom,glink-channels: false
97  required:
98    - qcom,smd-channels
99else:
100  properties:
101    qcom,smd-channels: false
102  required:
103    - qcom,glink-channels
104
105required:
106  - compatible
107
108additionalProperties: false
109
110examples:
111  - |
112    #include <dt-bindings/interrupt-controller/arm-gic.h>
113    #include <dt-bindings/interrupt-controller/irq.h>
114
115    remoteproc {
116        compatible = "qcom,msm8916-rpm-proc", "qcom,rpm-proc";
117
118        smd-edge {
119            interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
120            qcom,ipc = <&apcs 8 0>;
121            qcom,smd-edge = <15>;
122
123            rpm-requests {
124                compatible = "qcom,rpm-msm8916", "qcom,smd-rpm";
125                qcom,smd-channels = "rpm_requests";
126
127                clock-controller {
128                    compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
129                    #clock-cells = <1>;
130                    clocks = <&xo_board>;
131                    clock-names = "xo";
132                };
133
134                power-controller {
135                    compatible = "qcom,msm8916-rpmpd";
136                    #power-domain-cells = <1>;
137                    operating-points-v2 = <&rpmpd_opp_table>;
138
139                    rpmpd_opp_table: opp-table {
140                        compatible = "operating-points-v2";
141
142                        opp-1 {
143                            opp-level = <1>;
144                        };
145                        opp-2 {
146                            opp-level = <2>;
147                        };
148                    };
149                };
150            };
151        };
152    };
153