1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/power/supply/summit,smb347-charger.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Battery charger driver for SMB345, SMB347 and SMB358
8
9maintainers:
10  - David Heidelberg <david@ixit.cz>
11  - Dmitry Osipenko <digetx@gmail.com>
12
13properties:
14  compatible:
15    enum:
16      - summit,smb345
17      - summit,smb347
18      - summit,smb358
19
20  reg:
21    maxItems: 1
22
23  interrupts:
24    maxItems: 1
25
26  monitored-battery:
27    description: phandle to the battery node
28    $ref: /schemas/types.yaml#/definitions/phandle
29
30  summit,enable-usb-charging:
31    type: boolean
32    description: Enable charging through USB.
33
34  summit,enable-otg-charging:
35    type: boolean
36    description: Provide power for USB OTG
37
38  summit,enable-mains-charging:
39    type: boolean
40    description: Enable charging through mains
41
42  summit,enable-charge-control:
43    description: Enable charging control
44    $ref: /schemas/types.yaml#/definitions/uint32
45    enum:
46      - 0 # SMB3XX_CHG_ENABLE_SW SW (I2C interface)
47      - 1 # SMB3XX_CHG_ENABLE_PIN_ACTIVE_LOW Pin control (Active Low)
48      - 2 # SMB3XX_CHG_ENABLE_PIN_ACTIVE_HIGH Pin control (Active High)
49
50  summit,fast-voltage-threshold-microvolt:
51    description: Voltage threshold to transit to fast charge mode (in uV)
52    minimum: 2400000
53    maximum: 3000000
54
55  summit,mains-current-limit-microamp:
56    description: Maximum input current from AC/DC input (in uA)
57
58  summit,usb-current-limit-microamp:
59    description: Maximum input current from USB input (in uA)
60
61  summit,charge-current-compensation-microamp:
62    description: Charge current compensation (in uA)
63
64  summit,chip-temperature-threshold-celsius:
65    description: Chip temperature for thermal regulation in °C.
66    enum: [100, 110, 120, 130]
67
68  summit,soft-compensation-method:
69    description: Soft temperature limit compensation method
70    $ref: /schemas/types.yaml#/definitions/uint32
71    enum:
72      - 0 # SMB3XX_SOFT_TEMP_COMPENSATE_NONE Compensation none
73      - 1 # SMB3XX_SOFT_TEMP_COMPENSATE_CURRENT Current compensation
74      - 2 # SMB3XX_SOFT_TEMP_COMPENSATE_VOLTAGE Voltage compensation
75
76  summit,inok-polarity:
77    description: |
78      Polarity of INOK signal indicating presence of external power supply.
79    $ref: /schemas/types.yaml#/definitions/uint32
80    enum:
81      - 0 # SMB3XX_SYSOK_INOK_ACTIVE_LOW
82      - 1 # SMB3XX_SYSOK_INOK_ACTIVE_HIGH
83
84  usb-vbus:
85    $ref: /schemas/regulator/regulator.yaml#
86    type: object
87
88    properties:
89      summit,needs-inok-toggle:
90        type: boolean
91        description: INOK signal is fixed and polarity needs to be toggled
92                     in order to enable/disable output mode.
93
94    unevaluatedProperties: false
95
96allOf:
97  - if:
98      properties:
99        compatible:
100          enum:
101            - summit,smb345
102            - summit,smb358
103
104    then:
105      properties:
106        summit,mains-current-limit-microamp:
107          enum: [ 300000, 500000, 700000, 1000000,
108                  1500000, 1800000, 2000000]
109
110        summit,usb-current-limit-microamp:
111          enum: [ 300000, 500000, 700000, 1000000,
112                  1500000, 1800000, 2000000]
113
114        summit,charge-current-compensation-microamp:
115          enum: [200000, 450000, 600000, 900000]
116
117    else:
118      properties:
119        summit,mains-current-limit-microamp:
120          enum: [ 300000, 500000, 700000, 900000, 1200000,
121                  1500000, 1800000, 2000000, 2200000, 2500000]
122
123        summit,usb-current-limit-microamp:
124          enum: [ 300000, 500000, 700000, 900000, 1200000,
125                  1500000, 1800000, 2000000, 2200000, 2500000]
126
127        summit,charge-current-compensation-microamp:
128          enum: [250000, 700000, 900000, 1200000]
129
130required:
131  - compatible
132  - reg
133
134anyOf:
135  - required:
136      - summit,enable-usb-charging
137  - required:
138      - summit,enable-otg-charging
139  - required:
140      - summit,enable-mains-charging
141
142additionalProperties: false
143
144examples:
145  - |
146    #include <dt-bindings/power/summit,smb347-charger.h>
147
148    i2c {
149        #address-cells = <1>;
150        #size-cells = <0>;
151
152        charger@7f {
153            compatible = "summit,smb347";
154            reg = <0x7f>;
155
156            summit,enable-charge-control = <SMB3XX_CHG_ENABLE_PIN_ACTIVE_HIGH>;
157            summit,inok-polarity = <SMB3XX_SYSOK_INOK_ACTIVE_LOW>;
158            summit,chip-temperature-threshold-celsius = <110>;
159            summit,mains-current-limit-microamp = <2000000>;
160            summit,usb-current-limit-microamp = <500000>;
161            summit,enable-usb-charging;
162            summit,enable-mains-charging;
163
164            monitored-battery = <&battery>;
165
166            usb-vbus {
167                regulator-name = "usb_vbus";
168                regulator-min-microvolt = <5000000>;
169                regulator-max-microvolt = <5000000>;
170                regulator-min-microamp = <750000>;
171                regulator-max-microamp = <750000>;
172                summit,needs-inok-toggle;
173            };
174        };
175    };
176
177    battery: battery-cell {
178        compatible = "simple-battery";
179        constant-charge-current-max-microamp = <1800000>;
180        operating-range-celsius = <0 45>;
181        alert-celsius = <3 42>;
182    };
183