1 #include <linux/export.h>
2 #include <linux/power_supply.h>
3 #include <linux/of.h>
4 #include <linux/mfd/abx500.h>
5 #include <linux/mfd/abx500/ab8500.h>
6 #include <linux/mfd/abx500/ab8500-bm.h>
7 
8 /*
9  * These are the defined batteries that uses a NTC and ID resistor placed
10  * inside of the battery pack.
11  * Note that the res_to_temp table must be strictly sorted by falling resistance
12  * values to work.
13  */
14 const struct abx500_res_to_temp ab8500_temp_tbl_a_thermistor[] = {
15 	{-5, 53407},
16 	{ 0, 48594},
17 	{ 5, 43804},
18 	{10, 39188},
19 	{15, 34870},
20 	{20, 30933},
21 	{25, 27422},
22 	{30, 24347},
23 	{35, 21694},
24 	{40, 19431},
25 	{45, 17517},
26 	{50, 15908},
27 	{55, 14561},
28 	{60, 13437},
29 	{65, 12500},
30 };
31 EXPORT_SYMBOL(ab8500_temp_tbl_a_thermistor);
32 
33 const int ab8500_temp_tbl_a_size = ARRAY_SIZE(ab8500_temp_tbl_a_thermistor);
34 EXPORT_SYMBOL(ab8500_temp_tbl_a_size);
35 
36 const struct abx500_res_to_temp ab8500_temp_tbl_b_thermistor[] = {
37 	{-5, 200000},
38 	{ 0, 159024},
39 	{ 5, 151921},
40 	{10, 144300},
41 	{15, 136424},
42 	{20, 128565},
43 	{25, 120978},
44 	{30, 113875},
45 	{35, 107397},
46 	{40, 101629},
47 	{45,  96592},
48 	{50,  92253},
49 	{55,  88569},
50 	{60,  85461},
51 	{65,  82869},
52 };
53 EXPORT_SYMBOL(ab8500_temp_tbl_b_thermistor);
54 
55 const int ab8500_temp_tbl_b_size = ARRAY_SIZE(ab8500_temp_tbl_b_thermistor);
56 EXPORT_SYMBOL(ab8500_temp_tbl_b_size);
57 
58 static const struct abx500_v_to_cap cap_tbl_a_thermistor[] = {
59 	{4171,	100},
60 	{4114,	 95},
61 	{4009,	 83},
62 	{3947,	 74},
63 	{3907,	 67},
64 	{3863,	 59},
65 	{3830,	 56},
66 	{3813,	 53},
67 	{3791,	 46},
68 	{3771,	 33},
69 	{3754,	 25},
70 	{3735,	 20},
71 	{3717,	 17},
72 	{3681,	 13},
73 	{3664,	  8},
74 	{3651,	  6},
75 	{3635,	  5},
76 	{3560,	  3},
77 	{3408,    1},
78 	{3247,	  0},
79 };
80 
81 static const struct abx500_v_to_cap cap_tbl_b_thermistor[] = {
82 	{4161,	100},
83 	{4124,	 98},
84 	{4044,	 90},
85 	{4003,	 85},
86 	{3966,	 80},
87 	{3933,	 75},
88 	{3888,	 67},
89 	{3849,	 60},
90 	{3813,	 55},
91 	{3787,	 47},
92 	{3772,	 30},
93 	{3751,	 25},
94 	{3718,	 20},
95 	{3681,	 16},
96 	{3660,	 14},
97 	{3589,	 10},
98 	{3546,	  7},
99 	{3495,	  4},
100 	{3404,	  2},
101 	{3250,	  0},
102 };
103 
104 static const struct abx500_v_to_cap cap_tbl[] = {
105 	{4186,	100},
106 	{4163,	 99},
107 	{4114,	 95},
108 	{4068,	 90},
109 	{3990,	 80},
110 	{3926,	 70},
111 	{3898,	 65},
112 	{3866,	 60},
113 	{3833,	 55},
114 	{3812,	 50},
115 	{3787,	 40},
116 	{3768,	 30},
117 	{3747,	 25},
118 	{3730,	 20},
119 	{3705,	 15},
120 	{3699,	 14},
121 	{3684,	 12},
122 	{3672,	  9},
123 	{3657,	  7},
124 	{3638,	  6},
125 	{3556,	  4},
126 	{3424,	  2},
127 	{3317,	  1},
128 	{3094,	  0},
129 };
130 
131 /*
132  * Note that the res_to_temp table must be strictly sorted by falling
133  * resistance values to work.
134  */
135 static const struct abx500_res_to_temp temp_tbl[] = {
136 	{-5, 214834},
137 	{ 0, 162943},
138 	{ 5, 124820},
139 	{10,  96520},
140 	{15,  75306},
141 	{20,  59254},
142 	{25,  47000},
143 	{30,  37566},
144 	{35,  30245},
145 	{40,  24520},
146 	{45,  20010},
147 	{50,  16432},
148 	{55,  13576},
149 	{60,  11280},
150 	{65,   9425},
151 };
152 
153 /*
154  * Note that the batres_vs_temp table must be strictly sorted by falling
155  * temperature values to work.
156  */
157 static const struct batres_vs_temp temp_to_batres_tbl_thermistor[] = {
158 	{ 40, 120},
159 	{ 30, 135},
160 	{ 20, 165},
161 	{ 10, 230},
162 	{ 00, 325},
163 	{-10, 445},
164 	{-20, 595},
165 };
166 
167 /*
168  * Note that the batres_vs_temp table must be strictly sorted by falling
169  * temperature values to work.
170  */
171 static const struct batres_vs_temp temp_to_batres_tbl_ext_thermistor[] = {
172 	{ 60, 300},
173 	{ 30, 300},
174 	{ 20, 300},
175 	{ 10, 300},
176 	{ 00, 300},
177 	{-10, 300},
178 	{-20, 300},
179 };
180 
181 /* battery resistance table for LI ION 9100 battery */
182 static const struct batres_vs_temp temp_to_batres_tbl_9100[] = {
183 	{ 60, 180},
184 	{ 30, 180},
185 	{ 20, 180},
186 	{ 10, 180},
187 	{ 00, 180},
188 	{-10, 180},
189 	{-20, 180},
190 };
191 
192 static struct abx500_battery_type bat_type_thermistor[] = {
193 	[BATTERY_UNKNOWN] = {
194 		/* First element always represent the UNKNOWN battery */
195 		.name = POWER_SUPPLY_TECHNOLOGY_UNKNOWN,
196 		.resis_high = 0,
197 		.resis_low = 0,
198 		.battery_resistance = 300,
199 		.charge_full_design = 612,
200 		.nominal_voltage = 3700,
201 		.termination_vol = 4050,
202 		.termination_curr = 200,
203 		.recharge_cap = 95,
204 		.normal_cur_lvl = 400,
205 		.normal_vol_lvl = 4100,
206 		.maint_a_cur_lvl = 400,
207 		.maint_a_vol_lvl = 4050,
208 		.maint_a_chg_timer_h = 60,
209 		.maint_b_cur_lvl = 400,
210 		.maint_b_vol_lvl = 4000,
211 		.maint_b_chg_timer_h = 200,
212 		.low_high_cur_lvl = 300,
213 		.low_high_vol_lvl = 4000,
214 		.n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
215 		.r_to_t_tbl = temp_tbl,
216 		.n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
217 		.v_to_cap_tbl = cap_tbl,
218 		.n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
219 		.batres_tbl = temp_to_batres_tbl_thermistor,
220 	},
221 	{
222 		.name = POWER_SUPPLY_TECHNOLOGY_LIPO,
223 		.resis_high = 53407,
224 		.resis_low = 12500,
225 		.battery_resistance = 300,
226 		.charge_full_design = 900,
227 		.nominal_voltage = 3600,
228 		.termination_vol = 4150,
229 		.termination_curr = 80,
230 		.recharge_cap = 95,
231 		.normal_cur_lvl = 700,
232 		.normal_vol_lvl = 4200,
233 		.maint_a_cur_lvl = 600,
234 		.maint_a_vol_lvl = 4150,
235 		.maint_a_chg_timer_h = 60,
236 		.maint_b_cur_lvl = 600,
237 		.maint_b_vol_lvl = 4100,
238 		.maint_b_chg_timer_h = 200,
239 		.low_high_cur_lvl = 300,
240 		.low_high_vol_lvl = 4000,
241 		.n_temp_tbl_elements = ARRAY_SIZE(ab8500_temp_tbl_a_thermistor),
242 		.r_to_t_tbl = ab8500_temp_tbl_a_thermistor,
243 		.n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl_a_thermistor),
244 		.v_to_cap_tbl = cap_tbl_a_thermistor,
245 		.n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
246 		.batres_tbl = temp_to_batres_tbl_thermistor,
247 
248 	},
249 	{
250 		.name = POWER_SUPPLY_TECHNOLOGY_LIPO,
251 		.resis_high = 200000,
252 		.resis_low = 82869,
253 		.battery_resistance = 300,
254 		.charge_full_design = 900,
255 		.nominal_voltage = 3600,
256 		.termination_vol = 4150,
257 		.termination_curr = 80,
258 		.recharge_cap = 95,
259 		.normal_cur_lvl = 700,
260 		.normal_vol_lvl = 4200,
261 		.maint_a_cur_lvl = 600,
262 		.maint_a_vol_lvl = 4150,
263 		.maint_a_chg_timer_h = 60,
264 		.maint_b_cur_lvl = 600,
265 		.maint_b_vol_lvl = 4100,
266 		.maint_b_chg_timer_h = 200,
267 		.low_high_cur_lvl = 300,
268 		.low_high_vol_lvl = 4000,
269 		.n_temp_tbl_elements = ARRAY_SIZE(ab8500_temp_tbl_b_thermistor),
270 		.r_to_t_tbl = ab8500_temp_tbl_b_thermistor,
271 		.n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl_b_thermistor),
272 		.v_to_cap_tbl = cap_tbl_b_thermistor,
273 		.n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
274 		.batres_tbl = temp_to_batres_tbl_thermistor,
275 	},
276 };
277 
278 static struct abx500_battery_type bat_type_ext_thermistor[] = {
279 	[BATTERY_UNKNOWN] = {
280 		/* First element always represent the UNKNOWN battery */
281 		.name = POWER_SUPPLY_TECHNOLOGY_UNKNOWN,
282 		.resis_high = 0,
283 		.resis_low = 0,
284 		.battery_resistance = 300,
285 		.charge_full_design = 612,
286 		.nominal_voltage = 3700,
287 		.termination_vol = 4050,
288 		.termination_curr = 200,
289 		.recharge_cap = 95,
290 		.normal_cur_lvl = 400,
291 		.normal_vol_lvl = 4100,
292 		.maint_a_cur_lvl = 400,
293 		.maint_a_vol_lvl = 4050,
294 		.maint_a_chg_timer_h = 60,
295 		.maint_b_cur_lvl = 400,
296 		.maint_b_vol_lvl = 4000,
297 		.maint_b_chg_timer_h = 200,
298 		.low_high_cur_lvl = 300,
299 		.low_high_vol_lvl = 4000,
300 		.n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
301 		.r_to_t_tbl = temp_tbl,
302 		.n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
303 		.v_to_cap_tbl = cap_tbl,
304 		.n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
305 		.batres_tbl = temp_to_batres_tbl_thermistor,
306 	},
307 /*
308  * These are the batteries that doesn't have an internal NTC resistor to measure
309  * its temperature. The temperature in this case is measure with a NTC placed
310  * near the battery but on the PCB.
311  */
312 	{
313 		.name = POWER_SUPPLY_TECHNOLOGY_LIPO,
314 		.resis_high = 76000,
315 		.resis_low = 53000,
316 		.battery_resistance = 300,
317 		.charge_full_design = 900,
318 		.nominal_voltage = 3700,
319 		.termination_vol = 4150,
320 		.termination_curr = 100,
321 		.recharge_cap = 95,
322 		.normal_cur_lvl = 700,
323 		.normal_vol_lvl = 4200,
324 		.maint_a_cur_lvl = 600,
325 		.maint_a_vol_lvl = 4150,
326 		.maint_a_chg_timer_h = 60,
327 		.maint_b_cur_lvl = 600,
328 		.maint_b_vol_lvl = 4100,
329 		.maint_b_chg_timer_h = 200,
330 		.low_high_cur_lvl = 300,
331 		.low_high_vol_lvl = 4000,
332 		.n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
333 		.r_to_t_tbl = temp_tbl,
334 		.n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
335 		.v_to_cap_tbl = cap_tbl,
336 		.n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
337 		.batres_tbl = temp_to_batres_tbl_thermistor,
338 	},
339 	{
340 		.name = POWER_SUPPLY_TECHNOLOGY_LION,
341 		.resis_high = 30000,
342 		.resis_low = 10000,
343 		.battery_resistance = 300,
344 		.charge_full_design = 950,
345 		.nominal_voltage = 3700,
346 		.termination_vol = 4150,
347 		.termination_curr = 100,
348 		.recharge_cap = 95,
349 		.normal_cur_lvl = 700,
350 		.normal_vol_lvl = 4200,
351 		.maint_a_cur_lvl = 600,
352 		.maint_a_vol_lvl = 4150,
353 		.maint_a_chg_timer_h = 60,
354 		.maint_b_cur_lvl = 600,
355 		.maint_b_vol_lvl = 4100,
356 		.maint_b_chg_timer_h = 200,
357 		.low_high_cur_lvl = 300,
358 		.low_high_vol_lvl = 4000,
359 		.n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
360 		.r_to_t_tbl = temp_tbl,
361 		.n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
362 		.v_to_cap_tbl = cap_tbl,
363 		.n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
364 		.batres_tbl = temp_to_batres_tbl_thermistor,
365 	},
366 	{
367 		.name = POWER_SUPPLY_TECHNOLOGY_LION,
368 		.resis_high = 95000,
369 		.resis_low = 76001,
370 		.battery_resistance = 300,
371 		.charge_full_design = 950,
372 		.nominal_voltage = 3700,
373 		.termination_vol = 4150,
374 		.termination_curr = 100,
375 		.recharge_cap = 95,
376 		.normal_cur_lvl = 700,
377 		.normal_vol_lvl = 4200,
378 		.maint_a_cur_lvl = 600,
379 		.maint_a_vol_lvl = 4150,
380 		.maint_a_chg_timer_h = 60,
381 		.maint_b_cur_lvl = 600,
382 		.maint_b_vol_lvl = 4100,
383 		.maint_b_chg_timer_h = 200,
384 		.low_high_cur_lvl = 300,
385 		.low_high_vol_lvl = 4000,
386 		.n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
387 		.r_to_t_tbl = temp_tbl,
388 		.n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
389 		.v_to_cap_tbl = cap_tbl,
390 		.n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
391 		.batres_tbl = temp_to_batres_tbl_thermistor,
392 	},
393 };
394 
395 static const struct abx500_bm_capacity_levels cap_levels = {
396 	.critical	= 2,
397 	.low		= 10,
398 	.normal		= 70,
399 	.high		= 95,
400 	.full		= 100,
401 };
402 
403 static const struct abx500_fg_parameters fg = {
404 	.recovery_sleep_timer = 10,
405 	.recovery_total_time = 100,
406 	.init_timer = 1,
407 	.init_discard_time = 5,
408 	.init_total_time = 40,
409 	.high_curr_time = 60,
410 	.accu_charging = 30,
411 	.accu_high_curr = 30,
412 	.high_curr_threshold = 50,
413 	.lowbat_threshold = 3100,
414 	.battok_falling_th_sel0 = 2860,
415 	.battok_raising_th_sel1 = 2860,
416 	.maint_thres = 95,
417 	.user_cap_limit = 15,
418 	.pcut_enable = 1,
419 	.pcut_max_time = 127,
420 	.pcut_flag_time = 112,
421 	.pcut_max_restart = 15,
422 	.pcut_debounce_time = 2,
423 };
424 
425 static const struct abx500_maxim_parameters ab8500_maxi_params = {
426 	.ena_maxi = true,
427 	.chg_curr = 910,
428 	.wait_cycles = 10,
429 	.charger_curr_step = 100,
430 };
431 
432 static const struct abx500_maxim_parameters abx540_maxi_params = {
433 	.ena_maxi = true,
434 	.chg_curr = 3000,
435 	.wait_cycles = 10,
436 	.charger_curr_step = 200,
437 };
438 
439 static const struct abx500_bm_charger_parameters chg = {
440 	.usb_volt_max		= 5500,
441 	.usb_curr_max		= 1500,
442 	.ac_volt_max		= 7500,
443 	.ac_curr_max		= 1500,
444 };
445 
446 /*
447  * This array maps the raw hex value to charger output current used by the
448  * AB8500 values
449  */
450 static int ab8500_charge_output_curr_map[] = {
451         100,    200,    300,    400,    500,    600,    700,    800,
452         900,    1000,   1100,   1200,   1300,   1400,   1500,   1500,
453 };
454 
455 static int ab8540_charge_output_curr_map[] = {
456         0,      0,      0,      75,     100,    125,    150,    175,
457         200,    225,    250,    275,    300,    325,    350,    375,
458         400,    425,    450,    475,    500,    525,    550,    575,
459         600,    625,    650,    675,    700,    725,    750,    775,
460         800,    825,    850,    875,    900,    925,    950,    975,
461         1000,   1025,   1050,   1075,   1100,   1125,   1150,   1175,
462         1200,   1225,   1250,   1275,   1300,   1325,   1350,   1375,
463         1400,   1425,   1450,   1500,   1600,   1700,   1900,   2000,
464 };
465 
466 /*
467  * This array maps the raw hex value to charger input current used by the
468  * AB8500 values
469  */
470 static int ab8500_charge_input_curr_map[] = {
471         50,     98,     193,    290,    380,    450,    500,    600,
472         700,    800,    900,    1000,   1100,   1300,   1400,   1500,
473 };
474 
475 static int ab8540_charge_input_curr_map[] = {
476         25,     50,     75,     100,    125,    150,    175,    200,
477         225,    250,    275,    300,    325,    350,    375,    400,
478         425,    450,    475,    500,    525,    550,    575,    600,
479         625,    650,    675,    700,    725,    750,    775,    800,
480         825,    850,    875,    900,    925,    950,    975,    1000,
481         1025,   1050,   1075,   1100,   1125,   1150,   1175,   1200,
482         1225,   1250,   1275,   1300,   1325,   1350,   1375,   1400,
483         1425,   1450,   1475,   1500,   1500,   1500,   1500,   1500,
484 };
485 
486 struct abx500_bm_data ab8500_bm_data = {
487 	.temp_under             = 3,
488 	.temp_low               = 8,
489 	.temp_high              = 43,
490 	.temp_over              = 48,
491 	.main_safety_tmr_h      = 4,
492 	.temp_interval_chg      = 20,
493 	.temp_interval_nochg    = 120,
494 	.usb_safety_tmr_h       = 4,
495 	.bkup_bat_v             = BUP_VCH_SEL_2P6V,
496 	.bkup_bat_i             = BUP_ICH_SEL_150UA,
497 	.no_maintenance         = false,
498 	.capacity_scaling       = false,
499 	.adc_therm              = ABx500_ADC_THERM_BATCTRL,
500 	.chg_unknown_bat        = false,
501 	.enable_overshoot       = false,
502 	.fg_res                 = 100,
503 	.cap_levels             = &cap_levels,
504 	.bat_type               = bat_type_thermistor,
505 	.n_btypes               = ARRAY_SIZE(bat_type_thermistor),
506 	.batt_id                = 0,
507 	.interval_charging      = 5,
508 	.interval_not_charging  = 120,
509 	.temp_hysteresis        = 3,
510 	.gnd_lift_resistance    = 34,
511 	.chg_output_curr        = ab8500_charge_output_curr_map,
512 	.n_chg_out_curr         = ARRAY_SIZE(ab8500_charge_output_curr_map),
513 	.maxi                   = &ab8500_maxi_params,
514 	.chg_params             = &chg,
515 	.fg_params              = &fg,
516         .chg_input_curr         = ab8500_charge_input_curr_map,
517         .n_chg_in_curr          = ARRAY_SIZE(ab8500_charge_input_curr_map),
518 };
519 
520 struct abx500_bm_data ab8540_bm_data = {
521         .temp_under             = 3,
522         .temp_low               = 8,
523         .temp_high              = 43,
524         .temp_over              = 48,
525         .main_safety_tmr_h      = 4,
526         .temp_interval_chg      = 20,
527         .temp_interval_nochg    = 120,
528         .usb_safety_tmr_h       = 4,
529         .bkup_bat_v             = BUP_VCH_SEL_2P6V,
530         .bkup_bat_i             = BUP_ICH_SEL_150UA,
531         .no_maintenance         = false,
532         .capacity_scaling       = false,
533         .adc_therm              = ABx500_ADC_THERM_BATCTRL,
534         .chg_unknown_bat        = false,
535         .enable_overshoot       = false,
536         .fg_res                 = 100,
537         .cap_levels             = &cap_levels,
538         .bat_type               = bat_type_thermistor,
539         .n_btypes               = ARRAY_SIZE(bat_type_thermistor),
540         .batt_id                = 0,
541         .interval_charging      = 5,
542         .interval_not_charging  = 120,
543         .temp_hysteresis        = 3,
544         .gnd_lift_resistance    = 0,
545         .maxi                   = &abx540_maxi_params,
546         .chg_params             = &chg,
547         .fg_params              = &fg,
548         .chg_output_curr        = ab8540_charge_output_curr_map,
549         .n_chg_out_curr         = ARRAY_SIZE(ab8540_charge_output_curr_map),
550         .chg_input_curr         = ab8540_charge_input_curr_map,
551         .n_chg_in_curr          = ARRAY_SIZE(ab8540_charge_input_curr_map),
552 };
553 
554 int ab8500_bm_of_probe(struct device *dev,
555 		       struct device_node *np,
556 		       struct abx500_bm_data *bm)
557 {
558 	const struct batres_vs_temp *tmp_batres_tbl;
559 	struct device_node *battery_node;
560 	const char *btech;
561 	int i;
562 
563 	/* get phandle to 'battery-info' node */
564 	battery_node = of_parse_phandle(np, "battery", 0);
565 	if (!battery_node) {
566 		dev_err(dev, "battery node or reference missing\n");
567 		return -EINVAL;
568 	}
569 
570 	btech = of_get_property(battery_node, "stericsson,battery-type", NULL);
571 	if (!btech) {
572 		dev_warn(dev, "missing property battery-name/type\n");
573 		return -EINVAL;
574 	}
575 
576 	if (strncmp(btech, "LION", 4) == 0) {
577 		bm->no_maintenance  = true;
578 		bm->chg_unknown_bat = true;
579 		bm->bat_type[BATTERY_UNKNOWN].charge_full_design = 2600;
580 		bm->bat_type[BATTERY_UNKNOWN].termination_vol    = 4150;
581 		bm->bat_type[BATTERY_UNKNOWN].recharge_cap       = 95;
582 		bm->bat_type[BATTERY_UNKNOWN].normal_cur_lvl     = 520;
583 		bm->bat_type[BATTERY_UNKNOWN].normal_vol_lvl     = 4200;
584 	}
585 
586 	if (of_property_read_bool(battery_node, "thermistor-on-batctrl")) {
587 		if (strncmp(btech, "LION", 4) == 0)
588 			tmp_batres_tbl = temp_to_batres_tbl_9100;
589 		else
590 			tmp_batres_tbl = temp_to_batres_tbl_thermistor;
591 	} else {
592 		bm->n_btypes   = 4;
593 		bm->bat_type   = bat_type_ext_thermistor;
594 		bm->adc_therm  = ABx500_ADC_THERM_BATTEMP;
595 		tmp_batres_tbl = temp_to_batres_tbl_ext_thermistor;
596 	}
597 
598 	/* select the battery resolution table */
599 	for (i = 0; i < bm->n_btypes; ++i)
600 		bm->bat_type[i].batres_tbl = tmp_batres_tbl;
601 
602 	of_node_put(battery_node);
603 
604 	return 0;
605 }
606