Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
CTCaer
GitHub Repository: CTCaer/hekate
Path: blob/master/bdk/power/bq24193.h
1476 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
#define BQ24193_I2C_ADDR 0x6B
23
24
// REG 0 masks.
25
#define BQ24193_INCONFIG_INLIMIT_MASK (7<<0)
26
#define BQ24193_INCONFIG_VINDPM_MASK 0x78
27
#define BQ24193_INCONFIG_HIZ_EN_MASK (1<<7)
28
29
// REG 1 masks.
30
#define BQ24193_PORCONFIG_BOOST_MASK (1<<0)
31
#define BQ24193_PORCONFIG_SYSMIN_MASK (7<<1) // 3000uV HOS default.
32
#define BQ24193_PORCONFIG_CHGCONFIG_MASK (3<<4)
33
#define BQ24193_PORCONFIG_CHGCONFIG_CHARGER_EN (1<<4)
34
#define BQ24193_PORCONFIG_I2CWATCHDOG_MASK (1<<6)
35
#define BQ24193_PORCONFIG_RESET_MASK (1<<7)
36
37
// REG 2 masks.
38
#define BQ24193_CHRGCURR_20PCT_MASK (1<<0)
39
#define BQ24193_CHRGCURR_ICHG_MASK 0xFC
40
41
// REG 3 masks.
42
#define BQ24193_PRECHRG_ITERM 0x0F
43
#define BQ24193_PRECHRG_IPRECHG 0xF0
44
45
// REG 4 masks.
46
#define BQ24193_CHRGVOLT_VTHRES (1<<0)
47
#define BQ24193_CHRGVOLT_BATTLOW (1<<1)
48
#define BQ24193_CHRGVOLT_VREG 0xFC
49
50
// REG 5 masks.
51
#define BQ24193_CHRGTERM_ISET_MASK (1<<0)
52
#define BQ24193_CHRGTERM_CHGTIMER_MASK (3<<1)
53
#define BQ24193_CHRGTERM_ENTIMER_MASK (1<<3)
54
#define BQ24193_CHRGTERM_WATCHDOG_MASK (3<<4)
55
#define BQ24193_CHRGTERM_TERM_ST_MASK (1<<6)
56
#define BQ24193_CHRGTERM_TERM_EN_MASK (1<<7)
57
58
// REG 6 masks.
59
#define BQ24193_IRTHERMAL_THERM_MASK (3<<0)
60
#define BQ24193_IRTHERMAL_VCLAMP_MASK (7<<2)
61
#define BQ24193_IRTHERMAL_BATTCOMP_MASK (7<<5)
62
63
// REG 7 masks.
64
#define BQ24193_MISC_INT_MASK (3<<0)
65
#define BQ24193_MISC_VSET_MASK (1<<4)
66
#define BQ24193_MISC_BATFET_DI_MASK (1<<5)
67
#define BQ24193_MISC_TMR2X_EN_MASK (1<<6)
68
#define BQ24193_MISC_DPDM_EN_MASK (1<<7)
69
70
// REG 8 masks.
71
#define BQ24193_STATUS_VSYS_MASK (1<<0)
72
#define BQ24193_STATUS_THERM_MASK (1<<1)
73
#define BQ24193_STATUS_PG_MASK (1<<2)
74
#define BQ24193_STATUS_DPM_MASK (1<<3)
75
#define BQ24193_STATUS_CHRG_MASK (3<<4)
76
#define BQ24193_STATUS_VBUS_MASK (3<<6)
77
78
// REG 9 masks.
79
#define BQ24193_FAULT_THERM_MASK (7<<0)
80
#define BQ24193_FAULT_BATT_OVP_MASK (1<<3)
81
#define BQ24193_FAULT_CHARGE_MASK (3<<4)
82
#define BQ24193_FAULT_BOOST_MASK (1<<6)
83
#define BQ24193_FAULT_WATCHDOG_MASK (1<<7)
84
85
// REG A masks.
86
#define BQ24193_VENDORPART_DEV_MASK (3<<0)
87
#define BQ24193_VENDORPART_PN_MASK (7<<3)
88
89
enum BQ24193_reg {
90
BQ24193_InputSource = 0x00,
91
BQ24193_PORConfig = 0x01,
92
BQ24193_ChrgCurr = 0x02,
93
BQ24193_PreChrgTerm = 0x03,
94
BQ24193_ChrgVolt = 0x04,
95
BQ24193_ChrgTermTimer = 0x05,
96
BQ24193_IRCompThermal = 0x06,
97
BQ24193_Misc = 0x07,
98
BQ24193_Status = 0x08,
99
BQ24193_FaultReg = 0x09,
100
BQ24193_VendorPart = 0x0A,
101
};
102
103
enum BQ24193_reg_prop {
104
BQ24193_InputVoltageLimit, // REG 0.
105
BQ24193_InputCurrentLimit, // REG 0.
106
BQ24193_SystemMinimumVoltage, // REG 1.
107
BQ24193_FastChargeCurrentLimit, // REG 2.
108
BQ24193_ChargeVoltageLimit, // REG 4.
109
BQ24193_RechargeThreshold, // REG 4.
110
BQ24193_ThermalRegulation, // REG 6.
111
BQ24193_ChargeStatus, // REG 8.
112
BQ24193_TempStatus, // REG 9.
113
BQ24193_DevID, // REG A.
114
BQ24193_ProductNumber, // REG A.
115
};
116
117
int bq24193_get_property(enum BQ24193_reg_prop prop, int *value);
118
void bq24193_enable_charger();
119
void bq24193_fake_battery_removal();
120
121
#endif /* __BQ24193_H_ */
122
123