1*413ec729SPaul Cercueil# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*413ec729SPaul Cercueil%YAML 1.2
3*413ec729SPaul Cercueil---
4*413ec729SPaul Cercueil$id: http://devicetree.org/schemas/regulator/active-semi,act8945a.yaml#
5*413ec729SPaul Cercueil$schema: http://devicetree.org/meta-schemas/core.yaml#
6*413ec729SPaul Cercueil
7*413ec729SPaul Cercueiltitle: Active-semi ACT8945a regulator
8*413ec729SPaul Cercueil
9*413ec729SPaul Cercueilmaintainers:
10*413ec729SPaul Cercueil  - Paul Cercueil <paul@crapouillou.net>
11*413ec729SPaul Cercueil
12*413ec729SPaul Cercueilproperties:
13*413ec729SPaul Cercueil  compatible:
14*413ec729SPaul Cercueil    const: active-semi,act8945a
15*413ec729SPaul Cercueil
16*413ec729SPaul Cercueil  reg:
17*413ec729SPaul Cercueil    maxItems: 1
18*413ec729SPaul Cercueil
19*413ec729SPaul Cercueil  system-power-controller:
20*413ec729SPaul Cercueil    description:
21*413ec729SPaul Cercueil      Indicates that the ACT8945a is responsible for powering OFF
22*413ec729SPaul Cercueil      the system.
23*413ec729SPaul Cercueil    type: boolean
24*413ec729SPaul Cercueil
25*413ec729SPaul Cercueil  active-semi,vsel-high:
26*413ec729SPaul Cercueil    description:
27*413ec729SPaul Cercueil      Indicates the VSEL pin is high. If this property is missing,
28*413ec729SPaul Cercueil      the VSEL pin is assumed to be low.
29*413ec729SPaul Cercueil    type: boolean
30*413ec729SPaul Cercueil
31*413ec729SPaul Cercueil  regulators:
32*413ec729SPaul Cercueil    type: object
33*413ec729SPaul Cercueil    additionalProperties: false
34*413ec729SPaul Cercueil
35*413ec729SPaul Cercueil    properties:
36*413ec729SPaul Cercueil      REG_DCDC1:
37*413ec729SPaul Cercueil        type: object
38*413ec729SPaul Cercueil        $ref: /schemas/regulator/regulator.yaml#
39*413ec729SPaul Cercueil        unevaluatedProperties: false
40*413ec729SPaul Cercueil
41*413ec729SPaul Cercueil        properties:
42*413ec729SPaul Cercueil          vp1-supply:
43*413ec729SPaul Cercueil            description: Handle to the VP1 input supply
44*413ec729SPaul Cercueil
45*413ec729SPaul Cercueil      REG_DCDC2:
46*413ec729SPaul Cercueil        type: object
47*413ec729SPaul Cercueil        $ref: /schemas/regulator/regulator.yaml#
48*413ec729SPaul Cercueil        unevaluatedProperties: false
49*413ec729SPaul Cercueil
50*413ec729SPaul Cercueil        properties:
51*413ec729SPaul Cercueil          vp2-supply:
52*413ec729SPaul Cercueil            description: Handle to the VP2 input supply
53*413ec729SPaul Cercueil
54*413ec729SPaul Cercueil      REG_DCDC3:
55*413ec729SPaul Cercueil        type: object
56*413ec729SPaul Cercueil        $ref: /schemas/regulator/regulator.yaml#
57*413ec729SPaul Cercueil        unevaluatedProperties: false
58*413ec729SPaul Cercueil
59*413ec729SPaul Cercueil        properties:
60*413ec729SPaul Cercueil          vp3-supply:
61*413ec729SPaul Cercueil            description: Handle to the VP3 input supply
62*413ec729SPaul Cercueil
63*413ec729SPaul Cercueil    patternProperties:
64*413ec729SPaul Cercueil      "^REG_LDO[1-2]$":
65*413ec729SPaul Cercueil        type: object
66*413ec729SPaul Cercueil        $ref: /schemas/regulator/regulator.yaml#
67*413ec729SPaul Cercueil        unevaluatedProperties: false
68*413ec729SPaul Cercueil
69*413ec729SPaul Cercueil        properties:
70*413ec729SPaul Cercueil          inl45-supply:
71*413ec729SPaul Cercueil            description: Handle to the INL45 input supply
72*413ec729SPaul Cercueil
73*413ec729SPaul Cercueil      "^REG_LDO[3-4]$":
74*413ec729SPaul Cercueil        type: object
75*413ec729SPaul Cercueil        $ref: /schemas/regulator/regulator.yaml#
76*413ec729SPaul Cercueil        unevaluatedProperties: false
77*413ec729SPaul Cercueil
78*413ec729SPaul Cercueil        properties:
79*413ec729SPaul Cercueil          inl67-supply:
80*413ec729SPaul Cercueil            description: Handle to the INL67 input supply
81*413ec729SPaul Cercueil
82*413ec729SPaul Cercueil  charger:
83*413ec729SPaul Cercueil    type: object
84*413ec729SPaul Cercueil    additionalProperties: false
85*413ec729SPaul Cercueil
86*413ec729SPaul Cercueil    properties:
87*413ec729SPaul Cercueil      compatible:
88*413ec729SPaul Cercueil        const: active-semi,act8945a-charger
89*413ec729SPaul Cercueil
90*413ec729SPaul Cercueil      interrupts:
91*413ec729SPaul Cercueil        maxItems: 1
92*413ec729SPaul Cercueil
93*413ec729SPaul Cercueil      active-semi,chglev-gpios:
94*413ec729SPaul Cercueil        description: CGHLEV GPIO
95*413ec729SPaul Cercueil        maxItems: 1
96*413ec729SPaul Cercueil
97*413ec729SPaul Cercueil      active-semi,lbo-gpios:
98*413ec729SPaul Cercueil        description: LBO GPIO
99*413ec729SPaul Cercueil        maxItems: 1
100*413ec729SPaul Cercueil
101*413ec729SPaul Cercueil      active-semi,input-voltage-threshold-microvolt:
102*413ec729SPaul Cercueil        description: Input voltage threshold
103*413ec729SPaul Cercueil        maxItems: 1
104*413ec729SPaul Cercueil
105*413ec729SPaul Cercueil      active-semi,precondition-timeout:
106*413ec729SPaul Cercueil        description: Precondition timeout
107*413ec729SPaul Cercueil        $ref: /schemas/types.yaml#/definitions/uint32
108*413ec729SPaul Cercueil
109*413ec729SPaul Cercueil      active-semi,total-timeout:
110*413ec729SPaul Cercueil        description: Total timeout
111*413ec729SPaul Cercueil        $ref: /schemas/types.yaml#/definitions/uint32
112*413ec729SPaul Cercueil
113*413ec729SPaul Cercueil    required:
114*413ec729SPaul Cercueil      - compatible
115*413ec729SPaul Cercueil      - interrupts
116*413ec729SPaul Cercueil
117*413ec729SPaul CercueiladditionalProperties: false
118*413ec729SPaul Cercueil
119*413ec729SPaul Cercueilrequired:
120*413ec729SPaul Cercueil  - reg
121*413ec729SPaul Cercueil  - compatible
122*413ec729SPaul Cercueil  - regulators
123*413ec729SPaul Cercueil
124*413ec729SPaul Cercueilexamples:
125*413ec729SPaul Cercueil  - |
126*413ec729SPaul Cercueil    #include <dt-bindings/gpio/gpio.h>
127*413ec729SPaul Cercueil    #include <dt-bindings/interrupt-controller/irq.h>
128*413ec729SPaul Cercueil    #include <dt-bindings/mfd/atmel-flexcom.h>
129*413ec729SPaul Cercueil    #include <dt-bindings/regulator/active-semi,8945a-regulator.h>
130*413ec729SPaul Cercueil
131*413ec729SPaul Cercueil    i2c {
132*413ec729SPaul Cercueil      #address-cells = <1>;
133*413ec729SPaul Cercueil      #size-cells = <0>;
134*413ec729SPaul Cercueil
135*413ec729SPaul Cercueil      pmic@5b {
136*413ec729SPaul Cercueil        compatible = "active-semi,act8945a";
137*413ec729SPaul Cercueil        reg = <0x5b>;
138*413ec729SPaul Cercueil        active-semi,vsel-high;
139*413ec729SPaul Cercueil
140*413ec729SPaul Cercueil        regulators {
141*413ec729SPaul Cercueil          REG_DCDC1 {
142*413ec729SPaul Cercueil            regulator-name = "VDD_1V35";
143*413ec729SPaul Cercueil            regulator-min-microvolt = <1350000>;
144*413ec729SPaul Cercueil            regulator-max-microvolt = <1350000>;
145*413ec729SPaul Cercueil            regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
146*413ec729SPaul Cercueil                                      <ACT8945A_REGULATOR_MODE_LOWPOWER>;
147*413ec729SPaul Cercueil            regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
148*413ec729SPaul Cercueil            regulator-always-on;
149*413ec729SPaul Cercueil
150*413ec729SPaul Cercueil            regulator-state-mem {
151*413ec729SPaul Cercueil              regulator-on-in-suspend;
152*413ec729SPaul Cercueil              regulator-suspend-min-microvolt = <1400000>;
153*413ec729SPaul Cercueil              regulator-suspend-max-microvolt = <1400000>;
154*413ec729SPaul Cercueil              regulator-changeable-in-suspend;
155*413ec729SPaul Cercueil              regulator-mode = <ACT8945A_REGULATOR_MODE_LOWPOWER>;
156*413ec729SPaul Cercueil            };
157*413ec729SPaul Cercueil          };
158*413ec729SPaul Cercueil
159*413ec729SPaul Cercueil          REG_DCDC2 {
160*413ec729SPaul Cercueil            regulator-name = "VDD_1V2";
161*413ec729SPaul Cercueil            regulator-min-microvolt = <1100000>;
162*413ec729SPaul Cercueil            regulator-max-microvolt = <1300000>;
163*413ec729SPaul Cercueil            regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
164*413ec729SPaul Cercueil                                      <ACT8945A_REGULATOR_MODE_LOWPOWER>;
165*413ec729SPaul Cercueil            regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
166*413ec729SPaul Cercueil            regulator-always-on;
167*413ec729SPaul Cercueil
168*413ec729SPaul Cercueil            regulator-state-mem {
169*413ec729SPaul Cercueil              regulator-off-in-suspend;
170*413ec729SPaul Cercueil            };
171*413ec729SPaul Cercueil          };
172*413ec729SPaul Cercueil
173*413ec729SPaul Cercueil          REG_DCDC3 {
174*413ec729SPaul Cercueil            regulator-name = "VDD_3V3";
175*413ec729SPaul Cercueil            regulator-min-microvolt = <3300000>;
176*413ec729SPaul Cercueil            regulator-max-microvolt = <3300000>;
177*413ec729SPaul Cercueil            regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_FIXED>,
178*413ec729SPaul Cercueil                                      <ACT8945A_REGULATOR_MODE_LOWPOWER>;
179*413ec729SPaul Cercueil            regulator-initial-mode = <ACT8945A_REGULATOR_MODE_FIXED>;
180*413ec729SPaul Cercueil            regulator-always-on;
181*413ec729SPaul Cercueil
182*413ec729SPaul Cercueil            regulator-state-mem {
183*413ec729SPaul Cercueil              regulator-off-in-suspend;
184*413ec729SPaul Cercueil            };
185*413ec729SPaul Cercueil          };
186*413ec729SPaul Cercueil
187*413ec729SPaul Cercueil          REG_LDO1 {
188*413ec729SPaul Cercueil            regulator-name = "VDD_FUSE";
189*413ec729SPaul Cercueil            regulator-min-microvolt = <2500000>;
190*413ec729SPaul Cercueil            regulator-max-microvolt = <2500000>;
191*413ec729SPaul Cercueil            regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
192*413ec729SPaul Cercueil                                      <ACT8945A_REGULATOR_MODE_LOWPOWER>;
193*413ec729SPaul Cercueil            regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
194*413ec729SPaul Cercueil            regulator-always-on;
195*413ec729SPaul Cercueil
196*413ec729SPaul Cercueil            regulator-state-mem {
197*413ec729SPaul Cercueil              regulator-off-in-suspend;
198*413ec729SPaul Cercueil            };
199*413ec729SPaul Cercueil          };
200*413ec729SPaul Cercueil
201*413ec729SPaul Cercueil          REG_LDO2 {
202*413ec729SPaul Cercueil            regulator-name = "VDD_3V3_LP";
203*413ec729SPaul Cercueil            regulator-min-microvolt = <3300000>;
204*413ec729SPaul Cercueil            regulator-max-microvolt = <3300000>;
205*413ec729SPaul Cercueil            regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
206*413ec729SPaul Cercueil                                      <ACT8945A_REGULATOR_MODE_LOWPOWER>;
207*413ec729SPaul Cercueil            regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
208*413ec729SPaul Cercueil            regulator-always-on;
209*413ec729SPaul Cercueil
210*413ec729SPaul Cercueil            regulator-state-mem {
211*413ec729SPaul Cercueil              regulator-off-in-suspend;
212*413ec729SPaul Cercueil            };
213*413ec729SPaul Cercueil          };
214*413ec729SPaul Cercueil
215*413ec729SPaul Cercueil          REG_LDO3 {
216*413ec729SPaul Cercueil            regulator-name = "VDD_LED";
217*413ec729SPaul Cercueil            regulator-min-microvolt = <3300000>;
218*413ec729SPaul Cercueil            regulator-max-microvolt = <3300000>;
219*413ec729SPaul Cercueil            regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
220*413ec729SPaul Cercueil                                      <ACT8945A_REGULATOR_MODE_LOWPOWER>;
221*413ec729SPaul Cercueil            regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
222*413ec729SPaul Cercueil            regulator-always-on;
223*413ec729SPaul Cercueil
224*413ec729SPaul Cercueil            regulator-state-mem {
225*413ec729SPaul Cercueil              regulator-off-in-suspend;
226*413ec729SPaul Cercueil            };
227*413ec729SPaul Cercueil          };
228*413ec729SPaul Cercueil
229*413ec729SPaul Cercueil          REG_LDO4 {
230*413ec729SPaul Cercueil            regulator-name = "VDD_SDHC_1V8";
231*413ec729SPaul Cercueil            regulator-min-microvolt = <1800000>;
232*413ec729SPaul Cercueil            regulator-max-microvolt = <1800000>;
233*413ec729SPaul Cercueil            regulator-allowed-modes = <ACT8945A_REGULATOR_MODE_NORMAL>,
234*413ec729SPaul Cercueil                                      <ACT8945A_REGULATOR_MODE_LOWPOWER>;
235*413ec729SPaul Cercueil            regulator-initial-mode = <ACT8945A_REGULATOR_MODE_NORMAL>;
236*413ec729SPaul Cercueil            regulator-always-on;
237*413ec729SPaul Cercueil
238*413ec729SPaul Cercueil            regulator-state-mem {
239*413ec729SPaul Cercueil              regulator-off-in-suspend;
240*413ec729SPaul Cercueil            };
241*413ec729SPaul Cercueil          };
242*413ec729SPaul Cercueil        };
243*413ec729SPaul Cercueil
244*413ec729SPaul Cercueil        charger {
245*413ec729SPaul Cercueil          compatible = "active-semi,act8945a-charger";
246*413ec729SPaul Cercueil          pinctrl-names = "default";
247*413ec729SPaul Cercueil          pinctrl-0 = <&pinctrl_charger_chglev &pinctrl_charger_lbo &pinctrl_charger_irq>;
248*413ec729SPaul Cercueil          interrupt-parent = <&pioA>;
249*413ec729SPaul Cercueil          interrupts = <45 IRQ_TYPE_EDGE_RISING>;
250*413ec729SPaul Cercueil
251*413ec729SPaul Cercueil          active-semi,chglev-gpios = <&pioA 12 GPIO_ACTIVE_HIGH>;
252*413ec729SPaul Cercueil          active-semi,lbo-gpios = <&pioA 72 GPIO_ACTIVE_LOW>;
253*413ec729SPaul Cercueil          active-semi,input-voltage-threshold-microvolt = <6600>;
254*413ec729SPaul Cercueil          active-semi,precondition-timeout = <40>;
255*413ec729SPaul Cercueil          active-semi,total-timeout = <3>;
256*413ec729SPaul Cercueil        };
257*413ec729SPaul Cercueil      };
258*413ec729SPaul Cercueil    };
259