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
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Register definitions for TI BQ257XX
 * Copyright (C) 2020 Texas Instruments Incorporated - http://www.ti.com/
 */

#define BQ25703_CHARGE_OPTION_0			0x00
#define BQ25703_CHARGE_CURRENT			0x02
#define BQ25703_MAX_CHARGE_VOLT			0x04
#define BQ25703_OTG_VOLT			0x06
#define BQ25703_OTG_CURRENT			0x08
#define BQ25703_INPUT_VOLTAGE			0x0a
#define BQ25703_MIN_VSYS			0x0c
#define BQ25703_IIN_HOST			0x0e
#define BQ25703_CHARGER_STATUS			0x20
#define BQ25703_PROCHOT_STATUS			0x22
#define BQ25703_IIN_DPM				0x24
#define BQ25703_ADCIBAT_CHG			0x28
#define BQ25703_ADCIINCMPIN			0x2a
#define BQ25703_ADCVSYSVBAT			0x2c
#define BQ25703_MANUFACT_DEV_ID			0x2e
#define BQ25703_CHARGE_OPTION_1			0x30
#define BQ25703_CHARGE_OPTION_2			0x32
#define BQ25703_CHARGE_OPTION_3			0x34
#define BQ25703_ADC_OPTION			0x3a

#define BQ25703_EN_LWPWR			BIT(15)
#define BQ25703_WDTMR_ADJ_MASK			GENMASK(14, 13)
#define BQ25703_WDTMR_DISABLE			0
#define BQ25703_WDTMR_5_SEC			1
#define BQ25703_WDTMR_88_SEC			2
#define BQ25703_WDTMR_175_SEC			3

#define BQ25703_ICHG_MASK			GENMASK(12, 6)
#define BQ25703_ICHG_STEP_UA			64000
#define BQ25703_ICHG_MIN_UA			64000
#define BQ25703_ICHG_MAX_UA			8128000

#define BQ25703_MAX_CHARGE_VOLT_MASK		GENMASK(15, 4)
#define BQ25703_VBATREG_STEP_UV			16000
#define BQ25703_VBATREG_MIN_UV			1024000
#define BQ25703_VBATREG_MAX_UV			19200000

#define BQ25703_OTG_VOLT_MASK			GENMASK(13, 6)
#define BQ25703_OTG_VOLT_STEP_UV		64000
#define BQ25703_OTG_VOLT_MIN_UV			4480000
#define BQ25703_OTG_VOLT_MAX_UV			20800000
#define BQ25703_OTG_VOLT_NUM_VOLT		256

#define BQ25703_OTG_CUR_MASK			GENMASK(14, 8)
#define BQ25703_OTG_CUR_STEP_UA			50000
#define BQ25703_OTG_CUR_MAX_UA			6350000

#define BQ25703_MINVSYS_MASK			GENMASK(13, 8)
#define BQ25703_MINVSYS_STEP_UV			256000
#define BQ25703_MINVSYS_MIN_UV			1024000
#define BQ25703_MINVSYS_MAX_UV			16128000

#define BQ25703_STS_AC_STAT			BIT(15)
#define BQ25703_STS_IN_FCHRG			BIT(10)
#define BQ25703_STS_IN_PCHRG			BIT(9)
#define BQ25703_STS_FAULT_ACOV			BIT(7)
#define BQ25703_STS_FAULT_BATOC			BIT(6)
#define BQ25703_STS_FAULT_ACOC			BIT(5)

#define BQ25703_IINDPM_MASK			GENMASK(14, 8)
#define BQ25703_IINDPM_STEP_UA			50000
#define BQ25703_IINDPM_MIN_UA			50000
#define BQ25703_IINDPM_MAX_UA			6400000
#define BQ25703_IINDPM_DEFAULT_UA		3300000
#define BQ25703_IINDPM_OFFSET_UA		50000

#define BQ25703_ADCIBAT_DISCHG_MASK		GENMASK(6, 0)
#define BQ25703_ADCIBAT_CHG_MASK		GENMASK(14, 8)
#define BQ25703_ADCIBAT_CHG_STEP_UA		64000
#define BQ25703_ADCIBAT_DIS_STEP_UA		256000

#define BQ25703_ADCIIN				GENMASK(15, 8)
#define BQ25703_ADCIINCMPIN_STEP		50000

#define BQ25703_ADCVSYS_MASK			GENMASK(15, 8)
#define BQ25703_ADCVBAT_MASK			GENMASK(7, 0)
#define BQ25703_ADCVSYSVBAT_OFFSET_UV		2880000
#define BQ25703_ADCVSYSVBAT_STEP		64000

#define BQ25703_ADC_CH_MASK			GENMASK(7, 0)
#define BQ25703_ADC_CONV_EN			BIT(15)
#define BQ25703_ADC_START			BIT(14)
#define BQ25703_ADC_FULL_SCALE			BIT(13)
#define BQ25703_ADC_CMPIN_EN			BIT(7)
#define BQ25703_ADC_VBUS_EN			BIT(6)
#define BQ25703_ADC_PSYS_EN			BIT(5)
#define BQ25703_ADC_IIN_EN			BIT(4)
#define BQ25703_ADC_IDCHG_EN			BIT(3)
#define BQ25703_ADC_ICHG_EN			BIT(2)
#define BQ25703_ADC_VSYS_EN			BIT(1)
#define BQ25703_ADC_VBAT_EN			BIT(0)

#define BQ25703_EN_OTG_MASK			BIT(12)

#define BQ25792_REG00_MIN_SYS_VOLTAGE		0x00
#define BQ25792_REG01_CHARGE_VOLTAGE_LIMIT	0x01
#define BQ25792_REG03_CHARGE_CURRENT_LIMIT	0x03
#define BQ25792_REG05_INPUT_VOLTAGE_LIMIT	0x05
#define BQ25792_REG06_INPUT_CURRENT_LIMIT	0x06
#define BQ25792_REG08_PRECHARGE_CONTROL		0x08
#define BQ25792_REG09_TERMINATION_CONTROL	0x09
#define BQ25792_REG0A_RECHARGE_CONTROL		0x0a
#define BQ25792_REG0B_VOTG_REGULATION		0x0b
#define BQ25792_REG0D_IOTG_REGULATION		0x0d
#define BQ25792_REG0E_TIMER_CONTROL		0x0e
#define BQ25792_REG0F_CHARGER_CONTROL_0		0x0f
#define BQ25792_REG10_CHARGER_CONTROL_1		0x10
#define BQ25792_REG11_CHARGER_CONTROL_2		0x11
#define BQ25792_REG12_CHARGER_CONTROL_3		0x12
#define BQ25792_REG13_CHARGER_CONTROL_4		0x13
#define BQ25792_REG14_CHARGER_CONTROL_5		0x14
/* REG15 reserved */
#define BQ25792_REG16_TEMPERATURE_CONTROL	0x16
#define BQ25792_REG17_NTC_CONTROL_0		0x17
#define BQ25792_REG18_NTC_CONTROL_1		0x18
#define BQ25792_REG19_ICO_CURRENT_LIMIT		0x19
#define BQ25792_REG1B_CHARGER_STATUS_0		0x1b
#define BQ25792_REG1C_CHARGER_STATUS_1		0x1c
#define BQ25792_REG1D_CHARGER_STATUS_2		0x1d
#define BQ25792_REG1E_CHARGER_STATUS_3		0x1e
#define BQ25792_REG1F_CHARGER_STATUS_4		0x1f
#define BQ25792_REG20_FAULT_STATUS_0		0x20
#define BQ25792_REG21_FAULT_STATUS_1		0x21
#define BQ25792_REG22_CHARGER_FLAG_0		0x22
#define BQ25792_REG23_CHARGER_FLAG_1		0x23
#define BQ25792_REG24_CHARGER_FLAG_2		0x24
#define BQ25792_REG25_CHARGER_FLAG_3		0x25
#define BQ25792_REG26_FAULT_FLAG_0		0x26
#define BQ25792_REG27_FAULT_FLAG_1		0x27
#define BQ25792_REG28_CHARGER_MASK_0		0x28
#define BQ25792_REG29_CHARGER_MASK_1		0x29
#define BQ25792_REG2A_CHARGER_MASK_2		0x2a
#define BQ25792_REG2B_CHARGER_MASK_3		0x2b
#define BQ25792_REG2C_FAULT_MASK_0		0x2c
#define BQ25792_REG2D_FAULT_MASK_1		0x2d
#define BQ25792_REG2E_ADC_CONTROL		0x2e
#define BQ25792_REG2F_ADC_FUNCTION_DISABLE_0	0x2f
#define BQ25792_REG30_ADC_FUNCTION_DISABLE_1	0x30
#define BQ25792_REG31_IBUS_ADC			0x31
#define BQ25792_REG33_IBAT_ADC			0x33
#define BQ25792_REG35_VBUS_ADC			0x35
#define BQ25792_REG37_VAC1_ADC			0x37
#define BQ25792_REG39_VAC2_ADC			0x39
#define BQ25792_REG3B_VBAT_ADC			0x3b
#define BQ25792_REG3D_VSYS_ADC			0x3d
#define BQ25792_REG3F_TS_ADC			0x3f
#define BQ25792_REG41_TDIE_ADC			0x41
#define BQ25792_REG43_DP_ADC			0x43
#define BQ25792_REG45_DM_ADC			0x45
#define BQ25792_REG47_DPDM_DRIVER		0x47
#define BQ25792_REG48_PART_INFORMATION		0x48

/* Minimal System Voltage */
#define BQ25792_REG00_VSYSMIN_MASK		GENMASK(5, 0)

#define BQ25792_MINVSYS_MIN_UV			2500000
#define BQ25792_MINVSYS_STEP_UV			250000
#define BQ25792_MINVSYS_MAX_UV			16000000

/* Charge Voltage Limit */
#define BQ25792_REG01_VREG_MASK			GENMASK(10, 0)

#define BQ25792_VBATREG_MIN_UV			3000000
#define BQ25792_VBATREG_STEP_UV			10000
#define BQ25792_VBATREG_MAX_UV			18800000

/* Charge Current Limit */
#define BQ25792_REG03_ICHG_MASK			GENMASK(8, 0)

#define BQ25792_ICHG_MIN_UA			50000
#define BQ25792_ICHG_STEP_UA			10000
#define BQ25792_ICHG_MAX_UA			5000000

/* Input Voltage Limit */
#define BQ25792_REG05_VINDPM_MASK		GENMASK(7, 0)

/* Input Current Limit */
#define BQ25792_REG06_IINDPM_MASK		GENMASK(8, 0)
#define BQ25792_IINDPM_DEFAULT_UA		3000000
#define BQ25792_IINDPM_STEP_UA			10000
#define BQ25792_IINDPM_MIN_UA			100000
#define BQ25792_IINDPM_MAX_UA			3300000

/* Precharge Control */
#define BQ25792_REG08_VBAT_LOWV_MASK		GENMASK(7, 6)
#define BQ25792_REG08_IPRECHG_MASK		GENMASK(5, 0)

/* Termination Control */
#define BQ25792_REG09_REG_RST			BIT(6)
#define BQ25792_REG09_ITERM_MASK		GENMASK(4, 0)

/* Re-charge Control */
#define BQ25792_REG0A_CELL_MASK			GENMASK(7, 6)
#define BQ25792_REG0A_TRECHG_MASK		GENMASK(5, 4)
#define BQ25792_REG0A_VRECHG_MASK		GENMASK(3, 0)

#define BQ25792_CELL_1S				0
#define BQ25792_CELL_2S				1
#define BQ25792_CELL_3S				2
#define BQ25792_CELL_4S				3

#define BQ25792_TRECHG_64MS			0
#define BQ25792_TRECHG_256MS			1
#define BQ25792_TRECHG_1024MS			2
#define BQ25792_TRECHG_2048MS			3

#define BQ25792_VRECHG_MIN_UV			50000
#define BQ25792_VRECHG_STEP_UV			50000
#define BQ25792_VRECHG_MAX_UV			800000

/* VOTG regulation */
#define BQ25792_REG0B_VOTG_MASK			GENMASK(10, 0)

#define BQ25792_OTG_VOLT_MIN_UV			2800000
#define BQ25792_OTG_VOLT_STEP_UV		10000
#define BQ25792_OTG_VOLT_MAX_UV			22000000
#define BQ25792_OTG_VOLT_NUM_VOLT		((BQ25792_OTG_VOLT_MAX_UV \
						  - BQ25792_OTG_VOLT_MIN_UV) \
						  / BQ25792_OTG_VOLT_STEP_UV + 1)

/* IOTG regulation */
#define BQ25792_REG0D_PRECHG_TMR		BIT(7)
#define BQ25792_REG0D_IOTG_MASK			GENMASK(6, 0)

#define BQ25792_OTG_CUR_MIN_UA		120000
#define BQ25792_OTG_CUR_STEP_UA		40000
#define BQ25792_OTG_CUR_MAX_UA		3320000

/* Timer Control */
#define BQ25792_REG0E_TOPOFF_TMR_MASK		GENMASK(7, 6)
#define BQ25792_REG0E_EN_TRICHG_TMR		BIT(5)
#define BQ25792_REG0E_EN_PRECHG_TMR		BIT(4)
#define BQ25792_REG0E_EN_CHG_TMR		BIT(3)
#define BQ25792_REG0E_CHG_TMR_MASK		GENMASK(2, 1)
#define BQ25792_REG0E_TMR2X_EN			BIT(0)

/* Charger Control 0 */
#define BQ25792_REG0F_EN_AUTO_IBATDIS		BIT(7)
#define BQ25792_REG0F_FORCE_IBATDIS		BIT(6)
#define BQ25792_REG0F_EN_CHG			BIT(5)
#define BQ25792_REG0F_EN_ICO			BIT(4)
#define BQ25792_REG0F_FORCE_ICO			BIT(3)
#define BQ25792_REG0F_EN_HIZ			BIT(2)
#define BQ25792_REG0F_EN_TERM			BIT(1)
/* bit0 reserved */

/* Charger Control 1 */
#define BQ25792_REG10_VAC_OVP_MASK		GENMASK(5, 4)
#define BQ25792_REG10_WD_RST			BIT(3)
#define BQ25792_REG10_WATCHDOG_MASK		GENMASK(2, 0)

/* Charger Control 2 */
#define BQ25792_REG11_FORCE_INDET		BIT(7)
#define BQ25792_REG11_AUTO_INDET_EN		BIT(6)
#define BQ25792_REG11_EN_12V			BIT(5)
#define BQ25792_REG11_EN_9V			BIT(4)
#define BQ25792_REG11_HVDCP_EN			BIT(3)
#define BQ25792_REG11_SDRV_CTRL_MASK		GENMASK(2, 1)
#define BQ25792_REG11_SDRV_DLY			BIT(0)

/* Charger Control 3 */
#define BQ25792_REG12_DIS_ACDRV			BIT(7)
#define BQ25792_REG12_EN_OTG			BIT(6)
#define BQ25792_REG12_PFM_OTG_DIS		BIT(5)
#define BQ25792_REG12_PFM_FWD_DIS		BIT(4)
#define BQ25792_REG12_WKUP_DLY			BIT(3)
#define BQ25792_REG12_DIS_LDO			BIT(2)
#define BQ25792_REG12_DIS_OTG_OOA		BIT(1)
#define BQ25792_REG12_DIS_FWD_OOA		BIT(0)

/* Charger Control 4 */
#define BQ25792_REG13_EN_ACDRV2			BIT(7)
#define BQ25792_REG13_EN_ACDRV1			BIT(6)
#define BQ25792_REG13_PWM_FREQ			BIT(5)
#define BQ25792_REG13_DIS_STAT			BIT(4)
#define BQ25792_REG13_DIS_VSYS_SHORT		BIT(3)
#define BQ25792_REG13_DIS_VOTG_UVP		BIT(2)
#define BQ25792_REG13_FORCE_VINDPM_DET		BIT(1)
#define BQ25792_REG13_EN_IBUS_OCP		BIT(0)

/* Charger Control 5 */
#define BQ25792_REG14_SFET_PRESENT		BIT(7)
/* bit6 reserved */
#define BQ25792_REG14_EN_IBAT			BIT(5)
#define BQ25792_REG14_IBAT_REG_MASK		GENMASK(4, 3)
#define BQ25792_REG14_EN_IINDPM			BIT(2)
#define BQ25792_REG14_EN_EXTILIM		BIT(1)
#define BQ25792_REG14_EN_BATOC			BIT(0)

#define BQ25792_IBAT_3A				FIELD_PREP(BQ25792_REG14_IBAT_REG_MASK, 0)
#define BQ25792_IBAT_4A				FIELD_PREP(BQ25792_REG14_IBAT_REG_MASK, 1)
#define BQ25792_IBAT_5A				FIELD_PREP(BQ25792_REG14_IBAT_REG_MASK, 2)
#define BQ25792_IBAT_UNLIM			FIELD_PREP(BQ25792_REG14_IBAT_REG_MASK, 3)

/* Temperature Control */
#define BQ25792_REG16_TREG_MASK			GENMASK(7, 6)
#define BQ25792_REG16_TSHUT_MASK		GENMASK(5, 4)
#define BQ25792_REG16_VBUS_PD_EN		BIT(3)
#define BQ25792_REG16_VAC1_PD_EN		BIT(2)
#define BQ25792_REG16_VAC2_PD_EN		BIT(1)

/* NTC Control 0 */
#define BQ25792_REG17_JEITA_VSET_MASK		GENMASK(7, 5)
#define BQ25792_REG17_JEITA_ISETH_MASK		GENMASK(4, 3)
#define BQ25792_REG17_JEITA_ISETC_MASK		GENMASK(2, 1)

/* NTC Control 1 */
#define BQ25792_REG18_TS_COOL_MASK		GENMASK(7, 6)
#define BQ25792_REG18_TS_WARM_MASK		GENMASK(5, 4)
#define BQ25792_REG18_BHOT_MASK			GENMASK(3, 2)
#define BQ25792_REG18_BCOLD			BIT(1)
#define BQ25792_REG18_TS_IGNORE			BIT(0)

/* ICO Current Limit */
#define BQ25792_REG19_ICO_ILIM_MASK		GENMASK(8, 0)

/* Charger Status 0 */
#define BQ25792_REG1B_IINDPM_STAT		BIT(7)
#define BQ25792_REG1B_VINDPM_STAT		BIT(6)
#define BQ25792_REG1B_WD_STAT			BIT(5)
#define BQ25792_REG1B_POORSRC_STAT		BIT(4)
#define BQ25792_REG1B_PG_STAT			BIT(3)
#define BQ25792_REG1B_AC2_PRESENT_STAT		BIT(2)
#define BQ25792_REG1B_AC1_PRESENT_STAT		BIT(1)
#define BQ25792_REG1B_VBUS_PRESENT_STAT		BIT(0)

/* Charger Status 1 */
#define BQ25792_REG1C_CHG_STAT_MASK		GENMASK(7, 5)
#define BQ25792_REG1C_VBUS_STAT_MASK		GENMASK(4, 1)
#define BQ25792_REG1C_BC12_DONE_STAT		BIT(0)

/* Charger Status 2 */
#define BQ25792_REG1D_ICO_STAT_MASK		GENMASK(7, 6)
#define BQ25792_REG1D_TREG_STAT			BIT(2)
#define BQ25792_REG1D_DPDM_STAT			BIT(1)
#define BQ25792_REG1D_VBAT_PRESENT_STAT		BIT(0)

/* Charger Status 3 */
#define BQ25792_REG1E_ACRB2_STAT		BIT(7)
#define BQ25792_REG1E_ACRB1_STAT		BIT(6)
#define BQ25792_REG1E_ADC_DONE_STAT		BIT(5)
#define BQ25792_REG1E_VSYS_STAT			BIT(4)
#define BQ25792_REG1E_CHG_TMR_STAT		BIT(3)
#define BQ25792_REG1E_TRICHG_TMR_STAT		BIT(2)
#define BQ25792_REG1E_PRECHG_TMR_STAT		BIT(1)

/* Charger Status 4 */
#define BQ25792_REG1F_VBATOTG_LOW_STAT		BIT(4)
#define BQ25792_REG1F_TS_COLD_STAT		BIT(3)
#define BQ25792_REG1F_TS_COOL_STAT		BIT(2)
#define BQ25792_REG1F_TS_WARM_STAT		BIT(1)
#define BQ25792_REG1F_TS_HOT_STAT		BIT(0)

/* FAULT Status 0 */
#define BQ25792_REG20_IBAT_REG_STAT		BIT(7)
#define BQ25792_REG20_VBUS_OVP_STAT		BIT(6)
#define BQ25792_REG20_VBAT_OVP_STAT		BIT(5)
#define BQ25792_REG20_IBUS_OCP_STAT		BIT(4)
#define BQ25792_REG20_IBAT_OCP_STAT		BIT(3)
#define BQ25792_REG20_CONV_OCP_STAT		BIT(2)
#define BQ25792_REG20_VAC2_OVP_STAT		BIT(1)
#define BQ25792_REG20_VAC1_OVP_STAT		BIT(0)

#define BQ25792_REG20_OVERVOLTAGE_MASK		(BQ25792_REG20_VBAT_OVP_STAT | \
						 BQ25792_REG20_VAC2_OVP_STAT | \
						 BQ25792_REG20_VAC1_OVP_STAT)
#define BQ25792_REG20_OVERCURRENT_MASK		(BQ25792_REG20_IBAT_OCP_STAT | \
						 BQ25792_REG20_CONV_OCP_STAT)

/* FAULT Status 1 */
#define BQ25792_REG21_VSYS_SHORT_STAT		BIT(7)
#define BQ25792_REG21_VSYS_OVP_STAT		BIT(6)
#define BQ25792_REG21_OTG_OVP_STAT		BIT(5)
#define BQ25792_REG21_OTG_UVP_STAT		BIT(4)
#define BQ25792_REG21_TSHUT_STAT		BIT(2)


/* Charger Flag 0 */
#define BQ25792_REG22_IINDPM_FLAG		BIT(7)
#define BQ25792_REG22_VINDPM_FLAG		BIT(6)
#define BQ25792_REG22_WD_FLAG			BIT(5)
#define BQ25792_REG22_POORSRC_FLAG		BIT(4)
#define BQ25792_REG22_PG_FLAG			BIT(3)
#define BQ25792_REG22_AC2_PRESENT_FLAG		BIT(2)
#define BQ25792_REG22_AC1_PRESENT_FLAG		BIT(1)
#define BQ25792_REG22_VBUS_PRESENT_FLAG		BIT(0)

/* Charger Flag 1 */
#define BQ25792_REG23_CHG_FLAG			BIT(7)
#define BQ25792_REG23_ICO_FLAG			BIT(6)
#define BQ25792_REG23_VBUS_FLAG			BIT(4)
#define BQ25792_REG23_TREG_FLAG			BIT(2)
#define BQ25792_REG23_VBAT_PRESENT_FLAG		BIT(1)
#define BQ25792_REG23_BC12_DONE_FLAG		BIT(0)

/* Charger Flag 2 */
#define BQ25792_REG24_DPDM_DONE_FLAG		BIT(6)
#define BQ25792_REG24_ADC_DONE_FLAG		BIT(5)
#define BQ25792_REG24_VSYS_FLAG			BIT(4)
#define BQ25792_REG24_CHG_TMR_FLAG		BIT(3)
#define BQ25792_REG24_TRICHG_TMR_FLAG		BIT(2)
#define BQ25792_REG24_PRECHG_TMR_FLAG		BIT(1)
#define BQ25792_REG24_TOPOFF_TMR_FLAG		BIT(0)

/* Charger Flag 3 */
#define BQ25792_REG25_VBATOTG_LOW_FLAG		BIT(4)
#define BQ25792_REG25_TS_COLD_FLAG		BIT(3)
#define BQ25792_REG25_TS_COOL_FLAG		BIT(2)
#define BQ25792_REG25_TS_WARM_FLAG		BIT(1)
#define BQ25792_REG25_TS_HOT_FLAG		BIT(0)

/* FAULT Flag 0 */
#define BQ25792_REG26_IBAT_REG_FLAG		BIT(7)
#define BQ25792_REG26_VBUS_OVP_FLAG		BIT(6)
#define BQ25792_REG26_VBAT_OVP_FLAG		BIT(5)
#define BQ25792_REG26_IBUS_OCP_FLAG		BIT(4)
#define BQ25792_REG26_IBAT_OCP_FLAG		BIT(3)
#define BQ25792_REG26_CONV_OCP_FLAG		BIT(2)
#define BQ25792_REG26_VAC2_OVP_FLAG		BIT(1)
#define BQ25792_REG26_VAC1_OVP_FLAG		BIT(0)

/* FAULT Flag 1 */
#define BQ25792_REG27_VSYS_SHORT_FLAG		BIT(7)
#define BQ25792_REG27_VSYS_OVP_FLAG		BIT(6)
#define BQ25792_REG27_OTG_OVP_FLAG		BIT(5)
#define BQ25792_REG27_OTG_UVP_FLAG		BIT(4)
#define BQ25792_REG27_TSHUT_FLAG		BIT(2)

/* Charger Mask 0 */
#define BQ25792_REG28_IINDPM_MASK		BIT(7)
#define BQ25792_REG28_VINDPM_MASK		BIT(6)
#define BQ25792_REG28_WD_MASK			BIT(5)
#define BQ25792_REG28_POORSRC_MASK		BIT(4)
#define BQ25792_REG28_PG_MASK			BIT(3)
#define BQ25792_REG28_AC2_PRESENT_MASK		BIT(2)
#define BQ25792_REG28_AC1_PRESENT_MASK		BIT(1)
#define BQ25792_REG28_VBUS_PRESENT_MASK		BIT(0)

/* Charger Mask 1 */
#define BQ25792_REG29_CHG_MASK			BIT(7)
#define BQ25792_REG29_ICO_MASK			BIT(6)
#define BQ25792_REG29_VBUS_MASK			BIT(4)
#define BQ25792_REG29_TREG_MASK			BIT(2)
#define BQ25792_REG29_VBAT_PRESENT_MASK		BIT(1)
#define BQ25792_REG29_BC12_DONE_MASK		BIT(0)

/* Charger Mask 2 */
#define BQ25792_REG2A_DPDM_DONE_MASK		BIT(6)
#define BQ25792_REG2A_ADC_DONE_MASK		BIT(5)
#define BQ25792_REG2A_VSYS_MASK			BIT(4)
#define BQ25792_REG2A_CHG_TMR_MASK		BIT(3)
#define BQ25792_REG2A_TRICHG_TMR_MASK		BIT(2)
#define BQ25792_REG2A_PRECHG_TMR_MASK		BIT(1)
#define BQ25792_REG2A_TOPOFF_TMR_MASK		BIT(0)

/* Charger Mask 3 */
#define BQ25792_REG2B_VBATOTG_LOW_MASK		BIT(4)
#define BQ25792_REG2B_TS_COLD_MASK		BIT(3)
#define BQ25792_REG2B_TS_COOL_MASK		BIT(2)
#define BQ25792_REG2B_TS_WARM_MASK		BIT(1)
#define BQ25792_REG2B_TS_HOT_MASK		BIT(0)

/* FAULT Mask 0 */
#define BQ25792_REG2C_IBAT_REG_MASK		BIT(7)
#define BQ25792_REG2C_VBUS_OVP_MASK		BIT(6)
#define BQ25792_REG2C_VBAT_OVP_MASK		BIT(5)
#define BQ25792_REG2C_IBUS_OCP_MASK		BIT(4)
#define BQ25792_REG2C_IBAT_OCP_MASK		BIT(3)
#define BQ25792_REG2C_CONV_OCP_MASK		BIT(2)
#define BQ25792_REG2C_VAC2_OVP_MASK		BIT(1)
#define BQ25792_REG2C_VAC1_OVP_MASK		BIT(0)

/* FAULT Mask 1 */
#define BQ25792_REG2D_VSYS_SHORT_MASK		BIT(7)
#define BQ25792_REG2D_VSYS_OVP_MASK		BIT(6)
#define BQ25792_REG2D_OTG_OVP_MASK		BIT(5)
#define BQ25792_REG2D_OTG_UVP_MASK		BIT(4)
#define BQ25792_REG2D_TSHUT_MASK		BIT(2)

/* ADC Control */
#define BQ25792_REG2E_ADC_EN			BIT(7)
#define BQ25792_REG2E_ADC_RATE			BIT(6)
#define BQ25792_REG2E_ADC_SAMPLE_MASK		GENMASK(5, 4)
#define BQ25792_REG2E_ADC_AVG			BIT(3)
#define BQ25792_REG2E_ADC_AVG_INIT		BIT(2)

/* ADC Function Disable 0 */
#define BQ25792_REG2F_IBUS_ADC_DIS		BIT(7)
#define BQ25792_REG2F_IBAT_ADC_DIS		BIT(6)
#define BQ25792_REG2F_VBUS_ADC_DIS		BIT(5)
#define BQ25792_REG2F_VBAT_ADC_DIS		BIT(4)
#define BQ25792_REG2F_VSYS_ADC_DIS		BIT(3)
#define BQ25792_REG2F_TS_ADC_DIS		BIT(2)
#define BQ25792_REG2F_TDIE_ADC_DIS		BIT(1)

/* ADC Function Disable 1 */
#define BQ25792_REG30_DP_ADC_DIS		BIT(7)
#define BQ25792_REG30_DM_ADC_DIS		BIT(6)
#define BQ25792_REG30_VAC2_ADC_DIS		BIT(5)
#define BQ25792_REG30_VAC1_ADC_DIS		BIT(4)

/* 0x31-0x45: ADC result registers (16-bit, RO): single full-width field */

#define BQ25792_ADCVSYSVBAT_STEP_UV		1000
#define BQ25792_ADCIBAT_STEP_UA			1000

/* DPDM Driver */
#define BQ25792_REG47_DPLUS_DAC_MASK		GENMASK(7, 5)
#define BQ25792_REG47_DMINUS_DAC_MASK		GENMASK(4, 2)

/* Part Information */
#define BQ25792_REG48_PN_MASK			GENMASK(5, 3)
#define BQ25792_REG48_DEV_REV_MASK		GENMASK(2, 0)

enum bq257xx_type {
	BQ25703A = 1,
	BQ25792,
};

struct bq257xx_device {
	struct i2c_client *client;
	struct regmap *regmap;
	enum bq257xx_type type;
};