summaryrefslogtreecommitdiff
path: root/include/linux/battery/charger/smb358_charger.h
blob: 26f9e6201c26b7147442ebc22e824bc0a63139f8 (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
/*
 * smb358_charger.h
 * Samsung SMB358 Charger Header
 *
 * Copyright (C) 2012 Samsung Electronics, Inc.
 *
 *
 * 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 __SMB358_CHARGER_H
#define __SMB358_CHARGER_H __FILE__

/* Slave address should be shifted to the right 1bit.
 * R/W bit should NOT be included.
 */
#define SEC_CHARGER_I2C_SLAVEADDR	0x6A

/* Register define */
#define SMB358_CHARGE_CURRENT				0x00
#define SMB358_INPUT_CURRENTLIMIT			0x01
#define SMB358_VARIOUS_FUNCTIONS			0x02
#define SMB358_FLOAT_VOLTAGE				0x03
#define SMB358_CHARGE_CONTROL				0x04
#define SMB358_STAT_TIMERS_CONTROL			0x05
#define SMB358_PIN_ENABLE_CONTROL			0x06
#define SMB358_THERM_CONTROL_A				0x07
#define SMB358_SYSOK_USB30_SELECTION			0x08
#define SMB358_OTHER_CONTROL_A				0x09
#define SMB358_OTG_TLIM_THERM_CONTROL			0x0A
#define SMB358_LIMIT_CELL_TEMPERATURE_MONITOR		0x0B
#define SMB358_FAULT_INTERRUPT				0x0C
#define SMB358_STATUS_INTERRUPT				0x0D
#define SMB358_I2C_BUS_SLAVE_ADDR			0x0E

#define SMB358_COMMAND_A				0x30
#define SMB358_COMMAND_B				0x31
#define SMB358_COMMAND_C				0x33
#define SMB358_ADC_STATUS				0x34
#define SMB358_INTERRUPT_STATUS_A			0x35
#define SMB358_INTERRUPT_STATUS_B			0x36
#define SMB358_INTERRUPT_STATUS_C			0x37
#define SMB358_INTERRUPT_STATUS_D			0x38
#define SMB358_INTERRUPT_STATUS_E			0x39
#define SMB358_INTERRUPT_STATUS_F			0x3A
#define SMB358_STATUS_A					0x3B
#define SMB358_STATUS_B					0x3C
#define SMB358_STATUS_C					0x3D
#define SMB358_STATUS_D					0x3E
#define SMB358_STATUS_E					0x3F

#define ENABLE_WRT_ACCESS				0x80
#define SMB358_ENABLE_WRITE				1
#define SMB358_DISABLE_WRITE				0

#define SMB358_ENABLE_CHARGER				0x02

ssize_t smb358_chg_show_attrs(struct device *dev,
				struct device_attribute *attr, char *buf);

ssize_t smb358_chg_store_attrs(struct device *dev,
				struct device_attribute *attr,
				const char *buf, size_t count);

#define SMB358_CHARGER_ATTR(_name)				\
{							\
	.attr = {.name = #_name, .mode = 0664},	\
	.show = smb358_chg_show_attrs,			\
	.store = smb358_chg_store_attrs,			\
}
#endif	/* __SMB358_CHARGER_H */