Merge branch 'slab/urgent' into slab/next
[pandora-kernel.git] / include / linux / power / max17042_battery.h
1 /*
2  * Fuel gauge driver for Maxim 17042 / 8966 / 8997
3  *  Note that Maxim 8966 and 8997 are mfd and this is its subdevice.
4  *
5  * Copyright (C) 2011 Samsung Electronics
6  * MyungJoo Ham <myungjoo.ham@samsung.com>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  */
22
23 #ifndef __MAX17042_BATTERY_H_
24 #define __MAX17042_BATTERY_H_
25
26 #define MAX17042_STATUS_BattAbsent      (1 << 3)
27 #define MAX17042_BATTERY_FULL   (100)
28 #define MAX17042_DEFAULT_SNS_RESISTOR   (10000)
29
30 enum max17042_register {
31         MAX17042_STATUS         = 0x00,
32         MAX17042_VALRT_Th       = 0x01,
33         MAX17042_TALRT_Th       = 0x02,
34         MAX17042_SALRT_Th       = 0x03,
35         MAX17042_AtRate         = 0x04,
36         MAX17042_RepCap         = 0x05,
37         MAX17042_RepSOC         = 0x06,
38         MAX17042_Age            = 0x07,
39         MAX17042_TEMP           = 0x08,
40         MAX17042_VCELL          = 0x09,
41         MAX17042_Current        = 0x0A,
42         MAX17042_AvgCurrent     = 0x0B,
43         MAX17042_Qresidual      = 0x0C,
44         MAX17042_SOC            = 0x0D,
45         MAX17042_AvSOC          = 0x0E,
46         MAX17042_RemCap         = 0x0F,
47         MAX17402_FullCAP        = 0x10,
48         MAX17042_TTE            = 0x11,
49         MAX17042_V_empty        = 0x12,
50
51         MAX17042_RSLOW          = 0x14,
52
53         MAX17042_AvgTA          = 0x16,
54         MAX17042_Cycles         = 0x17,
55         MAX17042_DesignCap      = 0x18,
56         MAX17042_AvgVCELL       = 0x19,
57         MAX17042_MinMaxTemp     = 0x1A,
58         MAX17042_MinMaxVolt     = 0x1B,
59         MAX17042_MinMaxCurr     = 0x1C,
60         MAX17042_CONFIG         = 0x1D,
61         MAX17042_ICHGTerm       = 0x1E,
62         MAX17042_AvCap          = 0x1F,
63         MAX17042_ManName        = 0x20,
64         MAX17042_DevName        = 0x21,
65         MAX17042_DevChem        = 0x22,
66
67         MAX17042_TempNom        = 0x24,
68         MAX17042_TempCold       = 0x25,
69         MAX17042_TempHot        = 0x26,
70         MAX17042_AIN            = 0x27,
71         MAX17042_LearnCFG       = 0x28,
72         MAX17042_SHFTCFG        = 0x29,
73         MAX17042_RelaxCFG       = 0x2A,
74         MAX17042_MiscCFG        = 0x2B,
75         MAX17042_TGAIN          = 0x2C,
76         MAx17042_TOFF           = 0x2D,
77         MAX17042_CGAIN          = 0x2E,
78         MAX17042_COFF           = 0x2F,
79
80         MAX17042_Q_empty        = 0x33,
81         MAX17042_T_empty        = 0x34,
82
83         MAX17042_RCOMP0         = 0x38,
84         MAX17042_TempCo         = 0x39,
85         MAX17042_Rx             = 0x3A,
86         MAX17042_T_empty0       = 0x3B,
87         MAX17042_TaskPeriod     = 0x3C,
88         MAX17042_FSTAT          = 0x3D,
89
90         MAX17042_SHDNTIMER      = 0x3F,
91
92         MAX17042_VFRemCap       = 0x4A,
93
94         MAX17042_QH             = 0x4D,
95         MAX17042_QL             = 0x4E,
96 };
97
98 /*
99  * used for setting a register to a desired value
100  * addr : address for a register
101  * data : setting value for the register
102  */
103 struct max17042_reg_data {
104         u8 addr;
105         u16 data;
106 };
107
108 struct max17042_platform_data {
109         struct max17042_reg_data *init_data;
110         int num_init_data; /* Number of enties in init_data array */
111         bool enable_current_sense;
112
113         /*
114          * R_sns in micro-ohms.
115          * default 10000 (if r_sns = 0) as it is the recommended value by
116          * the datasheet although it can be changed by board designers.
117          */
118         unsigned int r_sns;
119 };
120
121 #endif /* __MAX17042_BATTERY_H_ */