blob: 1bee317b52c6fcc2f6e413aedbb46ba108e1b8eb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
|
/*
* SM5414_charger.h
* SiliconMitus SM5414 Charger Header
*
* Copyright (C) 2013 SiliconMitus
*
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
* may be copied, distributed, and modified under those terms.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#ifndef __SM5414_CHARGER_H
#define __SM5414_CHARGER_H __FILE__
/* Slave address should be shifted to the right 1bit.
* R/W bit should NOT be included.
*/
#define SEC_CHARGER_I2C_SLAVEADDR (0x92>>1)
#define CALL_EVENT_SIOP 50
#define HIGH_TEMP_SIOP 30
#define CALL_EVENT_CURRENT 450
#define HIGH_TEMP_CURRENT 350
/* SM5414 Registers. */
#define SM5414_INT1 0x00
#define SM5414_INT2 0x01
#define SM5414_INT3 0x02
#define SM5414_INTMASK1 0x03
#define SM5414_INTMASK2 0x04
#define SM5414_INTMASK3 0x05
#define SM5414_STATUS 0x06
#define SM5414_CTRL 0x07
#define SM5414_VBUSCTRL 0x08
#define SM5414_CHGCTRL1 0x09
#define SM5414_CHGCTRL2 0x0A
#define SM5414_CHGCTRL3 0x0B
#define SM5414_CHGCTRL4 0x0C
#define SM5414_CHGCTRL5 0x0D
#define SM5414_INT1_THEMREG 0x01
#define SM5414_INT1_THEMSHDN 0x02
#define SM5414_INT1_BATOVP 0x04
#define SM5414_INT1_VBUSLIMIT 0x08
#define SM5414_INT1_AICL 0x10
#define SM5414_INT1_VBUSINOK 0x20
#define SM5414_INT1_VBUSUVLO 0x40
#define SM5414_INT1_VBUSOVP 0x80
#define SM5414_INT2_TOPOFF 0x01
#define SM5414_INT2_DONE 0x02
#define SM5414_INT2_CHGRSTF 0x04
#define SM5414_INT2_PRETMROFF 0x08
#define SM5414_INT2_OTGFAIL 0x10
#define SM5414_INT2_WEAKBAT 0x20
#define SM5414_INT2_NOBAT 0x40
#define SM5414_INT2_FASTTMROFF 0x80
#define SM5414_INT3_DISLIMIT 0x01
#define SM5414_INT3_VSYSOLP 0x02
#define SM5414_INT3_VSYSNG 0x04
#define SM5414_INT3_VSYSOK 0x08
#define SM5414_CHGCTRL1_AUTOSTOP (1 << 3)
/* FAST Charge current */
#define FASTCHG_100mA 0
#define FASTCHG_150mA 1
#define FASTCHG_200mA 2
#define FASTCHG_250mA 3
#define FASTCHG_300mA 4
#define FASTCHG_350mA 5
#define FASTCHG_400mA 6
#define FASTCHG_450mA 7
#define FASTCHG_500mA 8
#define FASTCHG_550mA 9
#define FASTCHG_600mA 10
#define FASTCHG_650mA 11
#define FASTCHG_700mA 12
#define FASTCHG_750mA 13
#define FASTCHG_800mA 14
#define FASTCHG_850mA 15
#define FASTCHG_900mA 16
#define FASTCHG_950mA 17
#define FASTCHG_1000mA 18
#define FASTCHG_1050mA 19
#define FASTCHG_1100mA 20
#define FASTCHG_1150mA 21
#define FASTCHG_1200mA 22
#define FASTCHG_1250mA 23
#define FASTCHG_1300mA 24
#define FASTCHG_1350mA 25
#define FASTCHG_1400mA 26
#define FASTCHG_1450mA 27
#define FASTCHG_1500mA 28
#define FASTCHG_1550mA 29
#define FASTCHG_1600mA 30
#define FASTCHG_1650mA 31
#define FASTCHG_1700mA 32
#define FASTCHG_1750mA 33
#define FASTCHG_1800mA 34
#define FASTCHG_1850mA 35
#define FASTCHG_1900mA 36
#define FASTCHG_1950mA 37
#define FASTCHG_2000mA 38
#define FASTCHG_2050mA 39
#define FASTCHG_2100mA 40
#define FASTCHG_2150mA 41
#define FASTCHG_2200mA 42
#define FASTCHG_2250mA 43
#define FASTCHG_2300mA 44
#define FASTCHG_2350mA 45
#define FASTCHG_2400mA 46
#define FASTCHG_2450mA 47
#define FASTCHG_2500mA 48
/* Input current Limit */
#define VBUSLIMIT_100mA 0
#define VBUSLIMIT_150mA 1
#define VBUSLIMIT_200mA 2
#define VBUSLIMIT_250mA 3
#define VBUSLIMIT_300mA 4
#define VBUSLIMIT_350mA 5
#define VBUSLIMIT_400mA 6
#define VBUSLIMIT_450mA 7
#define VBUSLIMIT_500mA 8
#define VBUSLIMIT_550mA 9
#define VBUSLIMIT_600mA 10
#define VBUSLIMIT_650mA 11
#define VBUSLIMIT_700mA 12
#define VBUSLIMIT_750mA 13
#define VBUSLIMIT_800mA 14
#define VBUSLIMIT_850mA 15
#define VBUSLIMIT_900mA 16
#define VBUSLIMIT_950mA 17
#define VBUSLIMIT_1000mA 18
#define VBUSLIMIT_1050mA 19
#define VBUSLIMIT_1100mA 20
#define VBUSLIMIT_1150mA 21
#define VBUSLIMIT_1200mA 22
#define VBUSLIMIT_1250mA 23
#define VBUSLIMIT_1300mA 24
#define VBUSLIMIT_1350mA 25
#define VBUSLIMIT_1400mA 26
#define VBUSLIMIT_1450mA 27
#define VBUSLIMIT_1500mA 28
#define VBUSLIMIT_1550mA 29
#define VBUSLIMIT_1600mA 30
#define VBUSLIMIT_1650mA 31
#define VBUSLIMIT_1700mA 32
#define VBUSLIMIT_1750mA 33
#define VBUSLIMIT_1800mA 34
#define VBUSLIMIT_1850mA 35
#define VBUSLIMIT_1900mA 36
#define VBUSLIMIT_1950mA 37
#define VBUSLIMIT_2000mA 38
#define VBUSLIMIT_2050mA 39
#define VBUSLIMIT_2100mA 40
#define VBUSLIMIT_2150mA 41
#define VBUSLIMIT_2200mA 42
#define VBUSLIMIT_2250mA 43
#define VBUSLIMIT_2300mA 44
#define VBUSLIMIT_2350mA 45
#define VBUSLIMIT_2400mA 46
#define VBUSLIMIT_2450mA 47
#define VBUSLIMIT_2500mA 48
/* AICL TH */
#define AICL_THRESHOLD_4_3_V 0
#define AICL_THRESHOLD_4_4_V 1
#define AICL_THRESHOLD_4_5_V 2
#define AICL_THRESHOLD_4_6_V 3
#define AICL_THRESHOLD_4_7_V 4
#define AICL_THRESHOLD_4_8_V 5
#define AICL_THRESHOLD_4_9_V 6
#define AICL_THRESHOLD_MASK 0x0F
/* AUTOSTOP */
#define AUTOSTOP_EN (1<<3)
/* AICLEN */
#define AICL_EN (1<<2)
/* PRECHG */
#define PRECHG_150mA 0
#define PRECHG_250mA 1
#define PRECHG_350mA 2
#define PRECHG_450mA 3
#define PRECHG_MASK 0xFC
/* Battery Regulation Voltage */
#define BATREG_4_1_0_0_V 0
#define BATREG_4_1_2_5_V 1
#define BATREG_4_1_5_0_V 2
#define BATREG_4_1_7_5_V 3
#define BATREG_4_2_0_0_V 4
#define BATREG_4_2_2_5_V 5
#define BATREG_4_2_5_0_V 6
#define BATREG_4_2_7_5_V 7
#define BATREG_4_3_0_0_V 8
#define BATREG_4_3_2_5_V 9
#define BATREG_4_3_5_0_V 10
#define BATREG_4_3_7_5_V 11
#define BATREG_4_4_0_0_V 12
#define BATREG_4_4_2_5_V 13
#define BATREG_4_4_5_0_V 14
#define BATREG_4_4_7_5_V 15
#define BATREG_MASK 0x0F
/* Weak Battery Voltage */
#define WEAKBAT_3_0_0_V 0
#define WEAKBAT_3_0_5_V 1
#define WEAKBAT_3_1_0_V 2
#define WEAKBAT_3_1_5_V 3
#define WEAKBAT_3_2_0_V 4
#define WEAKBAT_3_2_5_V 5
#define WEAKBAT_3_3_0_V 6
#define WEAKBAT_3_3_5_V 7
#define WEAKBAT_3_4_0_V 8
#define WEAKBAT_3_4_5_V 9
#define WEAKBAT_3_5_0_V 10
#define WEAKBAT_3_5_5_V 11
#define WEAKBAT_3_6_0_V 12
#define WEAKBAT_3_6_5_V 13
#define WEAKBAT_3_7_0_V 14
#define WEAKBAT_3_7_5_V 15
#define WEAKBAT_MASK 0xF0
/* top-off charge current */
#define TOPOFF_100mA 0
#define TOPOFF_150mA 1
#define TOPOFF_200mA 2
#define TOPOFF_250mA 3
#define TOPOFF_300mA 4
#define TOPOFF_350mA 5
#define TOPOFF_400mA 6
#define TOPOFF_450mA 7
#define TOPOFF_500mA 8
#define TOPOFF_550mA 9
#define TOPOFF_600mA 10
#define TOPOFF_650mA 11
#define TOPOFF_MASK 0x07
/* discharge current */
#define DISCHARGELIMIT_DISABLED 0
#define DISCHARGELIMIT_2_0_A 1
#define DISCHARGELIMIT_2_5_A 2
#define DISCHARGELIMIT_3_0_A 3
#define DISCHARGELIMIT_3_5_A 4
#define DISCHARGELIMIT_4_0_A 5
#define DISCHARGELIMIT_4_5_A 6
#define DISCHARGELIMIT_5_0_A 7
#define DISCHARGELIMIT_MASK 0xF8
/* OTG voltage */
#define VOTG_5_0_V 0
#define VOTG_5_1_V 1
#define VOTG_5_2_V 2
#define VOTG_MASK 0x0F
/* Fast timer */
#define FASTTIMER_3_5_HOUR 0
#define FASTTIMER_4_5_HOUR 1
#define FASTTIMER_5_5_HOUR 2
#define FASTTIMER_DISABLED 3
#define FASTTIMER_MASK 0xF3
/* Topoff timer */
#define TOPOFFTIMER_10MIN 0
#define TOPOFFTIMER_20MIN 1
#define TOPOFFTIMER_30MIN 2
#define TOPOFFTIMER_45MIN 3
#define TOPOFFTIMER_MASK 0xFC
/* Enable charger */
#define CHARGE_EN 0x02
void SM5414_i2c_int_read(struct i2c_client *client);
#define BATREG_MASK 0x0F
struct sec_chg_info {
bool dummy;
u8 int_1_s;
u8 int_2_s;
u8 int_3_s;
u8 int_1_h;
u8 int_2_h;
u8 int_3_h;
};
#endif /* __SM5414_CHARGER_H */
|