xref: /freebsd/sys/contrib/device-tree/Bindings/soc/qcom/qcom,rpm.yaml (revision cb7aa33ac6cd46a5434798e50363136e64f3ae98)
1*cb7aa33aSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*cb7aa33aSEmmanuel Vadot%YAML 1.2
3*cb7aa33aSEmmanuel Vadot---
4*cb7aa33aSEmmanuel Vadot$id: http://devicetree.org/schemas/soc/qcom/qcom,rpm.yaml#
5*cb7aa33aSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*cb7aa33aSEmmanuel Vadot
7*cb7aa33aSEmmanuel Vadottitle: Qualcomm Resource Power Manager (RPM)
8*cb7aa33aSEmmanuel Vadot
9*cb7aa33aSEmmanuel Vadotdescription:
10*cb7aa33aSEmmanuel Vadot  This driver is used to interface with the Resource Power Manager (RPM) found
11*cb7aa33aSEmmanuel Vadot  in various Qualcomm platforms. The RPM allows each component in the system
12*cb7aa33aSEmmanuel Vadot  to vote for state of the system resources, such as clocks, regulators and bus
13*cb7aa33aSEmmanuel Vadot  frequencies.
14*cb7aa33aSEmmanuel Vadot
15*cb7aa33aSEmmanuel Vadotmaintainers:
16*cb7aa33aSEmmanuel Vadot  - Bjorn Andersson <andersson@kernel.org>
17*cb7aa33aSEmmanuel Vadot
18*cb7aa33aSEmmanuel Vadotproperties:
19*cb7aa33aSEmmanuel Vadot  compatible:
20*cb7aa33aSEmmanuel Vadot    enum:
21*cb7aa33aSEmmanuel Vadot      - qcom,rpm-apq8064
22*cb7aa33aSEmmanuel Vadot      - qcom,rpm-msm8660
23*cb7aa33aSEmmanuel Vadot      - qcom,rpm-msm8960
24*cb7aa33aSEmmanuel Vadot      - qcom,rpm-ipq8064
25*cb7aa33aSEmmanuel Vadot      - qcom,rpm-mdm9615
26*cb7aa33aSEmmanuel Vadot
27*cb7aa33aSEmmanuel Vadot  reg:
28*cb7aa33aSEmmanuel Vadot    maxItems: 1
29*cb7aa33aSEmmanuel Vadot
30*cb7aa33aSEmmanuel Vadot  interrupts:
31*cb7aa33aSEmmanuel Vadot    maxItems: 3
32*cb7aa33aSEmmanuel Vadot
33*cb7aa33aSEmmanuel Vadot  interrupt-names:
34*cb7aa33aSEmmanuel Vadot    items:
35*cb7aa33aSEmmanuel Vadot      - const: ack
36*cb7aa33aSEmmanuel Vadot      - const: err
37*cb7aa33aSEmmanuel Vadot      - const: wakeup
38*cb7aa33aSEmmanuel Vadot
39*cb7aa33aSEmmanuel Vadot  qcom,ipc:
40*cb7aa33aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/phandle-array
41*cb7aa33aSEmmanuel Vadot    items:
42*cb7aa33aSEmmanuel Vadot      - items:
43*cb7aa33aSEmmanuel Vadot          - description: phandle to a syscon node representing the APCS registers
44*cb7aa33aSEmmanuel Vadot          - description: u32 representing offset to the register within the syscon
45*cb7aa33aSEmmanuel Vadot          - description: u32 representing the ipc bit within the register
46*cb7aa33aSEmmanuel Vadot    description:
47*cb7aa33aSEmmanuel Vadot      Three entries specifying the outgoing ipc bit used for signaling the RPM.
48*cb7aa33aSEmmanuel Vadot
49*cb7aa33aSEmmanuel VadotpatternProperties:
50*cb7aa33aSEmmanuel Vadot  "^regulators(-[01])?$":
51*cb7aa33aSEmmanuel Vadot    type: object
52*cb7aa33aSEmmanuel Vadot    $ref: /schemas/regulator/qcom,rpm-regulator.yaml#
53*cb7aa33aSEmmanuel Vadot    unevaluatedProperties: false
54*cb7aa33aSEmmanuel Vadot
55*cb7aa33aSEmmanuel Vadotrequired:
56*cb7aa33aSEmmanuel Vadot  - compatible
57*cb7aa33aSEmmanuel Vadot  - reg
58*cb7aa33aSEmmanuel Vadot  - interrupts
59*cb7aa33aSEmmanuel Vadot  - interrupt-names
60*cb7aa33aSEmmanuel Vadot  - qcom,ipc
61*cb7aa33aSEmmanuel Vadot
62*cb7aa33aSEmmanuel VadotadditionalProperties: false
63*cb7aa33aSEmmanuel Vadot
64*cb7aa33aSEmmanuel Vadotexamples:
65*cb7aa33aSEmmanuel Vadot  - |
66*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
67*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
68*cb7aa33aSEmmanuel Vadot    #include <dt-bindings/mfd/qcom-rpm.h>
69*cb7aa33aSEmmanuel Vadot
70*cb7aa33aSEmmanuel Vadot    rpm@108000 {
71*cb7aa33aSEmmanuel Vadot      compatible = "qcom,rpm-msm8960";
72*cb7aa33aSEmmanuel Vadot      reg = <0x108000 0x1000>;
73*cb7aa33aSEmmanuel Vadot      qcom,ipc = <&apcs 0x8 2>;
74*cb7aa33aSEmmanuel Vadot
75*cb7aa33aSEmmanuel Vadot      interrupts = <GIC_SPI 19 IRQ_TYPE_NONE>, <GIC_SPI 21 IRQ_TYPE_NONE>, <GIC_SPI 22 IRQ_TYPE_NONE>;
76*cb7aa33aSEmmanuel Vadot      interrupt-names = "ack", "err", "wakeup";
77*cb7aa33aSEmmanuel Vadot
78*cb7aa33aSEmmanuel Vadot      regulators {
79*cb7aa33aSEmmanuel Vadot        compatible = "qcom,rpm-pm8921-regulators";
80*cb7aa33aSEmmanuel Vadot        vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
81*cb7aa33aSEmmanuel Vadot
82*cb7aa33aSEmmanuel Vadot        s1 {
83*cb7aa33aSEmmanuel Vadot          regulator-min-microvolt = <1225000>;
84*cb7aa33aSEmmanuel Vadot          regulator-max-microvolt = <1225000>;
85*cb7aa33aSEmmanuel Vadot
86*cb7aa33aSEmmanuel Vadot          bias-pull-down;
87*cb7aa33aSEmmanuel Vadot
88*cb7aa33aSEmmanuel Vadot          qcom,switch-mode-frequency = <3200000>;
89*cb7aa33aSEmmanuel Vadot        };
90*cb7aa33aSEmmanuel Vadot
91*cb7aa33aSEmmanuel Vadot        pm8921_s4: s4 {
92*cb7aa33aSEmmanuel Vadot          regulator-min-microvolt = <1800000>;
93*cb7aa33aSEmmanuel Vadot          regulator-max-microvolt = <1800000>;
94*cb7aa33aSEmmanuel Vadot
95*cb7aa33aSEmmanuel Vadot          qcom,switch-mode-frequency = <1600000>;
96*cb7aa33aSEmmanuel Vadot          bias-pull-down;
97*cb7aa33aSEmmanuel Vadot
98*cb7aa33aSEmmanuel Vadot          qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
99*cb7aa33aSEmmanuel Vadot        };
100*cb7aa33aSEmmanuel Vadot      };
101*cb7aa33aSEmmanuel Vadot    };
102