~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/power/max17042_battery.h

Version: ~ [ linux-5.5 ] ~ [ linux-5.4.15 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.98 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.167 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.211 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.211 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.81 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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 #define MAX17042_CHARACTERIZATION_DATA_SIZE 48
 31 
 32 enum max17042_register {
 33         MAX17042_STATUS         = 0x00,
 34         MAX17042_VALRT_Th       = 0x01,
 35         MAX17042_TALRT_Th       = 0x02,
 36         MAX17042_SALRT_Th       = 0x03,
 37         MAX17042_AtRate         = 0x04,
 38         MAX17042_RepCap         = 0x05,
 39         MAX17042_RepSOC         = 0x06,
 40         MAX17042_Age            = 0x07,
 41         MAX17042_TEMP           = 0x08,
 42         MAX17042_VCELL          = 0x09,
 43         MAX17042_Current        = 0x0A,
 44         MAX17042_AvgCurrent     = 0x0B,
 45 
 46         MAX17042_SOC            = 0x0D,
 47         MAX17042_AvSOC          = 0x0E,
 48         MAX17042_RemCap         = 0x0F,
 49         MAX17042_FullCAP        = 0x10,
 50         MAX17042_TTE            = 0x11,
 51         MAX17042_V_empty        = 0x12,
 52 
 53         MAX17042_RSLOW          = 0x14,
 54 
 55         MAX17042_AvgTA          = 0x16,
 56         MAX17042_Cycles         = 0x17,
 57         MAX17042_DesignCap      = 0x18,
 58         MAX17042_AvgVCELL       = 0x19,
 59         MAX17042_MinMaxTemp     = 0x1A,
 60         MAX17042_MinMaxVolt     = 0x1B,
 61         MAX17042_MinMaxCurr     = 0x1C,
 62         MAX17042_CONFIG         = 0x1D,
 63         MAX17042_ICHGTerm       = 0x1E,
 64         MAX17042_AvCap          = 0x1F,
 65         MAX17042_ManName        = 0x20,
 66         MAX17042_DevName        = 0x21,
 67 
 68         MAX17042_FullCAPNom     = 0x23,
 69         MAX17042_TempNom        = 0x24,
 70         MAX17042_TempLim        = 0x25,
 71         MAX17042_TempHot        = 0x26,
 72         MAX17042_AIN            = 0x27,
 73         MAX17042_LearnCFG       = 0x28,
 74         MAX17042_FilterCFG      = 0x29,
 75         MAX17042_RelaxCFG       = 0x2A,
 76         MAX17042_MiscCFG        = 0x2B,
 77         MAX17042_TGAIN          = 0x2C,
 78         MAx17042_TOFF           = 0x2D,
 79         MAX17042_CGAIN          = 0x2E,
 80         MAX17042_COFF           = 0x2F,
 81 
 82         MAX17042_MaskSOC        = 0x32,
 83         MAX17042_SOC_empty      = 0x33,
 84         MAX17042_T_empty        = 0x34,
 85 
 86         MAX17042_FullCAP0       = 0x35,
 87         MAX17042_LAvg_empty     = 0x36,
 88         MAX17042_FCTC           = 0x37,
 89         MAX17042_RCOMP0         = 0x38,
 90         MAX17042_TempCo         = 0x39,
 91         MAX17042_EmptyTempCo    = 0x3A,
 92         MAX17042_K_empty0       = 0x3B,
 93         MAX17042_TaskPeriod     = 0x3C,
 94         MAX17042_FSTAT          = 0x3D,
 95 
 96         MAX17042_SHDNTIMER      = 0x3F,
 97 
 98         MAX17042_dQacc          = 0x45,
 99         MAX17042_dPacc          = 0x46,
100 
101         MAX17042_VFSOC0         = 0x48,
102 
103         MAX17042_QH             = 0x4D,
104         MAX17042_QL             = 0x4E,
105 
106         MAX17042_VFSOC0Enable   = 0x60,
107         MAX17042_MLOCKReg1      = 0x62,
108         MAX17042_MLOCKReg2      = 0x63,
109 
110         MAX17042_MODELChrTbl    = 0x80,
111 
112         MAX17042_OCV            = 0xEE,
113 
114         MAX17042_OCVInternal    = 0xFB,
115 
116         MAX17042_VFSOC          = 0xFF,
117 };
118 
119 /* Registers specific to max17047/50 */
120 enum max17047_register {
121         MAX17047_QRTbl00        = 0x12,
122         MAX17047_FullSOCThr     = 0x13,
123         MAX17047_QRTbl10        = 0x22,
124         MAX17047_QRTbl20        = 0x32,
125         MAX17047_V_empty        = 0x3A,
126         MAX17047_QRTbl30        = 0x42,
127 };
128 
129 enum max170xx_chip_type {MAX17042, MAX17047};
130 
131 /*
132  * used for setting a register to a desired value
133  * addr : address for a register
134  * data : setting value for the register
135  */
136 struct max17042_reg_data {
137         u8 addr;
138         u16 data;
139 };
140 
141 struct max17042_config_data {
142         /* External current sense resistor value in milli-ohms */
143         u32     cur_sense_val;
144 
145         /* A/D measurement */
146         u16     tgain;          /* 0x2C */
147         u16     toff;           /* 0x2D */
148         u16     cgain;          /* 0x2E */
149         u16     coff;           /* 0x2F */
150 
151         /* Alert / Status */
152         u16     valrt_thresh;   /* 0x01 */
153         u16     talrt_thresh;   /* 0x02 */
154         u16     soc_alrt_thresh;        /* 0x03 */
155         u16     config;         /* 0x01D */
156         u16     shdntimer;      /* 0x03F */
157 
158         /* App data */
159         u16     full_soc_thresh;        /* 0x13 */
160         u16     design_cap;     /* 0x18 */
161         u16     ichgt_term;     /* 0x1E */
162 
163         /* MG3 config */
164         u16     at_rate;        /* 0x04 */
165         u16     learn_cfg;      /* 0x28 */
166         u16     filter_cfg;     /* 0x29 */
167         u16     relax_cfg;      /* 0x2A */
168         u16     misc_cfg;       /* 0x2B */
169         u16     masksoc;        /* 0x32 */
170 
171         /* MG3 save and restore */
172         u16     fullcap;        /* 0x10 */
173         u16     fullcapnom;     /* 0x23 */
174         u16     socempty;       /* 0x33 */
175         u16     lavg_empty;     /* 0x36 */
176         u16     dqacc;          /* 0x45 */
177         u16     dpacc;          /* 0x46 */
178         u16     qrtbl00;        /* 0x12 */
179         u16     qrtbl10;        /* 0x22 */
180         u16     qrtbl20;        /* 0x32 */
181         u16     qrtbl30;        /* 0x42 */
182 
183         /* Cell technology from power_supply.h */
184         u16     cell_technology;
185 
186         /* Cell Data */
187         u16     vempty;         /* 0x12 */
188         u16     temp_nom;       /* 0x24 */
189         u16     temp_lim;       /* 0x25 */
190         u16     fctc;           /* 0x37 */
191         u16     rcomp0;         /* 0x38 */
192         u16     tcompc0;        /* 0x39 */
193         u16     empty_tempco;   /* 0x3A */
194         u16     kempty0;        /* 0x3B */
195         u16     cell_char_tbl[MAX17042_CHARACTERIZATION_DATA_SIZE];
196 } __packed;
197 
198 struct max17042_platform_data {
199         struct max17042_reg_data *init_data;
200         struct max17042_config_data *config_data;
201         int num_init_data; /* Number of enties in init_data array */
202         bool enable_current_sense;
203         bool enable_por_init; /* Use POR init from Maxim appnote */
204 
205         /*
206          * R_sns in micro-ohms.
207          * default 10000 (if r_sns = 0) as it is the recommended value by
208          * the datasheet although it can be changed by board designers.
209          */
210         unsigned int r_sns;
211 };
212 
213 #endif /* __MAX17042_BATTERY_H_ */
214 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp