xref: /freebsd/sys/contrib/device-tree/Bindings/soc/qcom/qcom,rpm.yaml (revision 9978553d0199e7ec0bdd1c44fc7f6c7b0c11e43b)
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,rpm.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Resource Power Manager (RPM)
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
15maintainers:
16  - Bjorn Andersson <andersson@kernel.org>
17
18properties:
19  compatible:
20    enum:
21      - qcom,rpm-apq8064
22      - qcom,rpm-msm8660
23      - qcom,rpm-msm8960
24      - qcom,rpm-ipq8064
25      - qcom,rpm-mdm9615
26
27  reg:
28    maxItems: 1
29
30  interrupts:
31    maxItems: 3
32
33  interrupt-names:
34    items:
35      - const: ack
36      - const: err
37      - const: wakeup
38
39  clocks:
40    maxItems: 1
41
42  clock-names:
43    items:
44      - const: ram
45
46  qcom,ipc:
47    $ref: /schemas/types.yaml#/definitions/phandle-array
48    items:
49      - items:
50          - description: phandle to a syscon node representing the APCS registers
51          - description: u32 representing offset to the register within the syscon
52          - description: u32 representing the ipc bit within the register
53    description:
54      Three entries specifying the outgoing ipc bit used for signaling the RPM.
55
56  clock-controller:
57    type: object
58    additionalProperties: true
59    properties:
60      compatible:
61        contains:
62          const: qcom,rpmcc
63
64patternProperties:
65  "^regulators(-[01])?$":
66    type: object
67    $ref: /schemas/regulator/qcom,rpm-regulator.yaml#
68    unevaluatedProperties: false
69
70required:
71  - compatible
72  - reg
73  - interrupts
74  - interrupt-names
75  - qcom,ipc
76
77additionalProperties: false
78
79examples:
80  - |
81    #include <dt-bindings/interrupt-controller/arm-gic.h>
82    #include <dt-bindings/interrupt-controller/irq.h>
83    #include <dt-bindings/mfd/qcom-rpm.h>
84
85    rpm@108000 {
86      compatible = "qcom,rpm-msm8960";
87      reg = <0x108000 0x1000>;
88      qcom,ipc = <&apcs 0x8 2>;
89
90      interrupts = <GIC_SPI 19 IRQ_TYPE_NONE>, <GIC_SPI 21 IRQ_TYPE_NONE>, <GIC_SPI 22 IRQ_TYPE_NONE>;
91      interrupt-names = "ack", "err", "wakeup";
92
93      regulators {
94        compatible = "qcom,rpm-pm8921-regulators";
95        vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
96
97        s1 {
98          regulator-min-microvolt = <1225000>;
99          regulator-max-microvolt = <1225000>;
100
101          bias-pull-down;
102
103          qcom,switch-mode-frequency = <3200000>;
104        };
105
106        pm8921_s4: s4 {
107          regulator-min-microvolt = <1800000>;
108          regulator-max-microvolt = <1800000>;
109
110          qcom,switch-mode-frequency = <1600000>;
111          bias-pull-down;
112
113          qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
114        };
115      };
116    };
117