xref: /linux/Documentation/devicetree/bindings/mfd/ti,tps65910.yaml (revision 8d2b0853add1d7534dc0794e3c8e0b9e8c4ec640)
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mfd/ti,tps65910.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: TI TPS65910 Power Management Integrated Circuit
8
9maintainers:
10  - Shree Ramamoorthy <s-ramamoorthy@ti.com>
11
12description:
13  TPS65910 device is a Power Management IC that provides 3 step-down converters,
14  1 stepup converter, and 8 LDOs. The device contains an embedded power controller (EPC),
15  1 GPIO, and an RTC.
16
17properties:
18  compatible:
19    enum:
20      - ti,tps65910
21      - ti,tps65911
22
23  reg:
24    description: I2C slave address
25    maxItems: 1
26
27  gpio-controller: true
28
29  '#gpio-cells':
30    const: 2
31    description: |
32      The first cell is the GPIO number.
33      The second cell is used to specify additional options <unused>.
34
35  interrupts:
36    maxItems: 1
37
38  interrupt-controller: true
39
40  '#interrupt-cells':
41    description: Specifies the IRQ number and flags
42    const: 2
43
44  ti,vmbch-threshold:
45    description: |
46      (TPS65911) Main battery charged threshold comparator.
47      See VMBCH_VSEL in TPS65910 datasheet.
48    $ref: /schemas/types.yaml#/definitions/uint32
49    enum: [0, 1, 2, 3]
50
51  ti,vmbch2-threshold:
52    description: |
53      (TPS65911) Main battery discharged threshold comparator.
54      See VMBCH_VSEL in TPS65910 datasheet.
55    $ref: /schemas/types.yaml#/definitions/uint32
56    enum: [0, 1, 2, 3]
57
58  ti,en-ck32k-xtal:
59    type: boolean
60    description: Enable external 32-kHz crystal oscillator.
61
62  ti,en-gpio-sleep:
63    description: |
64      Enable sleep control for gpios.
65    $ref: /schemas/types.yaml#/definitions/uint32-array
66    minItems: 9
67    maxItems: 9
68    items:
69      minimum: 0
70      maximum: 1
71
72  ti,system-power-controller:
73    type: boolean
74    description: Identify whether or not this pmic controls the system power
75
76  ti,sleep-enable:
77    type: boolean
78    description: Enable SLEEP state.
79
80  ti,sleep-keep-therm:
81    type: boolean
82    description: Keep thermal monitoring on in sleep state.
83
84  ti,sleep-keep-ck32k:
85    type: boolean
86    description: Keep the 32KHz clock output on in sleep state.
87
88  ti,sleep-keep-hsclk:
89    type: boolean
90    description: Keep high speed internal clock on in sleep state.
91
92  regulators:
93    type: object
94    additionalProperties: false
95    description: List of regulators provided by this controller.
96
97    patternProperties:
98      "^(vrtc|vio|vpll|vdac|vmmc|vbb|vddctrl)$":
99        type: object
100        $ref: /schemas/regulator/regulator.yaml#
101        properties:
102          ti,regulator-ext-sleep-control:
103            description: |
104              Enable external sleep control through external inputs:
105              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
106              If this property is not defined, it defaults to 0 (not enabled).
107            $ref: /schemas/types.yaml#/definitions/uint32
108            enum: [0, 1, 2, 4, 8]
109        unevaluatedProperties: false
110
111      "^(vdd[1-3]|vaux([1-2]|33)|vdig[1-2])$":
112        type: object
113        $ref: /schemas/regulator/regulator.yaml#
114        properties:
115          ti,regulator-ext-sleep-control:
116            description: |
117              Enable external sleep control through external inputs:
118              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
119              If this property is not defined, it defaults to 0 (not enabled).
120            $ref: /schemas/types.yaml#/definitions/uint32
121            enum: [0, 1, 2, 4, 8]
122        unevaluatedProperties: false
123
124      "^ldo[1-8]$":
125        type: object
126        $ref: /schemas/regulator/regulator.yaml#
127        properties:
128          ti,regulator-ext-sleep-control:
129            description: |
130              Enable external sleep control through external inputs:
131              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
132              If this property is not defined, it defaults to 0 (not enabled).
133            $ref: /schemas/types.yaml#/definitions/uint32
134            enum: [0, 1, 2, 4, 8]
135        unevaluatedProperties: false
136
137patternProperties:
138  "^(vcc(io|[1-7])-supply)$":
139    description: |
140      Input voltage supply phandle for regulators.
141      These entries are required if PMIC regulators are enabled, or else it
142      can cause the regulator registration to fail.
143
144      If some input supply is powered through battery or always-on supply, then
145      it is also required to have these parameters with the proper node handle for always-on
146      power supply.
147      tps65910:
148        vcc1-supply: VDD1 input.
149        vcc2-supply: VDD2 input.
150        vcc3-supply: VAUX33 and VMMC input.
151        vcc4-supply: VAUX1 and VAUX2 input.
152        vcc5-supply: VPLL and VDAC input.
153        vcc6-supply: VDIG1 and VDIG2 input.
154        vcc7-supply: VRTC and VBB input.
155        vccio-supply: VIO input.
156      tps65911:
157        vcc1-supply: VDD1 input.
158        vcc2-supply: VDD2 input.
159        vcc3-supply: LDO6, LDO7 and LDO8 input.
160        vcc4-supply: LDO5 input.
161        vcc5-supply: LDO3 and LDO4 input.
162        vcc6-supply: LDO1 and LDO2 input.
163        vcc7-supply: VRTC input.
164        vccio-supply: VIO input.
165
166required:
167  - compatible
168  - reg
169  - interrupts
170  - interrupt-controller
171  - '#interrupt-cells'
172  - gpio-controller
173  - '#gpio-cells'
174  - regulators
175
176additionalProperties: false
177
178allOf:
179  - if:
180      properties:
181        compatible:
182          contains:
183            enum:
184              - ti,tps65910
185    then:
186      properties:
187        regulators:
188          patternProperties:
189            "^(ldo[1-8]|vddctrl)$": false
190  - if:
191      properties:
192        compatible:
193          contains:
194            enum:
195              - ti,tps65911
196    then:
197      properties:
198        regulators:
199          patternProperties:
200            "^(vdd3|vaux([1-2]|33)|vdig[1-2])$": false
201            "^(vpll|vdac|vmmc|vbb)$": false
202
203examples:
204  - |
205    #include <dt-bindings/interrupt-controller/arm-gic.h>
206    i2c {
207        #address-cells = <1>;
208        #size-cells = <0>;
209
210        pmic: tps65910@2d {
211            compatible = "ti,tps65910";
212            reg = <0x2d>;
213            interrupt-parent = <&intc>;
214            interrupts = < 0 118 0x04 >;
215
216            #gpio-cells = <2>;
217            gpio-controller;
218
219            #interrupt-cells = <2>;
220            interrupt-controller;
221
222            ti,system-power-controller;
223
224            ti,vmbch-threshold = <0>;
225            ti,vmbch2-threshold = <0>;
226            ti,en-ck32k-xtal;
227            ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
228
229            vcc1-supply = <&reg_parent>;
230            vcc2-supply = <&some_reg>;
231            vcc3-supply = <&vbat>;
232            vcc4-supply = <&vbat>;
233            vcc5-supply = <&vbat>;
234            vcc6-supply = <&vbat>;
235            vcc7-supply = <&vbat>;
236            vccio-supply = <&vbat>;
237
238            regulators {
239                vio_reg: vio {
240                    regulator-name = "vio";
241                    regulator-min-microvolt = <1500000>;
242                    regulator-max-microvolt = <3300000>;
243                    regulator-always-on;
244                    regulator-boot-on;
245                };
246                vdd1_reg: vdd1 {
247                    regulator-name = "vdd1";
248                    regulator-min-microvolt = < 600000>;
249                    regulator-max-microvolt = <1500000>;
250                    regulator-always-on;
251                    regulator-boot-on;
252                    ti,regulator-ext-sleep-control = <0>;
253                };
254                vdd2_reg: vdd2 {
255                    regulator-name = "vdd2";
256                    regulator-min-microvolt = < 600000>;
257                    regulator-max-microvolt = <1500000>;
258                    regulator-always-on;
259                    regulator-boot-on;
260                };
261                vdd3_reg: vdd3 {
262                    regulator-name = "vdd3";
263                    regulator-min-microvolt = <5000000>;
264                    regulator-max-microvolt = <5000000>;
265                    regulator-always-on;
266                };
267                vdig1_reg: vdig1 {
268                    regulator-name = "vdig1";
269                    regulator-min-microvolt = <1200000>;
270                    regulator-max-microvolt = <2700000>;
271                    regulator-always-on;
272                };
273                vdig2_reg: vdig2 {
274                    regulator-name = "vdig2";
275                    regulator-min-microvolt = <1000000>;
276                    regulator-max-microvolt = <1800000>;
277                    regulator-always-on;
278                };
279                vpll_reg: vpll {
280                    regulator-name = "vpll";
281                    regulator-min-microvolt = <1000000>;
282                    regulator-max-microvolt = <2500000>;
283                    regulator-always-on;
284                };
285                vdac_reg: vdac {
286                    regulator-name = "vdac";
287                    regulator-min-microvolt = <1800000>;
288                    regulator-max-microvolt = <2850000>;
289                    regulator-always-on;
290                };
291                vaux1_reg: vaux1 {
292                    regulator-name = "vaux1";
293                    regulator-min-microvolt = <1800000>;
294                    regulator-max-microvolt = <2850000>;
295                    regulator-always-on;
296                };
297                vaux2_reg: vaux2 {
298                    regulator-name = "vaux2";
299                    regulator-min-microvolt = <1800000>;
300                    regulator-max-microvolt = <3300000>;
301                    regulator-always-on;
302                };
303                vaux33_reg: vaux33 {
304                    regulator-name = "vaux33";
305                    regulator-min-microvolt = <1800000>;
306                    regulator-max-microvolt = <3300000>;
307                    regulator-always-on;
308                };
309                vmmc_reg: vmmc {
310                    regulator-name = "vmmc";
311                    regulator-min-microvolt = <1800000>;
312                    regulator-max-microvolt = <3300000>;
313                    regulator-always-on;
314                    regulator-boot-on;
315                };
316            };
317        };
318    };
319