drivers: power: report battery voltage in AOSP compatible format
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / mach / battery_common.h
1 #ifndef BATTERY_COMMON_H
2 #define BATTERY_COMMON_H
3
4 #include <linux/ioctl.h>
5 #include <mach/mt_typedefs.h>
6 #include "charging.h"
7
8
9 /*****************************************************************************
10 * BATTERY VOLTAGE
11 ****************************************************************************/
12 #define PRE_CHARGE_VOLTAGE 3200
13 #define SYSTEM_OFF_VOLTAGE 3400
14 #define CONSTANT_CURRENT_CHARGE_VOLTAGE 4100
15 #define CONSTANT_VOLTAGE_CHARGE_VOLTAGE 4200
16 #define CV_DROPDOWN_VOLTAGE 4000
17 #define CHARGER_THRESH_HOLD 4300
18 #define BATTERY_UVLO_VOLTAGE 2700
19
20 /*****************************************************************************
21 * BATTERY TIMER
22 ****************************************************************************/
23 /* #define MAX_CHARGING_TIME 1*60*60 // 1hr */
24 /* #define MAX_CHARGING_TIME 8*60*60 // 8hr */
25 /* #define MAX_CHARGING_TIME 12*60*60 // 12hr */
26 #define MAX_CHARGING_TIME 24*60*60 /* 24hr */
27
28 #define MAX_POSTFULL_SAFETY_TIME 1*30*60 /* 30mins */
29 #define MAX_PreCC_CHARGING_TIME 1*30*60 /* 0.5hr */
30
31 /* #define MAX_CV_CHARGING_TIME 1*30*60 // 0.5hr */
32 #define MAX_CV_CHARGING_TIME 3*60*60 /* 3hr */
33
34
35 #define MUTEX_TIMEOUT 5000
36 #define BAT_TASK_PERIOD 10 /* 10sec */
37 #define g_free_bat_temp 1000 /* 1 s */
38
39 /*****************************************************************************
40 * BATTERY Protection
41 ****************************************************************************/
42 #define Battery_Percent_100 100
43 #define charger_OVER_VOL 1
44 #define BATTERY_UNDER_VOL 2
45 #define BATTERY_OVER_TEMP 3
46 #define ADC_SAMPLE_TIMES 5
47
48 /*****************************************************************************
49 * Pulse Charging State
50 ****************************************************************************/
51 #define CHR_PRE 0x1000
52 #define CHR_CC 0x1001
53 #define CHR_TOP_OFF 0x1002
54 #define CHR_POST_FULL 0x1003
55 #define CHR_BATFULL 0x1004
56 #define CHR_ERROR 0x1005
57 #define CHR_HOLD 0x1006
58
59 /*****************************************************************************
60 * CallState
61 ****************************************************************************/
62 #define CALL_IDLE 0
63 #define CALL_ACTIVE 1
64
65 /*****************************************************************************
66 * Enum
67 ****************************************************************************/
68 typedef unsigned int WORD;
69
70
71 typedef enum {
72 PMU_STATUS_OK = 0,
73 PMU_STATUS_FAIL = 1,
74 } PMU_STATUS;
75
76
77 typedef enum {
78 USB_SUSPEND = 0,
79 USB_UNCONFIGURED,
80 USB_CONFIGURED
81 } usb_state_enum;
82
83 /*****************************************************************************
84 * JEITA battery temperature standard
85 charging info ,like temperatue, charging current, re-charging voltage, CV threshold would be reconfigurated.
86 Temperature hysteresis default 6C.
87 Reference table:
88 degree AC Current USB current CV threshold Recharge Vol hysteresis condition
89 > 60 no charging current, X X <54(Down)
90 45~60 600mA 450mA 4.1V 4V <39(Down) >60(Up)
91 10~45 600mA 450mA 4.2V 4.1V <10(Down) >45(Up)
92 0~10 600mA 450mA 4.1V 4V <0(Down) >16(Up)
93 -10~0 200mA 200mA 4V 3.9V <-10(Down) >6(Up)
94 <-10 no charging current, X X >-10(Up)
95 ****************************************************************************/
96 typedef enum {
97 TEMP_BELOW_NEG_10 = 0,
98 TEMP_NEG_10_TO_POS_0,
99 TEMP_POS_0_TO_POS_10,
100 TEMP_POS_10_TO_POS_45,
101 TEMP_POS_45_TO_POS_60,
102 TEMP_ABOVE_POS_60
103 } temp_state_enum;
104
105
106 #define TEMP_POS_60_THRESHOLD 50
107 #define TEMP_POS_60_THRES_MINUS_X_DEGREE 47
108
109 #define TEMP_POS_45_THRESHOLD 45
110 #define TEMP_POS_45_THRES_MINUS_X_DEGREE 39
111
112 #define TEMP_POS_10_THRESHOLD 10
113 #define TEMP_POS_10_THRES_PLUS_X_DEGREE 16
114
115 #define TEMP_POS_0_THRESHOLD 0
116 #define TEMP_POS_0_THRES_PLUS_X_DEGREE 6
117
118 #ifdef CONFIG_MTK_FAN5405_SUPPORT
119 #define TEMP_NEG_10_THRESHOLD 0
120 #define TEMP_NEG_10_THRES_PLUS_X_DEGREE 0
121 #elif defined(CONFIG_MTK_BQ24158_SUPPORT)
122 #define TEMP_NEG_10_THRESHOLD 0
123 #define TEMP_NEG_10_THRES_PLUS_X_DEGREE 0
124 #else
125 #define TEMP_NEG_10_THRESHOLD 0
126 #define TEMP_NEG_10_THRES_PLUS_X_DEGREE 0
127 #endif
128
129 /*****************************************************************************
130 * Normal battery temperature state
131 ****************************************************************************/
132 typedef enum {
133 TEMP_POS_LOW = 0,
134 TEMP_POS_NORMAL,
135 TEMP_POS_HIGH
136 } batt_temp_state_enum;
137
138 /*****************************************************************************
139 * structure
140 ****************************************************************************/
141 typedef struct {
142 kal_bool bat_exist;
143 kal_bool bat_full;
144 INT32 bat_charging_state;
145 UINT32 bat_vol;
146 kal_bool bat_in_recharging_state;
147 kal_uint32 Vsense;
148 kal_bool charger_exist;
149 UINT32 charger_vol;
150 INT32 charger_protect_status;
151 INT32 ICharging;
152 INT32 IBattery;
153 INT32 temperature;
154 INT32 temperatureR;
155 INT32 temperatureV;
156 UINT32 total_charging_time;
157 UINT32 PRE_charging_time;
158 UINT32 CC_charging_time;
159 UINT32 TOPOFF_charging_time;
160 UINT32 POSTFULL_charging_time;
161 UINT32 charger_type;
162 INT32 SOC;
163 INT32 UI_SOC;
164 UINT32 nPercent_ZCV;
165 UINT32 nPrecent_UI_SOC_check_point;
166 UINT32 ZCV;
167 } PMU_ChargerStruct;
168
169 /*****************************************************************************
170 * Extern Variable
171 ****************************************************************************/
172 extern PMU_ChargerStruct BMT_status;
173 extern CHARGING_CONTROL battery_charging_control;
174 extern kal_bool g_ftm_battery_flag;
175 extern int charging_level_data[1];
176 extern kal_bool g_call_state;
177 extern kal_bool g_charging_full_reset_bat_meter;
178 #if defined(CONFIG_MTK_PUMP_EXPRESS_SUPPORT) || defined(CONFIG_MTK_PUMP_EXPRESS_PLUS_SUPPORT)
179 extern kal_bool ta_check_chr_type;
180 extern kal_bool ta_cable_out_occur;
181 extern kal_bool is_ta_connect;
182 extern struct wake_lock TA_charger_suspend_lock;
183 #endif
184
185
186 /*****************************************************************************
187 * Extern Function
188 ****************************************************************************/
189 extern void charging_suspend_enable(void);
190 extern void charging_suspend_disable(void);
191 extern kal_bool bat_is_charger_exist(void);
192 extern kal_bool bat_is_charging_full(void);
193 extern kal_uint32 bat_get_ui_percentage(void);
194 extern kal_uint32 get_charging_setting_current(void);
195 extern kal_uint32 bat_is_recharging_phase(void);
196 extern void do_chrdet_int_task(void);
197 extern void set_usb_current_unlimited(bool enable);
198 extern bool get_usb_current_unlimited(void);
199 extern CHARGER_TYPE mt_get_charger_type(void);
200
201 #ifdef CONFIG_MTK_SMART_BATTERY
202 extern void wake_up_bat(void);
203 extern unsigned long BAT_Get_Battery_Voltage(int polling_mode);
204 extern void mt_battery_charging_algorithm(void);
205 #if defined(CONFIG_MTK_JEITA_STANDARD_SUPPORT)
206 extern PMU_STATUS do_jeita_state_machine(void);
207 #endif
208
209 #else
210
211 #define wake_up_bat() do {} while (0)
212 #define BAT_Get_Battery_Voltage(polling_mode) ({ 0; })
213
214 #endif
215
216 #ifdef CONFIG_MTK_POWER_EXT_DETECT
217 extern kal_bool bat_is_ext_power(void);
218 #endif
219
220
221
222 #endif /* #ifndef BATTERY_COMMON_H */