Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
CTCaer
GitHub Repository: CTCaer/hekate
Path: blob/master/bdk/power/bq24193.h
3694 views
1
/*
2
* Battery charger driver for Nintendo Switch's TI BQ24193
3
*
4
* Copyright (c) 2018 CTCaer
5
*
6
* This program is free software; you can redistribute it and/or modify it
7
* under the terms and conditions of the GNU General Public License,
8
* version 2, as published by the Free Software Foundation.
9
*
10
* This program is distributed in the hope it will be useful, but WITHOUT
11
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
13
* more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
#ifndef __BQ24193_H_
20
#define __BQ24193_H_
21
22
#include <utils/types.h>
23
24
#define BQ24193_I2C_ADDR 0x6B
25
26
// REG 0 masks.
27
#define BQ24193_INCONFIG_INLIMIT_MASK (7<<0)
28
#define BQ24193_INCONFIG_VINDPM_MASK 0x78
29
#define BQ24193_INCONFIG_HIZ_EN_MASK (1<<7)
30
31
// REG 1 masks.
32
#define BQ24193_PORCONFIG_BOOST_MASK (1<<0)
33
#define BQ24193_PORCONFIG_SYSMIN_MASK (7<<1) // 3000uV HOS default.
34
#define BQ24193_PORCONFIG_CHGCONFIG_MASK (3<<4)
35
#define BQ24193_PORCONFIG_CHGCONFIG_CHARGER_EN (1<<4)
36
#define BQ24193_PORCONFIG_I2CWATCHDOG_MASK (1<<6)
37
#define BQ24193_PORCONFIG_RESET_MASK (1<<7)
38
39
// REG 2 masks.
40
#define BQ24193_CHRGCURR_20PCT_MASK (1<<0)
41
#define BQ24193_CHRGCURR_ICHG_MASK 0xFC
42
43
// REG 3 masks.
44
#define BQ24193_PRECHRG_ITERM 0x0F
45
#define BQ24193_PRECHRG_IPRECHG 0xF0
46
47
// REG 4 masks.
48
#define BQ24193_CHRGVOLT_VTHRES (1<<0)
49
#define BQ24193_CHRGVOLT_BATTLOW (1<<1)
50
#define BQ24193_CHRGVOLT_VREG 0xFC
51
52
// REG 5 masks.
53
#define BQ24193_CHRGTERM_ISET_MASK (1<<0)
54
#define BQ24193_CHRGTERM_CHGTIMER_MASK (3<<1)
55
#define BQ24193_CHRGTERM_ENTIMER_MASK (1<<3)
56
#define BQ24193_CHRGTERM_WATCHDOG_MASK (3<<4)
57
#define BQ24193_CHRGTERM_TERM_ST_MASK (1<<6)
58
#define BQ24193_CHRGTERM_TERM_EN_MASK (1<<7)
59
60
// REG 6 masks.
61
#define BQ24193_IRTHERMAL_THERM_MASK (3<<0)
62
#define BQ24193_IRTHERMAL_VCLAMP_MASK (7<<2)
63
#define BQ24193_IRTHERMAL_BATTCOMP_MASK (7<<5)
64
65
// REG 7 masks.
66
#define BQ24193_MISC_INT_MASK (3<<0)
67
#define BQ24193_MISC_VSET_MASK (1<<4)
68
#define BQ24193_MISC_BATFET_DI_MASK (1<<5)
69
#define BQ24193_MISC_TMR2X_EN_MASK (1<<6)
70
#define BQ24193_MISC_DPDM_EN_MASK (1<<7)
71
72
// REG 8 masks.
73
#define BQ24193_STATUS_VSYS_MASK (1<<0)
74
#define BQ24193_STATUS_THERM_MASK (1<<1)
75
#define BQ24193_STATUS_PG_MASK (1<<2)
76
#define BQ24193_STATUS_DPM_MASK (1<<3)
77
#define BQ24193_STATUS_CHRG_MASK (3<<4)
78
#define BQ24193_STATUS_VBUS_MASK (3<<6)
79
80
// REG 9 masks.
81
#define BQ24193_FAULT_THERM_MASK (7<<0)
82
#define BQ24193_FAULT_BATT_OVP_MASK (1<<3)
83
#define BQ24193_FAULT_CHARGE_MASK (3<<4)
84
#define BQ24193_FAULT_BOOST_MASK (1<<6)
85
#define BQ24193_FAULT_WATCHDOG_MASK (1<<7)
86
87
// REG A masks.
88
#define BQ24193_VENDORPART_DEV_MASK (3<<0)
89
#define BQ24193_VENDORPART_PN_MASK (7<<3)
90
91
enum BQ24193_reg {
92
BQ24193_InputSource = 0x00,
93
BQ24193_PORConfig = 0x01,
94
BQ24193_ChrgCurr = 0x02,
95
BQ24193_PreChrgTerm = 0x03,
96
BQ24193_ChrgVolt = 0x04,
97
BQ24193_ChrgTermTimer = 0x05,
98
BQ24193_IRCompThermal = 0x06,
99
BQ24193_Misc = 0x07,
100
BQ24193_Status = 0x08,
101
BQ24193_FaultReg = 0x09,
102
BQ24193_VendorPart = 0x0A,
103
};
104
105
enum BQ24193_reg_prop {
106
BQ24193_InputVoltageLimit, // REG 0.
107
BQ24193_InputCurrentLimit, // REG 0.
108
BQ24193_SystemMinimumVoltage, // REG 1.
109
BQ24193_FastChargeCurrentLimit, // REG 2.
110
BQ24193_ChargeVoltageLimit, // REG 4.
111
BQ24193_RechargeThreshold, // REG 4.
112
BQ24193_ThermalRegulation, // REG 6.
113
BQ24193_ChargeStatus, // REG 8.
114
BQ24193_TempStatus, // REG 9.
115
BQ24193_DevID, // REG A.
116
BQ24193_ProductNumber, // REG A.
117
};
118
119
int bq24193_get_version(u32 *value);
120
int bq24193_get_property(enum BQ24193_reg_prop prop, int *value);
121
void bq24193_enable_charger();
122
void bq24193_fake_battery_removal();
123
124
#endif /* __BQ24193_H_ */
125
126