1*b54185c1SJakob Hauser# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*b54185c1SJakob Hauser%YAML 1.2
3*b54185c1SJakob Hauser---
4*b54185c1SJakob Hauser$id: http://devicetree.org/schemas/mfd/richtek,rt5033.yaml#
5*b54185c1SJakob Hauser$schema: http://devicetree.org/meta-schemas/core.yaml#
6*b54185c1SJakob Hauser
7*b54185c1SJakob Hausertitle: Richtek RT5033 Power Management Integrated Circuit
8*b54185c1SJakob Hauser
9*b54185c1SJakob Hausermaintainers:
10*b54185c1SJakob Hauser  - Jakob Hauser <jahau@rocketmail.com>
11*b54185c1SJakob Hauser
12*b54185c1SJakob Hauserdescription:
13*b54185c1SJakob Hauser  RT5033 is a multifunction device which includes battery charger, fuel gauge,
14*b54185c1SJakob Hauser  flash LED current source, LDO and synchronous Buck converter for portable
15*b54185c1SJakob Hauser  applications. It is interfaced to host controller using I2C interface. The
16*b54185c1SJakob Hauser  battery fuel gauge uses a separate I2C bus.
17*b54185c1SJakob Hauser
18*b54185c1SJakob Hauserproperties:
19*b54185c1SJakob Hauser  compatible:
20*b54185c1SJakob Hauser    const: richtek,rt5033
21*b54185c1SJakob Hauser
22*b54185c1SJakob Hauser  reg:
23*b54185c1SJakob Hauser    maxItems: 1
24*b54185c1SJakob Hauser
25*b54185c1SJakob Hauser  interrupts:
26*b54185c1SJakob Hauser    maxItems: 1
27*b54185c1SJakob Hauser
28*b54185c1SJakob Hauser  regulators:
29*b54185c1SJakob Hauser    description:
30*b54185c1SJakob Hauser      The regulators of RT5033 have to be instantiated under a sub-node named
31*b54185c1SJakob Hauser      "regulators". For SAFE_LDO voltage there is only one value of 4.9 V. LDO
32*b54185c1SJakob Hauser      voltage ranges from 1.2 V to 3.0 V in 0.1 V steps. BUCK voltage ranges
33*b54185c1SJakob Hauser      from 1.0 V to 3.0 V in 0.1 V steps.
34*b54185c1SJakob Hauser    type: object
35*b54185c1SJakob Hauser    patternProperties:
36*b54185c1SJakob Hauser      "^(SAFE_LDO|LDO|BUCK)$":
37*b54185c1SJakob Hauser        type: object
38*b54185c1SJakob Hauser        $ref: /schemas/regulator/regulator.yaml#
39*b54185c1SJakob Hauser        unevaluatedProperties: false
40*b54185c1SJakob Hauser    additionalProperties: false
41*b54185c1SJakob Hauser
42*b54185c1SJakob Hauser  charger:
43*b54185c1SJakob Hauser    type: object
44*b54185c1SJakob Hauser    $ref: /schemas/power/supply/richtek,rt5033-charger.yaml#
45*b54185c1SJakob Hauser
46*b54185c1SJakob Hauserrequired:
47*b54185c1SJakob Hauser  - compatible
48*b54185c1SJakob Hauser  - reg
49*b54185c1SJakob Hauser  - interrupts
50*b54185c1SJakob Hauser
51*b54185c1SJakob HauseradditionalProperties: false
52*b54185c1SJakob Hauser
53*b54185c1SJakob Hauserexamples:
54*b54185c1SJakob Hauser  - |
55*b54185c1SJakob Hauser    #include <dt-bindings/interrupt-controller/irq.h>
56*b54185c1SJakob Hauser
57*b54185c1SJakob Hauser    battery: battery {
58*b54185c1SJakob Hauser        compatible = "simple-battery";
59*b54185c1SJakob Hauser        precharge-current-microamp = <450000>;
60*b54185c1SJakob Hauser        constant-charge-current-max-microamp = <1000000>;
61*b54185c1SJakob Hauser        charge-term-current-microamp = <150000>;
62*b54185c1SJakob Hauser        precharge-upper-limit-microvolt = <3500000>;
63*b54185c1SJakob Hauser        constant-charge-voltage-max-microvolt = <4350000>;
64*b54185c1SJakob Hauser    };
65*b54185c1SJakob Hauser
66*b54185c1SJakob Hauser    extcon {
67*b54185c1SJakob Hauser        usb_con: connector {
68*b54185c1SJakob Hauser            compatible = "usb-b-connector";
69*b54185c1SJakob Hauser            label = "micro-USB";
70*b54185c1SJakob Hauser            type = "micro";
71*b54185c1SJakob Hauser        };
72*b54185c1SJakob Hauser    };
73*b54185c1SJakob Hauser
74*b54185c1SJakob Hauser    i2c {
75*b54185c1SJakob Hauser        #address-cells = <1>;
76*b54185c1SJakob Hauser        #size-cells = <0>;
77*b54185c1SJakob Hauser
78*b54185c1SJakob Hauser        i2c@0 {
79*b54185c1SJakob Hauser            #address-cells = <1>;
80*b54185c1SJakob Hauser            #size-cells = <0>;
81*b54185c1SJakob Hauser            reg = <0>;
82*b54185c1SJakob Hauser
83*b54185c1SJakob Hauser            fuel-gauge@35 {
84*b54185c1SJakob Hauser                compatible = "richtek,rt5033-battery";
85*b54185c1SJakob Hauser                reg = <0x35>;
86*b54185c1SJakob Hauser
87*b54185c1SJakob Hauser                interrupt-parent = <&msmgpio>;
88*b54185c1SJakob Hauser                interrupts = <121 IRQ_TYPE_EDGE_FALLING>;
89*b54185c1SJakob Hauser
90*b54185c1SJakob Hauser                pinctrl-names = "default";
91*b54185c1SJakob Hauser                pinctrl-0 = <&fg_alert_default>;
92*b54185c1SJakob Hauser
93*b54185c1SJakob Hauser                power-supplies = <&rt5033_charger>;
94*b54185c1SJakob Hauser            };
95*b54185c1SJakob Hauser        };
96*b54185c1SJakob Hauser
97*b54185c1SJakob Hauser        i2c@1 {
98*b54185c1SJakob Hauser            #address-cells = <1>;
99*b54185c1SJakob Hauser            #size-cells = <0>;
100*b54185c1SJakob Hauser            reg = <1>;
101*b54185c1SJakob Hauser
102*b54185c1SJakob Hauser            pmic@34 {
103*b54185c1SJakob Hauser                compatible = "richtek,rt5033";
104*b54185c1SJakob Hauser                reg = <0x34>;
105*b54185c1SJakob Hauser
106*b54185c1SJakob Hauser                interrupt-parent = <&msmgpio>;
107*b54185c1SJakob Hauser                interrupts = <62 IRQ_TYPE_EDGE_FALLING>;
108*b54185c1SJakob Hauser
109*b54185c1SJakob Hauser                pinctrl-names = "default";
110*b54185c1SJakob Hauser                pinctrl-0 = <&pmic_int_default>;
111*b54185c1SJakob Hauser
112*b54185c1SJakob Hauser                regulators {
113*b54185c1SJakob Hauser                    safe_ldo_reg: SAFE_LDO {
114*b54185c1SJakob Hauser                        regulator-name = "SAFE_LDO";
115*b54185c1SJakob Hauser                        regulator-min-microvolt = <4900000>;
116*b54185c1SJakob Hauser                        regulator-max-microvolt = <4900000>;
117*b54185c1SJakob Hauser                        regulator-always-on;
118*b54185c1SJakob Hauser                    };
119*b54185c1SJakob Hauser                    ldo_reg: LDO {
120*b54185c1SJakob Hauser                        regulator-name = "LDO";
121*b54185c1SJakob Hauser                        regulator-min-microvolt = <2800000>;
122*b54185c1SJakob Hauser                        regulator-max-microvolt = <2800000>;
123*b54185c1SJakob Hauser                    };
124*b54185c1SJakob Hauser                    buck_reg: BUCK {
125*b54185c1SJakob Hauser                        regulator-name = "BUCK";
126*b54185c1SJakob Hauser                        regulator-min-microvolt = <1200000>;
127*b54185c1SJakob Hauser                        regulator-max-microvolt = <1200000>;
128*b54185c1SJakob Hauser                    };
129*b54185c1SJakob Hauser                };
130*b54185c1SJakob Hauser
131*b54185c1SJakob Hauser                rt5033_charger: charger {
132*b54185c1SJakob Hauser                    compatible = "richtek,rt5033-charger";
133*b54185c1SJakob Hauser                    monitored-battery = <&battery>;
134*b54185c1SJakob Hauser                    richtek,usb-connector = <&usb_con>;
135*b54185c1SJakob Hauser                };
136*b54185c1SJakob Hauser            };
137*b54185c1SJakob Hauser        };
138*b54185c1SJakob Hauser    };
139