1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/regulator/qcom,rpmh-regulator.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Technologies, Inc. RPMh Regulators
8
9maintainers:
10  - David Collins <collinsd@codeaurora.org>
11
12description: |
13    rpmh-regulator devices support PMIC regulator management via the Voltage
14    Regulator Manager (VRM) and Oscillator Buffer (XOB) RPMh accelerators.
15    The APPS processor communicates with these hardware blocks via a
16    Resource State Coordinator (RSC) using command packets.  The VRM allows
17    changing three parameters for a given regulator, enable state, output
18    voltage, and operating mode.  The XOB allows changing only a single
19    parameter for a given regulator, its enable state.  Despite its name,
20    the XOB is capable of controlling the enable state of any PMIC peripheral.
21    It is used for clock buffers, low-voltage switches, and LDO/SMPS regulators
22    which have a fixed voltage and mode.
23
24    =======================
25    Required Node Structure
26    =======================
27
28    RPMh regulators must be described in two levels of device nodes.  The first
29    level describes the PMIC containing the regulators and must reside within an
30    RPMh device node.  The second level describes each regulator within the PMIC
31    which is to be used on the board.  Each of these regulators maps to a single
32    RPMh resource.
33
34    The names used for regulator nodes must match those supported by a given
35    PMIC. Supported regulator node names are
36      For PM8005, smps1 - smps4
37      For PM8009, smps1 - smps2, ldo1 - ldo7
38      For PM8150, smps1 - smps10, ldo1 - ldo18
39      For PM8150L, smps1 - smps8, ldo1 - ldo11, bob, flash, rgb
40      For PM8350, smps1 - smps12, ldo1 - ldo10
41      For PM8350C, smps1 - smps10, ldo1 - ldo13, bob
42      For PM8998, smps1 - smps13, ldo1 - ldo28, lvs1 - lvs2
43      For PMI8998, bob
44      For PM6150, smps1 - smps5, ldo1 - ldo19
45      For PM6150L, smps1 - smps8, ldo1 - ldo11, bob
46      For PMX55, smps1 - smps7, ldo1 - ldo16
47      For PM7325, smps1 - smps8, ldo1 - ldo19
48      For PMR735A, smps1 - smps3, ldo1 - ldo7
49
50properties:
51  compatible:
52    enum:
53      - qcom,pm8005-rpmh-regulators
54      - qcom,pm8009-rpmh-regulators
55      - qcom,pm8009-1-rpmh-regulators
56      - qcom,pm8150-rpmh-regulators
57      - qcom,pm8150l-rpmh-regulators
58      - qcom,pm8350-rpmh-regulators
59      - qcom,pm8350c-rpmh-regulators
60      - qcom,pm8998-rpmh-regulators
61      - qcom,pmi8998-rpmh-regulators
62      - qcom,pm6150-rpmh-regulators
63      - qcom,pm6150l-rpmh-regulators
64      - qcom,pmx55-rpmh-regulators
65      - qcom,pm7325-rpmh-regulators
66      - qcom,pmr735a-rpmh-regulators
67
68  qcom,pmic-id:
69    description: |
70        RPMh resource name suffix used for the regulators found
71        on this PMIC.
72    $ref: /schemas/types.yaml#/definitions/string
73    enum: [a, b, c, d, e, f]
74
75  qcom,always-wait-for-ack:
76    description: |
77        Boolean flag which indicates that the application processor
78        must wait for an ACK or a NACK from RPMh for every request
79        sent for this regulator including those which are for a
80        strictly lower power state.
81    $ref: /schemas/types.yaml#/definitions/flag
82
83  vdd-flash-supply:
84    description: Input supply phandle of flash.
85
86  vdd-rgb-supply:
87    description: Input supply phandle of rgb.
88
89  vin-lvs-1-2-supply:
90    description: Input supply phandle of one or more regulators.
91
92  vdd-bob-supply:
93    description: BOB regulator parent supply phandle.
94
95  bob:
96    type: object
97    $ref: "regulator.yaml#"
98    description: BOB regulator node.
99
100patternProperties:
101  "^vdd-s([0-9]+)-supply$":
102    description: Input supply phandle(s) of one or more regulators.
103
104  "^vdd-(l[0-9]+[-]){1,5}supply$":
105    description: Input supply phandle(s) of one or more regulators.
106
107  "^(smps|ldo|lvs)[0-9]+$":
108    type: object
109    $ref: "regulator.yaml#"
110    description: smps/ldo regulator nodes(s).
111
112additionalProperties: false
113
114required:
115  - compatible
116  - qcom,pmic-id
117
118examples:
119  - |
120    #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
121
122    pm8998-rpmh-regulators {
123        compatible = "qcom,pm8998-rpmh-regulators";
124        qcom,pmic-id = "a";
125
126        vdd-l7-l12-l14-l15-supply = <&pm8998_s5>;
127
128        smps2 {
129            regulator-min-microvolt = <1100000>;
130            regulator-max-microvolt = <1100000>;
131        };
132
133        ldo7 {
134            regulator-min-microvolt = <1800000>;
135            regulator-max-microvolt = <1800000>;
136            regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
137            regulator-allowed-modes =
138                <RPMH_REGULATOR_MODE_LPM
139                 RPMH_REGULATOR_MODE_HPM>;
140            regulator-allow-set-load;
141        };
142
143        lvs1 {
144            regulator-min-microvolt = <1800000>;
145            regulator-max-microvolt = <1800000>;
146        };
147    };
148
149    pmi8998-rpmh-regulators {
150        compatible = "qcom,pmi8998-rpmh-regulators";
151        qcom,pmic-id = "b";
152
153        bob {
154            regulator-min-microvolt = <3312000>;
155            regulator-max-microvolt = <3600000>;
156            regulator-allowed-modes =
157                <RPMH_REGULATOR_MODE_AUTO
158                 RPMH_REGULATOR_MODE_HPM>;
159            regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
160        };
161    };
162...
163