diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 19:09:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-30 19:09:02 -0400 |
commit | 919c840167ec93167e00ca817aa4627170419ebf (patch) | |
tree | 5162f6a39541f609a949c5d75c4fdaed523d20af /include/linux/mfd/abx500 | |
parent | a9d38a4f2da6c49a257253a9fdef7a6bcb0e0e4f (diff) | |
parent | 5cdd4d7fa5424f2018193a0c2af3bef9036c973e (diff) |
Merge tag 'for-v3.4-rc1' of git://git.infradead.org/battery-2.6
Pull battery updates from Anton Vorontsov:
"Various small bugfixes and enhancements, plus two new drivers:
- A quite complex ab8500 charger driver, submitted by Arun Murthy @
ST-Ericsson;
- Summit Microelectronics SMB347 Battery Charger, submitted by Bruce
E Robertson and Alan Cox @ Intel.
And that's all."
* tag 'for-v3.4-rc1' of git://git.infradead.org/battery-2.6: (36 commits)
max17042_battery: Clean up interrupt handling
Revert "max8998_charger: Include linux/module.h just once"
ab8500_fg: Fix some build warnings on x86_64
max17042_battery: Fix CHARGE_FULL representation.
max8998_charger: Include linux/module.h just once
power_supply: Convert i2c drivers to module_i2c_driver
lp8727_charger: Add MODULE_DEVICE_TABLE
charger-manager: Simplify charger_get_property(), get rid of a warning
charger-manager: Clean up for better readability
da9052-battery: Convert to use module_platform_driver
da9052-battery: Fix a memory leak when unload the module
da9052-battery: Add missing platform_set_drvdata
ab8500: Turn unneeded global symbols into local ones
ab8500_fg: Fix copy-paste error
ab8500_fg: Get rid of 'struct battery_type'
ab8500_fg: Get rid of 'struct v_to_cap'
ab8500_btemp: Get rid of 'enum adc_therm'
ab8500_charger: Convert to the new USB OTG calls
ab8500-btemp: AB8500 battery temperature driver
ab8500-fg: A8500 fuel gauge driver
...
Diffstat (limited to 'include/linux/mfd/abx500')
-rw-r--r-- | include/linux/mfd/abx500/ab8500-bm.h | 474 | ||||
-rw-r--r-- | include/linux/mfd/abx500/ux500_chargalg.h | 38 |
2 files changed, 512 insertions, 0 deletions
diff --git a/include/linux/mfd/abx500/ab8500-bm.h b/include/linux/mfd/abx500/ab8500-bm.h new file mode 100644 index 000000000000..44310c98ee6e --- /dev/null +++ b/include/linux/mfd/abx500/ab8500-bm.h | |||
@@ -0,0 +1,474 @@ | |||
1 | /* | ||
2 | * Copyright ST-Ericsson 2012. | ||
3 | * | ||
4 | * Author: Arun Murthy <arun.murthy@stericsson.com> | ||
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 | |||
235 | /** | ||
236 | * struct res_to_temp - defines one point in a temp to res curve. To | ||
237 | * be used in battery packs that combines the identification resistor with a | ||
238 | * NTC resistor. | ||
239 | * @temp: battery pack temperature in Celcius | ||
240 | * @resist: NTC resistor net total resistance | ||
241 | */ | ||
242 | struct res_to_temp { | ||
243 | int temp; | ||
244 | int resist; | ||
245 | }; | ||
246 | |||
247 | /** | ||
248 | * struct batres_vs_temp - defines one point in a temp vs battery internal | ||
249 | * resistance curve. | ||
250 | * @temp: battery pack temperature in Celcius | ||
251 | * @resist: battery internal reistance in mOhm | ||
252 | */ | ||
253 | struct batres_vs_temp { | ||
254 | int temp; | ||
255 | int resist; | ||
256 | }; | ||
257 | |||
258 | /* Forward declaration */ | ||
259 | struct ab8500_fg; | ||
260 | |||
261 | /** | ||
262 | * struct ab8500_fg_parameters - Fuel gauge algorithm parameters, in seconds | ||
263 | * if not specified | ||
264 | * @recovery_sleep_timer: Time between measurements while recovering | ||
265 | * @recovery_total_time: Total recovery time | ||
266 | * @init_timer: Measurement interval during startup | ||
267 | * @init_discard_time: Time we discard voltage measurement at startup | ||
268 | * @init_total_time: Total init time during startup | ||
269 | * @high_curr_time: Time current has to be high to go to recovery | ||
270 | * @accu_charging: FG accumulation time while charging | ||
271 | * @accu_high_curr: FG accumulation time in high current mode | ||
272 | * @high_curr_threshold: High current threshold, in mA | ||
273 | * @lowbat_threshold: Low battery threshold, in mV | ||
274 | * @battok_falling_th_sel0 Threshold in mV for battOk signal sel0 | ||
275 | * Resolution in 50 mV step. | ||
276 | * @battok_raising_th_sel1 Threshold in mV for battOk signal sel1 | ||
277 | * Resolution in 50 mV step. | ||
278 | * @user_cap_limit Capacity reported from user must be within this | ||
279 | * limit to be considered as sane, in percentage | ||
280 | * points. | ||
281 | * @maint_thres This is the threshold where we stop reporting | ||
282 | * battery full while in maintenance, in per cent | ||
283 | */ | ||
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 | |||
301 | /** | ||
302 | * struct ab8500_charger_maximization - struct used by the board config. | ||
303 | * @use_maxi: Enable maximization for this battery type | ||
304 | * @maxi_chg_curr: Maximum charger current allowed | ||
305 | * @maxi_wait_cycles: cycles to wait before setting charger current | ||
306 | * @charger_curr_step delta between two charger current settings (mA) | ||
307 | */ | ||
308 | struct ab8500_maxim_parameters { | ||
309 | bool ena_maxi; | ||
310 | int chg_curr; | ||
311 | int wait_cycles; | ||
312 | int charger_curr_step; | ||
313 | }; | ||
314 | |||
315 | /** | ||
316 | * struct ab8500_bm_capacity_levels - ab8500 capacity level data | ||
317 | * @critical: critical capacity level in percent | ||
318 | * @low: low capacity level in percent | ||
319 | * @normal: normal capacity level in percent | ||
320 | * @high: high capacity level in percent | ||
321 | * @full: full capacity level in percent | ||
322 | */ | ||
323 | struct ab8500_bm_capacity_levels { | ||
324 | int critical; | ||
325 | int low; | ||
326 | int normal; | ||
327 | int high; | ||
328 | int full; | ||
329 | }; | ||
330 | |||
331 | /** | ||
332 | * struct ab8500_bm_charger_parameters - Charger specific parameters | ||
333 | * @usb_volt_max: maximum allowed USB charger voltage in mV | ||
334 | * @usb_curr_max: maximum allowed USB charger current in mA | ||
335 | * @ac_volt_max: maximum allowed AC charger voltage in mV | ||
336 | * @ac_curr_max: maximum allowed AC charger current in mA | ||
337 | */ | ||
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 | |||
345 | /** | ||
346 | * struct ab8500_bm_data - ab8500 battery management data | ||
347 | * @temp_under under this temp, charging is stopped | ||
348 | * @temp_low between this temp and temp_under charging is reduced | ||
349 | * @temp_high between this temp and temp_over charging is reduced | ||
350 | * @temp_over over this temp, charging is stopped | ||
351 | * @temp_interval_chg temperature measurement interval in s when charging | ||
352 | * @temp_interval_nochg temperature measurement interval in s when not charging | ||
353 | * @main_safety_tmr_h safety timer for main charger | ||
354 | * @usb_safety_tmr_h safety timer for usb charger | ||
355 | * @bkup_bat_v voltage which we charge the backup battery with | ||
356 | * @bkup_bat_i current which we charge the backup battery with | ||
357 | * @no_maintenance indicates that maintenance charging is disabled | ||
358 | * @adc_therm placement of thermistor, batctrl or battemp adc | ||
359 | * @chg_unknown_bat flag to enable charging of unknown batteries | ||
360 | * @enable_overshoot flag to enable VBAT overshoot control | ||
361 | * @fg_res resistance of FG resistor in 0.1mOhm | ||
362 | * @n_btypes number of elements in array bat_type | ||
363 | * @batt_id index of the identified battery in array bat_type | ||
364 | * @interval_charging charge alg cycle period time when charging (sec) | ||
365 | * @interval_not_charging charge alg cycle period time when not charging (sec) | ||
366 | * @temp_hysteresis temperature hysteresis | ||
367 | * @gnd_lift_resistance Battery ground to phone ground resistance (mOhm) | ||
368 | * @maxi: maximization parameters | ||
369 | * @cap_levels capacity in percent for the different capacity levels | ||
370 | * @bat_type table of supported battery types | ||
371 | * @chg_params charger parameters | ||
372 | * @fg_params fuel gauge parameters | ||
373 | */ | ||
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 */ | ||
diff --git a/include/linux/mfd/abx500/ux500_chargalg.h b/include/linux/mfd/abx500/ux500_chargalg.h new file mode 100644 index 000000000000..9b07725750c9 --- /dev/null +++ b/include/linux/mfd/abx500/ux500_chargalg.h | |||
@@ -0,0 +1,38 @@ | |||
1 | /* | ||
2 | * Copyright (C) ST-Ericsson SA 2012 | ||
3 | * Author: Johan Gardsmark <johan.gardsmark@stericsson.com> for ST-Ericsson. | ||
4 | * License terms: GNU General Public License (GPL), version 2 | ||
5 | */ | ||
6 | |||
7 | #ifndef _UX500_CHARGALG_H | ||
8 | #define _UX500_CHARGALG_H | ||
9 | |||
10 | #include <linux/power_supply.h> | ||
11 | |||
12 | #define psy_to_ux500_charger(x) container_of((x), \ | ||
13 | struct ux500_charger, psy) | ||
14 | |||
15 | /* Forward declaration */ | ||
16 | struct ux500_charger; | ||
17 | |||
18 | struct ux500_charger_ops { | ||
19 | int (*enable) (struct ux500_charger *, int, int, int); | ||
20 | int (*kick_wd) (struct ux500_charger *); | ||
21 | int (*update_curr) (struct ux500_charger *, int); | ||
22 | }; | ||
23 | |||
24 | /** | ||
25 | * struct ux500_charger - power supply ux500 charger sub class | ||
26 | * @psy power supply base class | ||
27 | * @ops ux500 charger operations | ||
28 | * @max_out_volt maximum output charger voltage in mV | ||
29 | * @max_out_curr maximum output charger current in mA | ||
30 | */ | ||
31 | struct ux500_charger { | ||
32 | struct power_supply psy; | ||
33 | struct ux500_charger_ops ops; | ||
34 | int max_out_volt; | ||
35 | int max_out_curr; | ||
36 | }; | ||
37 | |||
38 | #endif | ||