Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
linux
mfd
abx500
ab8500-bm.h
Go to the documentation of this file.
1
/*
2
* Copyright ST-Ericsson 2012.
3
*
4
* Author: Arun Murthy <
[email protected]
>
5
* Licensed under GPLv2.
6
*/
7
8
#ifndef _AB8500_BM_H
9
#define _AB8500_BM_H
10
11
#include <linux/kernel.h>
12
#include <
linux/mfd/abx500.h
>
13
14
/*
15
* System control 2 register offsets.
16
* bank = 0x02
17
*/
18
#define AB8500_MAIN_WDOG_CTRL_REG 0x01
19
#define AB8500_LOW_BAT_REG 0x03
20
#define AB8500_BATT_OK_REG 0x04
21
/*
22
* USB/ULPI register offsets
23
* Bank : 0x5
24
*/
25
#define AB8500_USB_LINE_STAT_REG 0x80
26
27
/*
28
* Charger / status register offfsets
29
* Bank : 0x0B
30
*/
31
#define AB8500_CH_STATUS1_REG 0x00
32
#define AB8500_CH_STATUS2_REG 0x01
33
#define AB8500_CH_USBCH_STAT1_REG 0x02
34
#define AB8500_CH_USBCH_STAT2_REG 0x03
35
#define AB8500_CH_FSM_STAT_REG 0x04
36
#define AB8500_CH_STAT_REG 0x05
37
38
/*
39
* Charger / control register offfsets
40
* Bank : 0x0B
41
*/
42
#define AB8500_CH_VOLT_LVL_REG 0x40
43
#define AB8500_CH_VOLT_LVL_MAX_REG 0x41
/*Only in Cut2.0*/
44
#define AB8500_CH_OPT_CRNTLVL_REG 0x42
45
#define AB8500_CH_OPT_CRNTLVL_MAX_REG 0x43
/*Only in Cut2.0*/
46
#define AB8500_CH_WD_TIMER_REG 0x50
47
#define AB8500_CHARG_WD_CTRL 0x51
48
#define AB8500_BTEMP_HIGH_TH 0x52
49
#define AB8500_LED_INDICATOR_PWM_CTRL 0x53
50
#define AB8500_LED_INDICATOR_PWM_DUTY 0x54
51
#define AB8500_BATT_OVV 0x55
52
#define AB8500_CHARGER_CTRL 0x56
53
#define AB8500_BAT_CTRL_CURRENT_SOURCE 0x60
/*Only in Cut2.0*/
54
55
/*
56
* Charger / main control register offsets
57
* Bank : 0x0B
58
*/
59
#define AB8500_MCH_CTRL1 0x80
60
#define AB8500_MCH_CTRL2 0x81
61
#define AB8500_MCH_IPT_CURLVL_REG 0x82
62
#define AB8500_CH_WD_REG 0x83
63
64
/*
65
* Charger / USB control register offsets
66
* Bank : 0x0B
67
*/
68
#define AB8500_USBCH_CTRL1_REG 0xC0
69
#define AB8500_USBCH_CTRL2_REG 0xC1
70
#define AB8500_USBCH_IPT_CRNTLVL_REG 0xC2
71
72
/*
73
* Gas Gauge register offsets
74
* Bank : 0x0C
75
*/
76
#define AB8500_GASG_CC_CTRL_REG 0x00
77
#define AB8500_GASG_CC_ACCU1_REG 0x01
78
#define AB8500_GASG_CC_ACCU2_REG 0x02
79
#define AB8500_GASG_CC_ACCU3_REG 0x03
80
#define AB8500_GASG_CC_ACCU4_REG 0x04
81
#define AB8500_GASG_CC_SMPL_CNTRL_REG 0x05
82
#define AB8500_GASG_CC_SMPL_CNTRH_REG 0x06
83
#define AB8500_GASG_CC_SMPL_CNVL_REG 0x07
84
#define AB8500_GASG_CC_SMPL_CNVH_REG 0x08
85
#define AB8500_GASG_CC_CNTR_AVGOFF_REG 0x09
86
#define AB8500_GASG_CC_OFFSET_REG 0x0A
87
#define AB8500_GASG_CC_NCOV_ACCU 0x10
88
#define AB8500_GASG_CC_NCOV_ACCU_CTRL 0x11
89
#define AB8500_GASG_CC_NCOV_ACCU_LOW 0x12
90
#define AB8500_GASG_CC_NCOV_ACCU_MED 0x13
91
#define AB8500_GASG_CC_NCOV_ACCU_HIGH 0x14
92
93
/*
94
* Interrupt register offsets
95
* Bank : 0x0E
96
*/
97
#define AB8500_IT_SOURCE2_REG 0x01
98
#define AB8500_IT_SOURCE21_REG 0x14
99
100
/*
101
* RTC register offsets
102
* Bank: 0x0F
103
*/
104
#define AB8500_RTC_BACKUP_CHG_REG 0x0C
105
#define AB8500_RTC_CC_CONF_REG 0x01
106
#define AB8500_RTC_CTRL_REG 0x0B
107
108
/*
109
* OTP register offsets
110
* Bank : 0x15
111
*/
112
#define AB8500_OTP_CONF_15 0x0E
113
114
/* GPADC constants from AB8500 spec, UM0836 */
115
#define ADC_RESOLUTION 1024
116
#define ADC_CH_MAIN_MIN 0
117
#define ADC_CH_MAIN_MAX 20030
118
#define ADC_CH_VBUS_MIN 0
119
#define ADC_CH_VBUS_MAX 20030
120
#define ADC_CH_VBAT_MIN 2300
121
#define ADC_CH_VBAT_MAX 4800
122
#define ADC_CH_BKBAT_MIN 0
123
#define ADC_CH_BKBAT_MAX 3200
124
125
/* Main charge i/p current */
126
#define MAIN_CH_IP_CUR_0P9A 0x80
127
#define MAIN_CH_IP_CUR_1P0A 0x90
128
#define MAIN_CH_IP_CUR_1P1A 0xA0
129
#define MAIN_CH_IP_CUR_1P2A 0xB0
130
#define MAIN_CH_IP_CUR_1P3A 0xC0
131
#define MAIN_CH_IP_CUR_1P4A 0xD0
132
#define MAIN_CH_IP_CUR_1P5A 0xE0
133
134
/* ChVoltLevel */
135
#define CH_VOL_LVL_3P5 0x00
136
#define CH_VOL_LVL_4P0 0x14
137
#define CH_VOL_LVL_4P05 0x16
138
#define CH_VOL_LVL_4P1 0x1B
139
#define CH_VOL_LVL_4P15 0x20
140
#define CH_VOL_LVL_4P2 0x25
141
#define CH_VOL_LVL_4P6 0x4D
142
143
/* ChOutputCurrentLevel */
144
#define CH_OP_CUR_LVL_0P1 0x00
145
#define CH_OP_CUR_LVL_0P2 0x01
146
#define CH_OP_CUR_LVL_0P3 0x02
147
#define CH_OP_CUR_LVL_0P4 0x03
148
#define CH_OP_CUR_LVL_0P5 0x04
149
#define CH_OP_CUR_LVL_0P6 0x05
150
#define CH_OP_CUR_LVL_0P7 0x06
151
#define CH_OP_CUR_LVL_0P8 0x07
152
#define CH_OP_CUR_LVL_0P9 0x08
153
#define CH_OP_CUR_LVL_1P4 0x0D
154
#define CH_OP_CUR_LVL_1P5 0x0E
155
#define CH_OP_CUR_LVL_1P6 0x0F
156
157
/* BTEMP High thermal limits */
158
#define BTEMP_HIGH_TH_57_0 0x00
159
#define BTEMP_HIGH_TH_52 0x01
160
#define BTEMP_HIGH_TH_57_1 0x02
161
#define BTEMP_HIGH_TH_62 0x03
162
163
/* current is mA */
164
#define USB_0P1A 100
165
#define USB_0P2A 200
166
#define USB_0P3A 300
167
#define USB_0P4A 400
168
#define USB_0P5A 500
169
170
#define LOW_BAT_3P1V 0x20
171
#define LOW_BAT_2P3V 0x00
172
#define LOW_BAT_RESET 0x01
173
#define LOW_BAT_ENABLE 0x01
174
175
/* Backup battery constants */
176
#define BUP_ICH_SEL_50UA 0x00
177
#define BUP_ICH_SEL_150UA 0x04
178
#define BUP_ICH_SEL_300UA 0x08
179
#define BUP_ICH_SEL_700UA 0x0C
180
181
#define BUP_VCH_SEL_2P5V 0x00
182
#define BUP_VCH_SEL_2P6V 0x01
183
#define BUP_VCH_SEL_2P8V 0x02
184
#define BUP_VCH_SEL_3P1V 0x03
185
186
/* Battery OVV constants */
187
#define BATT_OVV_ENA 0x02
188
#define BATT_OVV_TH_3P7 0x00
189
#define BATT_OVV_TH_4P75 0x01
190
191
/* A value to indicate over voltage */
192
#define BATT_OVV_VALUE 4750
193
194
/* VBUS OVV constants */
195
#define VBUS_OVV_SELECT_MASK 0x78
196
#define VBUS_OVV_SELECT_5P6V 0x00
197
#define VBUS_OVV_SELECT_5P7V 0x08
198
#define VBUS_OVV_SELECT_5P8V 0x10
199
#define VBUS_OVV_SELECT_5P9V 0x18
200
#define VBUS_OVV_SELECT_6P0V 0x20
201
#define VBUS_OVV_SELECT_6P1V 0x28
202
#define VBUS_OVV_SELECT_6P2V 0x30
203
#define VBUS_OVV_SELECT_6P3V 0x38
204
205
#define VBUS_AUTO_IN_CURR_LIM_ENA 0x04
206
207
/* Fuel Gauge constants */
208
#define RESET_ACCU 0x02
209
#define READ_REQ 0x01
210
#define CC_DEEP_SLEEP_ENA 0x02
211
#define CC_PWR_UP_ENA 0x01
212
#define CC_SAMPLES_40 0x28
213
#define RD_NCONV_ACCU_REQ 0x01
214
#define CC_CALIB 0x08
215
#define CC_INTAVGOFFSET_ENA 0x10
216
#define CC_MUXOFFSET 0x80
217
#define CC_INT_CAL_N_AVG_MASK 0x60
218
#define CC_INT_CAL_SAMPLES_16 0x40
219
#define CC_INT_CAL_SAMPLES_8 0x20
220
#define CC_INT_CAL_SAMPLES_4 0x00
221
222
/* RTC constants */
223
#define RTC_BUP_CH_ENA 0x10
224
225
/* BatCtrl Current Source Constants */
226
#define BAT_CTRL_7U_ENA 0x01
227
#define BAT_CTRL_20U_ENA 0x02
228
#define BAT_CTRL_CMP_ENA 0x04
229
#define FORCE_BAT_CTRL_CMP_HIGH 0x08
230
#define BAT_CTRL_PULL_UP_ENA 0x10
231
232
/* Battery type */
233
#define BATTERY_UNKNOWN 00
234
242
struct
res_to_temp
{
243
int
temp
;
244
int
resist
;
245
};
246
253
struct
batres_vs_temp
{
254
int
temp
;
255
int
resist
;
256
};
257
258
/* Forward declaration */
259
struct
ab8500_fg
;
260
284
struct
ab8500_fg_parameters
{
285
int
recovery_sleep_timer
;
286
int
recovery_total_time
;
287
int
init_timer
;
288
int
init_discard_time
;
289
int
init_total_time
;
290
int
high_curr_time
;
291
int
accu_charging
;
292
int
accu_high_curr
;
293
int
high_curr_threshold
;
294
int
lowbat_threshold
;
295
int
battok_falling_th_sel0
;
296
int
battok_raising_th_sel1
;
297
int
user_cap_limit
;
298
int
maint_thres
;
299
};
300
308
struct
ab8500_maxim_parameters
{
309
bool
ena_maxi
;
310
int
chg_curr
;
311
int
wait_cycles
;
312
int
charger_curr_step
;
313
};
314
323
struct
ab8500_bm_capacity_levels
{
324
int
critical
;
325
int
low
;
326
int
normal
;
327
int
high
;
328
int
full
;
329
};
330
338
struct
ab8500_bm_charger_parameters
{
339
int
usb_volt_max
;
340
int
usb_curr_max
;
341
int
ac_volt_max
;
342
int
ac_curr_max
;
343
};
344
374
struct
ab8500_bm_data
{
375
int
temp_under
;
376
int
temp_low
;
377
int
temp_high
;
378
int
temp_over
;
379
int
temp_interval_chg
;
380
int
temp_interval_nochg
;
381
int
main_safety_tmr_h
;
382
int
usb_safety_tmr_h
;
383
int
bkup_bat_v
;
384
int
bkup_bat_i
;
385
bool
no_maintenance
;
386
bool
chg_unknown_bat
;
387
bool
enable_overshoot
;
388
enum
abx500_adc_therm
adc_therm
;
389
int
fg_res
;
390
int
n_btypes
;
391
int
batt_id
;
392
int
interval_charging
;
393
int
interval_not_charging
;
394
int
temp_hysteresis
;
395
int
gnd_lift_resistance
;
396
const
struct
ab8500_maxim_parameters
*
maxi
;
397
const
struct
ab8500_bm_capacity_levels
*
cap_levels
;
398
const
struct
ab8500_bm_charger_parameters
*
chg_params
;
399
const
struct
ab8500_fg_parameters
*
fg_params
;
400
};
401
402
struct
ab8500_charger_platform_data
{
403
char
**
supplied_to
;
404
size_t
num_supplicants
;
405
bool
autopower_cfg
;
406
};
407
408
struct
ab8500_btemp_platform_data
{
409
char
**
supplied_to
;
410
size_t
num_supplicants
;
411
};
412
413
struct
ab8500_fg_platform_data
{
414
char
**
supplied_to
;
415
size_t
num_supplicants
;
416
};
417
418
struct
ab8500_chargalg_platform_data
{
419
char
**
supplied_to
;
420
size_t
num_supplicants
;
421
};
422
struct
ab8500_btemp
;
423
struct
ab8500_gpadc
;
424
struct
ab8500_fg
;
425
#ifdef CONFIG_AB8500_BM
426
void
ab8500_fg_reinit
(
void
);
427
void
ab8500_charger_usb_state_changed(
u8
bm_usb_state,
u16
mA);
428
struct
ab8500_btemp
*
ab8500_btemp_get
(
void
);
429
int
ab8500_btemp_get_batctrl_temp
(
struct
ab8500_btemp
*btemp);
430
struct
ab8500_fg
*
ab8500_fg_get
(
void
);
431
int
ab8500_fg_inst_curr_blocking
(
struct
ab8500_fg
*
dev
);
432
int
ab8500_fg_inst_curr_start
(
struct
ab8500_fg
*di);
433
int
ab8500_fg_inst_curr_finalize
(
struct
ab8500_fg
*di,
int
*
res
);
434
int
ab8500_fg_inst_curr_done
(
struct
ab8500_fg
*di);
435
436
#else
437
int
ab8500_fg_inst_curr_done
(
struct
ab8500_fg
*di)
438
{
439
}
440
static
void
ab8500_fg_reinit
(
void
)
441
{
442
}
443
static
void
ab8500_charger_usb_state_changed(
u8
bm_usb_state,
u16
mA)
444
{
445
}
446
static
struct
ab8500_btemp
*
ab8500_btemp_get
(
void
)
447
{
448
return
NULL
;
449
}
450
static
int
ab8500_btemp_get_batctrl_temp
(
struct
ab8500_btemp
*btemp)
451
{
452
return
0;
453
}
454
struct
ab8500_fg
*
ab8500_fg_get
(
void
)
455
{
456
return
NULL
;
457
}
458
static
int
ab8500_fg_inst_curr_blocking
(
struct
ab8500_fg
*
dev
)
459
{
460
return
-
ENODEV
;
461
}
462
463
static
inline
int
ab8500_fg_inst_curr_start
(
struct
ab8500_fg
*di)
464
{
465
return
-
ENODEV
;
466
}
467
468
static
inline
int
ab8500_fg_inst_curr_finalize
(
struct
ab8500_fg
*di,
int
*
res
)
469
{
470
return
-
ENODEV
;
471
}
472
473
#endif
474
#endif
/* _AB8500_BM_H */
Generated on Thu Jan 10 2013 14:51:52 for Linux Kernel by
1.8.2