aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/power/ab8500_bmdata.c6
-rw-r--r--drivers/power/ab8500_btemp.c60
-rw-r--r--drivers/power/ab8500_charger.c24
-rw-r--r--drivers/power/ab8500_fg.c96
-rw-r--r--drivers/power/abx500_chargalg.c112
-rw-r--r--include/linux/mfd/abx500.h6
6 files changed, 152 insertions, 152 deletions
diff --git a/drivers/power/ab8500_bmdata.c b/drivers/power/ab8500_bmdata.c
index df5a590d760e..c2fb2c554019 100644
--- a/drivers/power/ab8500_bmdata.c
+++ b/drivers/power/ab8500_bmdata.c
@@ -452,9 +452,9 @@ struct abx500_bm_data ab8500_bm_data = {
452 .fg_params = &fg, 452 .fg_params = &fg,
453}; 453};
454 454
455int __devinit bmdevs_of_probe(struct device *dev, 455int __devinit ab8500_bm_of_probe(struct device *dev,
456 struct device_node *np, 456 struct device_node *np,
457 struct abx500_bm_data **battery) 457 struct abx500_bm_data **battery)
458{ 458{
459 struct batres_vs_temp *tmp_batres_tbl; 459 struct batres_vs_temp *tmp_batres_tbl;
460 struct device_node *np_bat_supply; 460 struct device_node *np_bat_supply;
diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/ab8500_btemp.c
index 5d1bf0bd6fa5..33ed0fccbd0e 100644
--- a/drivers/power/ab8500_btemp.c
+++ b/drivers/power/ab8500_btemp.c
@@ -78,7 +78,7 @@ struct ab8500_btemp_ranges {
78 * @parent: Pointer to the struct ab8500 78 * @parent: Pointer to the struct ab8500
79 * @gpadc: Pointer to the struct gpadc 79 * @gpadc: Pointer to the struct gpadc
80 * @fg: Pointer to the struct fg 80 * @fg: Pointer to the struct fg
81 * @bat: Pointer to the abx500_bm platform data 81 * @bm: Platform specific battery management information
82 * @btemp_psy: Structure for BTEMP specific battery properties 82 * @btemp_psy: Structure for BTEMP specific battery properties
83 * @events: Structure for information about events triggered 83 * @events: Structure for information about events triggered
84 * @btemp_ranges: Battery temperature range structure 84 * @btemp_ranges: Battery temperature range structure
@@ -95,7 +95,7 @@ struct ab8500_btemp {
95 struct ab8500 *parent; 95 struct ab8500 *parent;
96 struct ab8500_gpadc *gpadc; 96 struct ab8500_gpadc *gpadc;
97 struct ab8500_fg *fg; 97 struct ab8500_fg *fg;
98 struct abx500_bm_data *bat; 98 struct abx500_bm_data *bm;
99 struct power_supply btemp_psy; 99 struct power_supply btemp_psy;
100 struct ab8500_btemp_events events; 100 struct ab8500_btemp_events events;
101 struct ab8500_btemp_ranges btemp_ranges; 101 struct ab8500_btemp_ranges btemp_ranges;
@@ -149,13 +149,13 @@ static int ab8500_btemp_batctrl_volt_to_res(struct ab8500_btemp *di,
149 return (450000 * (v_batctrl)) / (1800 - v_batctrl); 149 return (450000 * (v_batctrl)) / (1800 - v_batctrl);
150 } 150 }
151 151
152 if (di->bat->adc_therm == ABx500_ADC_THERM_BATCTRL) { 152 if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL) {
153 /* 153 /*
154 * If the battery has internal NTC, we use the current 154 * If the battery has internal NTC, we use the current
155 * source to calculate the resistance, 7uA or 20uA 155 * source to calculate the resistance, 7uA or 20uA
156 */ 156 */
157 rbs = (v_batctrl * 1000 157 rbs = (v_batctrl * 1000
158 - di->bat->gnd_lift_resistance * inst_curr) 158 - di->bm->gnd_lift_resistance * inst_curr)
159 / di->curr_source; 159 / di->curr_source;
160 } else { 160 } else {
161 /* 161 /*
@@ -211,7 +211,7 @@ static int ab8500_btemp_curr_source_enable(struct ab8500_btemp *di,
211 return 0; 211 return 0;
212 212
213 /* Only do this for batteries with internal NTC */ 213 /* Only do this for batteries with internal NTC */
214 if (di->bat->adc_therm == ABx500_ADC_THERM_BATCTRL && enable) { 214 if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL && enable) {
215 if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_7UA) 215 if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_7UA)
216 curr = BAT_CTRL_7U_ENA; 216 curr = BAT_CTRL_7U_ENA;
217 else 217 else
@@ -243,7 +243,7 @@ static int ab8500_btemp_curr_source_enable(struct ab8500_btemp *di,
243 __func__); 243 __func__);
244 goto disable_curr_source; 244 goto disable_curr_source;
245 } 245 }
246 } else if (di->bat->adc_therm == ABx500_ADC_THERM_BATCTRL && !enable) { 246 } else if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL && !enable) {
247 dev_dbg(di->dev, "Disable BATCTRL curr source\n"); 247 dev_dbg(di->dev, "Disable BATCTRL curr source\n");
248 248
249 /* Write 0 to the curr bits */ 249 /* Write 0 to the curr bits */
@@ -459,9 +459,9 @@ static int ab8500_btemp_measure_temp(struct ab8500_btemp *di)
459 int rbat, rntc, vntc; 459 int rbat, rntc, vntc;
460 u8 id; 460 u8 id;
461 461
462 id = di->bat->batt_id; 462 id = di->bm->batt_id;
463 463
464 if (di->bat->adc_therm == ABx500_ADC_THERM_BATCTRL && 464 if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL &&
465 id != BATTERY_UNKNOWN) { 465 id != BATTERY_UNKNOWN) {
466 466
467 rbat = ab8500_btemp_get_batctrl_res(di); 467 rbat = ab8500_btemp_get_batctrl_res(di);
@@ -476,8 +476,8 @@ static int ab8500_btemp_measure_temp(struct ab8500_btemp *di)
476 } 476 }
477 477
478 temp = ab8500_btemp_res_to_temp(di, 478 temp = ab8500_btemp_res_to_temp(di,
479 di->bat->bat_type[id].r_to_t_tbl, 479 di->bm->bat_type[id].r_to_t_tbl,
480 di->bat->bat_type[id].n_temp_tbl_elements, rbat); 480 di->bm->bat_type[id].n_temp_tbl_elements, rbat);
481 } else { 481 } else {
482 vntc = ab8500_gpadc_convert(di->gpadc, BTEMP_BALL); 482 vntc = ab8500_gpadc_convert(di->gpadc, BTEMP_BALL);
483 if (vntc < 0) { 483 if (vntc < 0) {
@@ -493,8 +493,8 @@ static int ab8500_btemp_measure_temp(struct ab8500_btemp *di)
493 rntc = 230000 * vntc / (VTVOUT_V - vntc); 493 rntc = 230000 * vntc / (VTVOUT_V - vntc);
494 494
495 temp = ab8500_btemp_res_to_temp(di, 495 temp = ab8500_btemp_res_to_temp(di,
496 di->bat->bat_type[id].r_to_t_tbl, 496 di->bm->bat_type[id].r_to_t_tbl,
497 di->bat->bat_type[id].n_temp_tbl_elements, rntc); 497 di->bm->bat_type[id].n_temp_tbl_elements, rntc);
498 prev = temp; 498 prev = temp;
499 } 499 }
500 dev_dbg(di->dev, "Battery temperature is %d\n", temp); 500 dev_dbg(di->dev, "Battery temperature is %d\n", temp);
@@ -515,7 +515,7 @@ static int ab8500_btemp_id(struct ab8500_btemp *di)
515 u8 i; 515 u8 i;
516 516
517 di->curr_source = BTEMP_BATCTRL_CURR_SRC_7UA; 517 di->curr_source = BTEMP_BATCTRL_CURR_SRC_7UA;
518 di->bat->batt_id = BATTERY_UNKNOWN; 518 di->bm->batt_id = BATTERY_UNKNOWN;
519 519
520 res = ab8500_btemp_get_batctrl_res(di); 520 res = ab8500_btemp_get_batctrl_res(di);
521 if (res < 0) { 521 if (res < 0) {
@@ -524,23 +524,23 @@ static int ab8500_btemp_id(struct ab8500_btemp *di)
524 } 524 }
525 525
526 /* BATTERY_UNKNOWN is defined on position 0, skip it! */ 526 /* BATTERY_UNKNOWN is defined on position 0, skip it! */
527 for (i = BATTERY_UNKNOWN + 1; i < di->bat->n_btypes; i++) { 527 for (i = BATTERY_UNKNOWN + 1; i < di->bm->n_btypes; i++) {
528 if ((res <= di->bat->bat_type[i].resis_high) && 528 if ((res <= di->bm->bat_type[i].resis_high) &&
529 (res >= di->bat->bat_type[i].resis_low)) { 529 (res >= di->bm->bat_type[i].resis_low)) {
530 dev_dbg(di->dev, "Battery detected on %s" 530 dev_dbg(di->dev, "Battery detected on %s"
531 " low %d < res %d < high: %d" 531 " low %d < res %d < high: %d"
532 " index: %d\n", 532 " index: %d\n",
533 di->bat->adc_therm == ABx500_ADC_THERM_BATCTRL ? 533 di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL ?
534 "BATCTRL" : "BATTEMP", 534 "BATCTRL" : "BATTEMP",
535 di->bat->bat_type[i].resis_low, res, 535 di->bm->bat_type[i].resis_low, res,
536 di->bat->bat_type[i].resis_high, i); 536 di->bm->bat_type[i].resis_high, i);
537 537
538 di->bat->batt_id = i; 538 di->bm->batt_id = i;
539 break; 539 break;
540 } 540 }
541 } 541 }
542 542
543 if (di->bat->batt_id == BATTERY_UNKNOWN) { 543 if (di->bm->batt_id == BATTERY_UNKNOWN) {
544 dev_warn(di->dev, "Battery identified as unknown" 544 dev_warn(di->dev, "Battery identified as unknown"
545 ", resistance %d Ohm\n", res); 545 ", resistance %d Ohm\n", res);
546 return -ENXIO; 546 return -ENXIO;
@@ -550,13 +550,13 @@ static int ab8500_btemp_id(struct ab8500_btemp *di)
550 * We only have to change current source if the 550 * We only have to change current source if the
551 * detected type is Type 1, else we use the 7uA source 551 * detected type is Type 1, else we use the 7uA source
552 */ 552 */
553 if (di->bat->adc_therm == ABx500_ADC_THERM_BATCTRL && 553 if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL &&
554 di->bat->batt_id == 1) { 554 di->bm->batt_id == 1) {
555 dev_dbg(di->dev, "Set BATCTRL current source to 20uA\n"); 555 dev_dbg(di->dev, "Set BATCTRL current source to 20uA\n");
556 di->curr_source = BTEMP_BATCTRL_CURR_SRC_20UA; 556 di->curr_source = BTEMP_BATCTRL_CURR_SRC_20UA;
557 } 557 }
558 558
559 return di->bat->batt_id; 559 return di->bm->batt_id;
560} 560}
561 561
562/** 562/**
@@ -586,9 +586,9 @@ static void ab8500_btemp_periodic_work(struct work_struct *work)
586 } 586 }
587 587
588 if (di->events.ac_conn || di->events.usb_conn) 588 if (di->events.ac_conn || di->events.usb_conn)
589 interval = di->bat->temp_interval_chg; 589 interval = di->bm->temp_interval_chg;
590 else 590 else
591 interval = di->bat->temp_interval_nochg; 591 interval = di->bm->temp_interval_nochg;
592 592
593 /* Schedule a new measurement */ 593 /* Schedule a new measurement */
594 queue_delayed_work(di->btemp_wq, 594 queue_delayed_work(di->btemp_wq,
@@ -815,7 +815,7 @@ static int ab8500_btemp_get_property(struct power_supply *psy,
815 val->intval = 1; 815 val->intval = 1;
816 break; 816 break;
817 case POWER_SUPPLY_PROP_TECHNOLOGY: 817 case POWER_SUPPLY_PROP_TECHNOLOGY:
818 val->intval = di->bat->bat_type[di->bat->batt_id].name; 818 val->intval = di->bm->bat_type[di->bm->batt_id].name;
819 break; 819 break;
820 case POWER_SUPPLY_PROP_TEMP: 820 case POWER_SUPPLY_PROP_TEMP:
821 val->intval = ab8500_btemp_get_temp(di); 821 val->intval = ab8500_btemp_get_temp(di);
@@ -985,10 +985,10 @@ static int __devinit ab8500_btemp_probe(struct platform_device *pdev)
985 dev_err(&pdev->dev, "%s no mem for ab8500_btemp\n", __func__); 985 dev_err(&pdev->dev, "%s no mem for ab8500_btemp\n", __func__);
986 return -ENOMEM; 986 return -ENOMEM;
987 } 987 }
988 di->bat = pdev->mfd_cell->platform_data; 988 di->bm = pdev->mfd_cell->platform_data;
989 if (!di->bat) { 989 if (!di->bm) {
990 if (np) { 990 if (np) {
991 ret = bmdevs_of_probe(&pdev->dev, np, &di->bat); 991 ret = ab8500_bm_of_probe(&pdev->dev, np, &di->bm);
992 if (ret) { 992 if (ret) {
993 dev_err(&pdev->dev, 993 dev_err(&pdev->dev,
994 "failed to get battery information\n"); 994 "failed to get battery information\n");
diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c
index d27dd7fec163..21dc8422778d 100644
--- a/drivers/power/ab8500_charger.c
+++ b/drivers/power/ab8500_charger.c
@@ -189,7 +189,7 @@ struct ab8500_charger_usb_state {
189 * @autopower_cfg platform specific power config support for "pwron after pwrloss" 189 * @autopower_cfg platform specific power config support for "pwron after pwrloss"
190 * @parent: Pointer to the struct ab8500 190 * @parent: Pointer to the struct ab8500
191 * @gpadc: Pointer to the struct gpadc 191 * @gpadc: Pointer to the struct gpadc
192 * @bat: Pointer to the abx500_bm platform data 192 * @bm: Platform specific battery management information
193 * @flags: Structure for information about events triggered 193 * @flags: Structure for information about events triggered
194 * @usb_state: Structure for usb stack information 194 * @usb_state: Structure for usb stack information
195 * @ac_chg: AC charger power supply 195 * @ac_chg: AC charger power supply
@@ -226,7 +226,7 @@ struct ab8500_charger {
226 bool autopower_cfg; 226 bool autopower_cfg;
227 struct ab8500 *parent; 227 struct ab8500 *parent;
228 struct ab8500_gpadc *gpadc; 228 struct ab8500_gpadc *gpadc;
229 struct abx500_bm_data *bat; 229 struct abx500_bm_data *bm;
230 struct ab8500_charger_event_flags flags; 230 struct ab8500_charger_event_flags flags;
231 struct ab8500_charger_usb_state usb_state; 231 struct ab8500_charger_usb_state usb_state;
232 struct ux500_charger ac_chg; 232 struct ux500_charger ac_chg;
@@ -1034,7 +1034,7 @@ static int ab8500_charger_set_vbus_in_curr(struct ab8500_charger *di,
1034 int min_value; 1034 int min_value;
1035 1035
1036 /* We should always use to lowest current limit */ 1036 /* We should always use to lowest current limit */
1037 min_value = min(di->bat->chg_params->usb_curr_max, ich_in); 1037 min_value = min(di->bm->chg_params->usb_curr_max, ich_in);
1038 1038
1039 switch (min_value) { 1039 switch (min_value) {
1040 case 100: 1040 case 100:
@@ -1176,7 +1176,7 @@ static int ab8500_charger_ac_en(struct ux500_charger *charger,
1176 volt_index = ab8500_voltage_to_regval(vset); 1176 volt_index = ab8500_voltage_to_regval(vset);
1177 curr_index = ab8500_current_to_regval(iset); 1177 curr_index = ab8500_current_to_regval(iset);
1178 input_curr_index = ab8500_current_to_regval( 1178 input_curr_index = ab8500_current_to_regval(
1179 di->bat->chg_params->ac_curr_max); 1179 di->bm->chg_params->ac_curr_max);
1180 if (volt_index < 0 || curr_index < 0 || input_curr_index < 0) { 1180 if (volt_index < 0 || curr_index < 0 || input_curr_index < 0) {
1181 dev_err(di->dev, 1181 dev_err(di->dev,
1182 "Charger voltage or current too high, " 1182 "Charger voltage or current too high, "
@@ -1193,7 +1193,7 @@ static int ab8500_charger_ac_en(struct ux500_charger *charger,
1193 } 1193 }
1194 /* MainChInputCurr: current that can be drawn from the charger*/ 1194 /* MainChInputCurr: current that can be drawn from the charger*/
1195 ret = ab8500_charger_set_main_in_curr(di, 1195 ret = ab8500_charger_set_main_in_curr(di,
1196 di->bat->chg_params->ac_curr_max); 1196 di->bm->chg_params->ac_curr_max);
1197 if (ret) { 1197 if (ret) {
1198 dev_err(di->dev, "%s Failed to set MainChInputCurr\n", 1198 dev_err(di->dev, "%s Failed to set MainChInputCurr\n",
1199 __func__); 1199 __func__);
@@ -1209,7 +1209,7 @@ static int ab8500_charger_ac_en(struct ux500_charger *charger,
1209 } 1209 }
1210 1210
1211 /* Check if VBAT overshoot control should be enabled */ 1211 /* Check if VBAT overshoot control should be enabled */
1212 if (!di->bat->enable_overshoot) 1212 if (!di->bm->enable_overshoot)
1213 overshoot = MAIN_CH_NO_OVERSHOOT_ENA_N; 1213 overshoot = MAIN_CH_NO_OVERSHOOT_ENA_N;
1214 1214
1215 /* Enable Main Charger */ 1215 /* Enable Main Charger */
@@ -1376,7 +1376,7 @@ static int ab8500_charger_usb_en(struct ux500_charger *charger,
1376 return ret; 1376 return ret;
1377 } 1377 }
1378 /* Check if VBAT overshoot control should be enabled */ 1378 /* Check if VBAT overshoot control should be enabled */
1379 if (!di->bat->enable_overshoot) 1379 if (!di->bm->enable_overshoot)
1380 overshoot = USB_CHG_NO_OVERSHOOT_ENA_N; 1380 overshoot = USB_CHG_NO_OVERSHOOT_ENA_N;
1381 1381
1382 /* Enable USB Charger */ 1382 /* Enable USB Charger */
@@ -2454,8 +2454,8 @@ static int ab8500_charger_init_hw_registers(struct ab8500_charger *di)
2454 ret = abx500_set_register_interruptible(di->dev, 2454 ret = abx500_set_register_interruptible(di->dev,
2455 AB8500_RTC, 2455 AB8500_RTC,
2456 AB8500_RTC_BACKUP_CHG_REG, 2456 AB8500_RTC_BACKUP_CHG_REG,
2457 di->bat->bkup_bat_v | 2457 di->bm->bkup_bat_v |
2458 di->bat->bkup_bat_i); 2458 di->bm->bkup_bat_i);
2459 if (ret) { 2459 if (ret) {
2460 dev_err(di->dev, "failed to setup backup battery charging\n"); 2460 dev_err(di->dev, "failed to setup backup battery charging\n");
2461 goto out; 2461 goto out;
@@ -2644,10 +2644,10 @@ static int __devinit ab8500_charger_probe(struct platform_device *pdev)
2644 dev_err(&pdev->dev, "%s no mem for ab8500_charger\n", __func__); 2644 dev_err(&pdev->dev, "%s no mem for ab8500_charger\n", __func__);
2645 return -ENOMEM; 2645 return -ENOMEM;
2646 } 2646 }
2647 di->bat = pdev->mfd_cell->platform_data; 2647 di->bm = pdev->mfd_cell->platform_data;
2648 if (!di->bat) { 2648 if (!di->bm) {
2649 if (np) { 2649 if (np) {
2650 ret = bmdevs_of_probe(&pdev->dev, np, &di->bat); 2650 ret = ab8500_bm_of_probe(&pdev->dev, np, &di->bm);
2651 if (ret) { 2651 if (ret) {
2652 dev_err(&pdev->dev, 2652 dev_err(&pdev->dev,
2653 "failed to get battery information\n"); 2653 "failed to get battery information\n");
diff --git a/drivers/power/ab8500_fg.c b/drivers/power/ab8500_fg.c
index 5a9f58d4c0fb..4cf231375de3 100644
--- a/drivers/power/ab8500_fg.c
+++ b/drivers/power/ab8500_fg.c
@@ -173,7 +173,7 @@ struct inst_curr_result_list {
173 * @avg_cap: Average capacity filter 173 * @avg_cap: Average capacity filter
174 * @parent: Pointer to the struct ab8500 174 * @parent: Pointer to the struct ab8500
175 * @gpadc: Pointer to the struct gpadc 175 * @gpadc: Pointer to the struct gpadc
176 * @bat: Pointer to the abx500_bm platform data 176 * @bm: Platform specific battery management information
177 * @fg_psy: Structure that holds the FG specific battery properties 177 * @fg_psy: Structure that holds the FG specific battery properties
178 * @fg_wq: Work queue for running the FG algorithm 178 * @fg_wq: Work queue for running the FG algorithm
179 * @fg_periodic_work: Work to run the FG algorithm periodically 179 * @fg_periodic_work: Work to run the FG algorithm periodically
@@ -212,7 +212,7 @@ struct ab8500_fg {
212 struct ab8500_fg_avg_cap avg_cap; 212 struct ab8500_fg_avg_cap avg_cap;
213 struct ab8500 *parent; 213 struct ab8500 *parent;
214 struct ab8500_gpadc *gpadc; 214 struct ab8500_gpadc *gpadc;
215 struct abx500_bm_data *bat; 215 struct abx500_bm_data *bm;
216 struct power_supply fg_psy; 216 struct power_supply fg_psy;
217 struct workqueue_struct *fg_wq; 217 struct workqueue_struct *fg_wq;
218 struct delayed_work fg_periodic_work; 218 struct delayed_work fg_periodic_work;
@@ -355,7 +355,7 @@ static int ab8500_fg_is_low_curr(struct ab8500_fg *di, int curr)
355 /* 355 /*
356 * We want to know if we're in low current mode 356 * We want to know if we're in low current mode
357 */ 357 */
358 if (curr > -di->bat->fg_params->high_curr_threshold) 358 if (curr > -di->bm->fg_params->high_curr_threshold)
359 return true; 359 return true;
360 else 360 else
361 return false; 361 return false;
@@ -648,7 +648,7 @@ int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res)
648 * 112.9nAh assumes 10mOhm, but fg_res is in 0.1mOhm 648 * 112.9nAh assumes 10mOhm, but fg_res is in 0.1mOhm
649 */ 649 */
650 val = (val * QLSB_NANO_AMP_HOURS_X10 * 36 * 4) / 650 val = (val * QLSB_NANO_AMP_HOURS_X10 * 36 * 4) /
651 (1000 * di->bat->fg_res); 651 (1000 * di->bm->fg_res);
652 652
653 if (di->turn_off_fg) { 653 if (di->turn_off_fg) {
654 dev_dbg(di->dev, "%s Disable FG\n", __func__); 654 dev_dbg(di->dev, "%s Disable FG\n", __func__);
@@ -751,7 +751,7 @@ static void ab8500_fg_acc_cur_work(struct work_struct *work)
751 * 112.9nAh assumes 10mOhm, but fg_res is in 0.1mOhm 751 * 112.9nAh assumes 10mOhm, but fg_res is in 0.1mOhm
752 */ 752 */
753 di->accu_charge = (val * QLSB_NANO_AMP_HOURS_X10) / 753 di->accu_charge = (val * QLSB_NANO_AMP_HOURS_X10) /
754 (100 * di->bat->fg_res); 754 (100 * di->bm->fg_res);
755 755
756 /* 756 /*
757 * Convert to unit value in mA 757 * Convert to unit value in mA
@@ -763,7 +763,7 @@ static void ab8500_fg_acc_cur_work(struct work_struct *work)
763 * 112.9nAh assumes 10mOhm, but fg_res is in 0.1mOhm 763 * 112.9nAh assumes 10mOhm, but fg_res is in 0.1mOhm
764 */ 764 */
765 di->avg_curr = (val * QLSB_NANO_AMP_HOURS_X10 * 36) / 765 di->avg_curr = (val * QLSB_NANO_AMP_HOURS_X10 * 36) /
766 (1000 * di->bat->fg_res * (di->fg_samples / 4)); 766 (1000 * di->bm->fg_res * (di->fg_samples / 4));
767 767
768 di->flags.conv_done = true; 768 di->flags.conv_done = true;
769 769
@@ -815,8 +815,8 @@ static int ab8500_fg_volt_to_capacity(struct ab8500_fg *di, int voltage)
815 struct abx500_v_to_cap *tbl; 815 struct abx500_v_to_cap *tbl;
816 int cap = 0; 816 int cap = 0;
817 817
818 tbl = di->bat->bat_type[di->bat->batt_id].v_to_cap_tbl, 818 tbl = di->bm->bat_type[di->bm->batt_id].v_to_cap_tbl,
819 tbl_size = di->bat->bat_type[di->bat->batt_id].n_v_cap_tbl_elements; 819 tbl_size = di->bm->bat_type[di->bm->batt_id].n_v_cap_tbl_elements;
820 820
821 for (i = 0; i < tbl_size; ++i) { 821 for (i = 0; i < tbl_size; ++i) {
822 if (voltage > tbl[i].voltage) 822 if (voltage > tbl[i].voltage)
@@ -867,8 +867,8 @@ static int ab8500_fg_battery_resistance(struct ab8500_fg *di)
867 struct batres_vs_temp *tbl; 867 struct batres_vs_temp *tbl;
868 int resist = 0; 868 int resist = 0;
869 869
870 tbl = di->bat->bat_type[di->bat->batt_id].batres_tbl; 870 tbl = di->bm->bat_type[di->bm->batt_id].batres_tbl;
871 tbl_size = di->bat->bat_type[di->bat->batt_id].n_batres_tbl_elements; 871 tbl_size = di->bm->bat_type[di->bm->batt_id].n_batres_tbl_elements;
872 872
873 for (i = 0; i < tbl_size; ++i) { 873 for (i = 0; i < tbl_size; ++i) {
874 if (di->bat_temp / 10 > tbl[i].temp) 874 if (di->bat_temp / 10 > tbl[i].temp)
@@ -889,11 +889,11 @@ static int ab8500_fg_battery_resistance(struct ab8500_fg *di)
889 889
890 dev_dbg(di->dev, "%s Temp: %d battery internal resistance: %d" 890 dev_dbg(di->dev, "%s Temp: %d battery internal resistance: %d"
891 " fg resistance %d, total: %d (mOhm)\n", 891 " fg resistance %d, total: %d (mOhm)\n",
892 __func__, di->bat_temp, resist, di->bat->fg_res / 10, 892 __func__, di->bat_temp, resist, di->bm->fg_res / 10,
893 (di->bat->fg_res / 10) + resist); 893 (di->bm->fg_res / 10) + resist);
894 894
895 /* fg_res variable is in 0.1mOhm */ 895 /* fg_res variable is in 0.1mOhm */
896 resist += di->bat->fg_res / 10; 896 resist += di->bm->fg_res / 10;
897 897
898 return resist; 898 return resist;
899} 899}
@@ -1111,14 +1111,14 @@ static int ab8500_fg_capacity_level(struct ab8500_fg *di)
1111 1111
1112 percent = di->bat_cap.permille / 10; 1112 percent = di->bat_cap.permille / 10;
1113 1113
1114 if (percent <= di->bat->cap_levels->critical || 1114 if (percent <= di->bm->cap_levels->critical ||
1115 di->flags.low_bat) 1115 di->flags.low_bat)
1116 ret = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL; 1116 ret = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
1117 else if (percent <= di->bat->cap_levels->low) 1117 else if (percent <= di->bm->cap_levels->low)
1118 ret = POWER_SUPPLY_CAPACITY_LEVEL_LOW; 1118 ret = POWER_SUPPLY_CAPACITY_LEVEL_LOW;
1119 else if (percent <= di->bat->cap_levels->normal) 1119 else if (percent <= di->bm->cap_levels->normal)
1120 ret = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL; 1120 ret = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
1121 else if (percent <= di->bat->cap_levels->high) 1121 else if (percent <= di->bm->cap_levels->high)
1122 ret = POWER_SUPPLY_CAPACITY_LEVEL_HIGH; 1122 ret = POWER_SUPPLY_CAPACITY_LEVEL_HIGH;
1123 else 1123 else
1124 ret = POWER_SUPPLY_CAPACITY_LEVEL_FULL; 1124 ret = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
@@ -1183,7 +1183,7 @@ static void ab8500_fg_check_capacity_limits(struct ab8500_fg *di, bool init)
1183 di->bat_cap.prev_percent != 1183 di->bat_cap.prev_percent !=
1184 (di->bat_cap.permille) / 10 && 1184 (di->bat_cap.permille) / 10 &&
1185 (di->bat_cap.permille / 10) < 1185 (di->bat_cap.permille / 10) <
1186 di->bat->fg_params->maint_thres) { 1186 di->bm->fg_params->maint_thres) {
1187 dev_dbg(di->dev, 1187 dev_dbg(di->dev,
1188 "battery reported full " 1188 "battery reported full "
1189 "but capacity dropping: %d\n", 1189 "but capacity dropping: %d\n",
@@ -1285,7 +1285,7 @@ static void ab8500_fg_algorithm_charging(struct ab8500_fg *di)
1285 switch (di->charge_state) { 1285 switch (di->charge_state) {
1286 case AB8500_FG_CHARGE_INIT: 1286 case AB8500_FG_CHARGE_INIT:
1287 di->fg_samples = SEC_TO_SAMPLE( 1287 di->fg_samples = SEC_TO_SAMPLE(
1288 di->bat->fg_params->accu_charging); 1288 di->bm->fg_params->accu_charging);
1289 1289
1290 ab8500_fg_coulomb_counter(di, true); 1290 ab8500_fg_coulomb_counter(di, true);
1291 ab8500_fg_charge_state_to(di, AB8500_FG_CHARGE_READOUT); 1291 ab8500_fg_charge_state_to(di, AB8500_FG_CHARGE_READOUT);
@@ -1347,8 +1347,8 @@ static bool check_sysfs_capacity(struct ab8500_fg *di)
1347 cap_permille = ab8500_fg_convert_mah_to_permille(di, 1347 cap_permille = ab8500_fg_convert_mah_to_permille(di,
1348 di->bat_cap.user_mah); 1348 di->bat_cap.user_mah);
1349 1349
1350 lower = di->bat_cap.permille - di->bat->fg_params->user_cap_limit * 10; 1350 lower = di->bat_cap.permille - di->bm->fg_params->user_cap_limit * 10;
1351 upper = di->bat_cap.permille + di->bat->fg_params->user_cap_limit * 10; 1351 upper = di->bat_cap.permille + di->bm->fg_params->user_cap_limit * 10;
1352 1352
1353 if (lower < 0) 1353 if (lower < 0)
1354 lower = 0; 1354 lower = 0;
@@ -1388,7 +1388,7 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1388 case AB8500_FG_DISCHARGE_INIT: 1388 case AB8500_FG_DISCHARGE_INIT:
1389 /* We use the FG IRQ to work on */ 1389 /* We use the FG IRQ to work on */
1390 di->init_cnt = 0; 1390 di->init_cnt = 0;
1391 di->fg_samples = SEC_TO_SAMPLE(di->bat->fg_params->init_timer); 1391 di->fg_samples = SEC_TO_SAMPLE(di->bm->fg_params->init_timer);
1392 ab8500_fg_coulomb_counter(di, true); 1392 ab8500_fg_coulomb_counter(di, true);
1393 ab8500_fg_discharge_state_to(di, 1393 ab8500_fg_discharge_state_to(di,
1394 AB8500_FG_DISCHARGE_INITMEASURING); 1394 AB8500_FG_DISCHARGE_INITMEASURING);
@@ -1401,17 +1401,17 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1401 * samples to get an initial capacity. 1401 * samples to get an initial capacity.
1402 * Then go to READOUT 1402 * Then go to READOUT
1403 */ 1403 */
1404 sleep_time = di->bat->fg_params->init_timer; 1404 sleep_time = di->bm->fg_params->init_timer;
1405 1405
1406 /* Discard the first [x] seconds */ 1406 /* Discard the first [x] seconds */
1407 if (di->init_cnt > di->bat->fg_params->init_discard_time) { 1407 if (di->init_cnt > di->bm->fg_params->init_discard_time) {
1408 ab8500_fg_calc_cap_discharge_voltage(di, true); 1408 ab8500_fg_calc_cap_discharge_voltage(di, true);
1409 1409
1410 ab8500_fg_check_capacity_limits(di, true); 1410 ab8500_fg_check_capacity_limits(di, true);
1411 } 1411 }
1412 1412
1413 di->init_cnt += sleep_time; 1413 di->init_cnt += sleep_time;
1414 if (di->init_cnt > di->bat->fg_params->init_total_time) 1414 if (di->init_cnt > di->bm->fg_params->init_total_time)
1415 ab8500_fg_discharge_state_to(di, 1415 ab8500_fg_discharge_state_to(di,
1416 AB8500_FG_DISCHARGE_READOUT_INIT); 1416 AB8500_FG_DISCHARGE_READOUT_INIT);
1417 1417
@@ -1426,7 +1426,7 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1426 /* Intentional fallthrough */ 1426 /* Intentional fallthrough */
1427 1427
1428 case AB8500_FG_DISCHARGE_RECOVERY: 1428 case AB8500_FG_DISCHARGE_RECOVERY:
1429 sleep_time = di->bat->fg_params->recovery_sleep_timer; 1429 sleep_time = di->bm->fg_params->recovery_sleep_timer;
1430 1430
1431 /* 1431 /*
1432 * We should check the power consumption 1432 * We should check the power consumption
@@ -1438,9 +1438,9 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1438 1438
1439 if (ab8500_fg_is_low_curr(di, di->inst_curr)) { 1439 if (ab8500_fg_is_low_curr(di, di->inst_curr)) {
1440 if (di->recovery_cnt > 1440 if (di->recovery_cnt >
1441 di->bat->fg_params->recovery_total_time) { 1441 di->bm->fg_params->recovery_total_time) {
1442 di->fg_samples = SEC_TO_SAMPLE( 1442 di->fg_samples = SEC_TO_SAMPLE(
1443 di->bat->fg_params->accu_high_curr); 1443 di->bm->fg_params->accu_high_curr);
1444 ab8500_fg_coulomb_counter(di, true); 1444 ab8500_fg_coulomb_counter(di, true);
1445 ab8500_fg_discharge_state_to(di, 1445 ab8500_fg_discharge_state_to(di,
1446 AB8500_FG_DISCHARGE_READOUT); 1446 AB8500_FG_DISCHARGE_READOUT);
@@ -1453,7 +1453,7 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1453 di->recovery_cnt += sleep_time; 1453 di->recovery_cnt += sleep_time;
1454 } else { 1454 } else {
1455 di->fg_samples = SEC_TO_SAMPLE( 1455 di->fg_samples = SEC_TO_SAMPLE(
1456 di->bat->fg_params->accu_high_curr); 1456 di->bm->fg_params->accu_high_curr);
1457 ab8500_fg_coulomb_counter(di, true); 1457 ab8500_fg_coulomb_counter(di, true);
1458 ab8500_fg_discharge_state_to(di, 1458 ab8500_fg_discharge_state_to(di,
1459 AB8500_FG_DISCHARGE_READOUT); 1459 AB8500_FG_DISCHARGE_READOUT);
@@ -1462,7 +1462,7 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1462 1462
1463 case AB8500_FG_DISCHARGE_READOUT_INIT: 1463 case AB8500_FG_DISCHARGE_READOUT_INIT:
1464 di->fg_samples = SEC_TO_SAMPLE( 1464 di->fg_samples = SEC_TO_SAMPLE(
1465 di->bat->fg_params->accu_high_curr); 1465 di->bm->fg_params->accu_high_curr);
1466 ab8500_fg_coulomb_counter(di, true); 1466 ab8500_fg_coulomb_counter(di, true);
1467 ab8500_fg_discharge_state_to(di, 1467 ab8500_fg_discharge_state_to(di,
1468 AB8500_FG_DISCHARGE_READOUT); 1468 AB8500_FG_DISCHARGE_READOUT);
@@ -1509,9 +1509,9 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1509 } 1509 }
1510 1510
1511 di->high_curr_cnt += 1511 di->high_curr_cnt +=
1512 di->bat->fg_params->accu_high_curr; 1512 di->bm->fg_params->accu_high_curr;
1513 if (di->high_curr_cnt > 1513 if (di->high_curr_cnt >
1514 di->bat->fg_params->high_curr_time) 1514 di->bm->fg_params->high_curr_time)
1515 di->recovery_needed = true; 1515 di->recovery_needed = true;
1516 1516
1517 ab8500_fg_calc_cap_discharge_fg(di); 1517 ab8500_fg_calc_cap_discharge_fg(di);
@@ -1528,7 +1528,7 @@ static void ab8500_fg_algorithm_discharging(struct ab8500_fg *di)
1528 ab8500_fg_calc_cap_discharge_voltage(di, true); 1528 ab8500_fg_calc_cap_discharge_voltage(di, true);
1529 1529
1530 di->fg_samples = SEC_TO_SAMPLE( 1530 di->fg_samples = SEC_TO_SAMPLE(
1531 di->bat->fg_params->accu_high_curr); 1531 di->bm->fg_params->accu_high_curr);
1532 ab8500_fg_coulomb_counter(di, true); 1532 ab8500_fg_coulomb_counter(di, true);
1533 ab8500_fg_discharge_state_to(di, 1533 ab8500_fg_discharge_state_to(di,
1534 AB8500_FG_DISCHARGE_READOUT); 1534 AB8500_FG_DISCHARGE_READOUT);
@@ -1721,7 +1721,7 @@ static void ab8500_fg_low_bat_work(struct work_struct *work)
1721 vbat = ab8500_fg_bat_voltage(di); 1721 vbat = ab8500_fg_bat_voltage(di);
1722 1722
1723 /* Check if LOW_BAT still fulfilled */ 1723 /* Check if LOW_BAT still fulfilled */
1724 if (vbat < di->bat->fg_params->lowbat_threshold) { 1724 if (vbat < di->bm->fg_params->lowbat_threshold) {
1725 di->flags.low_bat = true; 1725 di->flags.low_bat = true;
1726 dev_warn(di->dev, "Battery voltage still LOW\n"); 1726 dev_warn(di->dev, "Battery voltage still LOW\n");
1727 1727
@@ -1779,8 +1779,8 @@ static int ab8500_fg_battok_init_hw_register(struct ab8500_fg *di)
1779 int ret; 1779 int ret;
1780 int new_val; 1780 int new_val;
1781 1781
1782 sel0 = di->bat->fg_params->battok_falling_th_sel0; 1782 sel0 = di->bm->fg_params->battok_falling_th_sel0;
1783 sel1 = di->bat->fg_params->battok_raising_th_sel1; 1783 sel1 = di->bm->fg_params->battok_raising_th_sel1;
1784 1784
1785 cbp_sel0 = ab8500_fg_battok_calc(di, sel0); 1785 cbp_sel0 = ab8500_fg_battok_calc(di, sel0);
1786 cbp_sel1 = ab8500_fg_battok_calc(di, sel1); 1786 cbp_sel1 = ab8500_fg_battok_calc(di, sel1);
@@ -1963,7 +1963,7 @@ static int ab8500_fg_get_property(struct power_supply *psy,
1963 di->bat_cap.max_mah); 1963 di->bat_cap.max_mah);
1964 break; 1964 break;
1965 case POWER_SUPPLY_PROP_ENERGY_NOW: 1965 case POWER_SUPPLY_PROP_ENERGY_NOW:
1966 if (di->flags.batt_unknown && !di->bat->chg_unknown_bat && 1966 if (di->flags.batt_unknown && !di->bm->chg_unknown_bat &&
1967 di->flags.batt_id_received) 1967 di->flags.batt_id_received)
1968 val->intval = ab8500_fg_convert_mah_to_uwh(di, 1968 val->intval = ab8500_fg_convert_mah_to_uwh(di,
1969 di->bat_cap.max_mah); 1969 di->bat_cap.max_mah);
@@ -1978,21 +1978,21 @@ static int ab8500_fg_get_property(struct power_supply *psy,
1978 val->intval = di->bat_cap.max_mah; 1978 val->intval = di->bat_cap.max_mah;
1979 break; 1979 break;
1980 case POWER_SUPPLY_PROP_CHARGE_NOW: 1980 case POWER_SUPPLY_PROP_CHARGE_NOW:
1981 if (di->flags.batt_unknown && !di->bat->chg_unknown_bat && 1981 if (di->flags.batt_unknown && !di->bm->chg_unknown_bat &&
1982 di->flags.batt_id_received) 1982 di->flags.batt_id_received)
1983 val->intval = di->bat_cap.max_mah; 1983 val->intval = di->bat_cap.max_mah;
1984 else 1984 else
1985 val->intval = di->bat_cap.prev_mah; 1985 val->intval = di->bat_cap.prev_mah;
1986 break; 1986 break;
1987 case POWER_SUPPLY_PROP_CAPACITY: 1987 case POWER_SUPPLY_PROP_CAPACITY:
1988 if (di->flags.batt_unknown && !di->bat->chg_unknown_bat && 1988 if (di->flags.batt_unknown && !di->bm->chg_unknown_bat &&
1989 di->flags.batt_id_received) 1989 di->flags.batt_id_received)
1990 val->intval = 100; 1990 val->intval = 100;
1991 else 1991 else
1992 val->intval = di->bat_cap.prev_percent; 1992 val->intval = di->bat_cap.prev_percent;
1993 break; 1993 break;
1994 case POWER_SUPPLY_PROP_CAPACITY_LEVEL: 1994 case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
1995 if (di->flags.batt_unknown && !di->bat->chg_unknown_bat && 1995 if (di->flags.batt_unknown && !di->bm->chg_unknown_bat &&
1996 di->flags.batt_id_received) 1996 di->flags.batt_id_received)
1997 val->intval = POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN; 1997 val->intval = POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN;
1998 else 1998 else
@@ -2078,7 +2078,7 @@ static int ab8500_fg_get_ext_psy_data(struct device *dev, void *data)
2078 if (!di->flags.batt_id_received) { 2078 if (!di->flags.batt_id_received) {
2079 const struct abx500_battery_type *b; 2079 const struct abx500_battery_type *b;
2080 2080
2081 b = &(di->bat->bat_type[di->bat->batt_id]); 2081 b = &(di->bm->bat_type[di->bm->batt_id]);
2082 2082
2083 di->flags.batt_id_received = true; 2083 di->flags.batt_id_received = true;
2084 2084
@@ -2155,7 +2155,7 @@ static int ab8500_fg_init_hw_registers(struct ab8500_fg *di)
2155 AB8500_SYS_CTRL2_BLOCK, 2155 AB8500_SYS_CTRL2_BLOCK,
2156 AB8500_LOW_BAT_REG, 2156 AB8500_LOW_BAT_REG,
2157 ab8500_volt_to_regval( 2157 ab8500_volt_to_regval(
2158 di->bat->fg_params->lowbat_threshold) << 1 | 2158 di->bm->fg_params->lowbat_threshold) << 1 |
2159 LOW_BAT_ENABLE); 2159 LOW_BAT_ENABLE);
2160 if (ret) { 2160 if (ret) {
2161 dev_err(di->dev, "%s write failed\n", __func__); 2161 dev_err(di->dev, "%s write failed\n", __func__);
@@ -2457,10 +2457,10 @@ static int __devinit ab8500_fg_probe(struct platform_device *pdev)
2457 dev_err(&pdev->dev, "%s no mem for ab8500_fg\n", __func__); 2457 dev_err(&pdev->dev, "%s no mem for ab8500_fg\n", __func__);
2458 return -ENOMEM; 2458 return -ENOMEM;
2459 } 2459 }
2460 di->bat = pdev->mfd_cell->platform_data; 2460 di->bm = pdev->mfd_cell->platform_data;
2461 if (!di->bat) { 2461 if (!di->bm) {
2462 if (np) { 2462 if (np) {
2463 ret = bmdevs_of_probe(&pdev->dev, np, &di->bat); 2463 ret = ab8500_bm_of_probe(&pdev->dev, np, &di->bm);
2464 if (ret) { 2464 if (ret) {
2465 dev_err(&pdev->dev, 2465 dev_err(&pdev->dev,
2466 "failed to get battery information\n"); 2466 "failed to get battery information\n");
@@ -2491,11 +2491,11 @@ static int __devinit ab8500_fg_probe(struct platform_device *pdev)
2491 di->fg_psy.external_power_changed = ab8500_fg_external_power_changed; 2491 di->fg_psy.external_power_changed = ab8500_fg_external_power_changed;
2492 2492
2493 di->bat_cap.max_mah_design = MILLI_TO_MICRO * 2493 di->bat_cap.max_mah_design = MILLI_TO_MICRO *
2494 di->bat->bat_type[di->bat->batt_id].charge_full_design; 2494 di->bm->bat_type[di->bm->batt_id].charge_full_design;
2495 2495
2496 di->bat_cap.max_mah = di->bat_cap.max_mah_design; 2496 di->bat_cap.max_mah = di->bat_cap.max_mah_design;
2497 2497
2498 di->vbat_nom = di->bat->bat_type[di->bat->batt_id].nominal_voltage; 2498 di->vbat_nom = di->bm->bat_type[di->bm->batt_id].nominal_voltage;
2499 2499
2500 di->init_capacity = true; 2500 di->init_capacity = true;
2501 2501
@@ -2549,7 +2549,7 @@ static int __devinit ab8500_fg_probe(struct platform_device *pdev)
2549 goto free_inst_curr_wq; 2549 goto free_inst_curr_wq;
2550 } 2550 }
2551 2551
2552 di->fg_samples = SEC_TO_SAMPLE(di->bat->fg_params->init_timer); 2552 di->fg_samples = SEC_TO_SAMPLE(di->bm->fg_params->init_timer);
2553 ab8500_fg_coulomb_counter(di, true); 2553 ab8500_fg_coulomb_counter(di, true);
2554 2554
2555 /* Initialize completion used to notify completion of inst current */ 2555 /* Initialize completion used to notify completion of inst current */
diff --git a/drivers/power/abx500_chargalg.c b/drivers/power/abx500_chargalg.c
index dcdc4393b9e7..ea2e2eb652ef 100644
--- a/drivers/power/abx500_chargalg.c
+++ b/drivers/power/abx500_chargalg.c
@@ -207,7 +207,7 @@ enum maxim_ret {
207 * @chg_info: information about connected charger types 207 * @chg_info: information about connected charger types
208 * @batt_data: data of the battery 208 * @batt_data: data of the battery
209 * @susp_status: current charger suspension status 209 * @susp_status: current charger suspension status
210 * @bat: pointer to the abx500_bm platform data 210 * @bm: Platform specific battery management information
211 * @chargalg_psy: structure that holds the battery properties exposed by 211 * @chargalg_psy: structure that holds the battery properties exposed by
212 * the charging algorithm 212 * the charging algorithm
213 * @events: structure for information about events triggered 213 * @events: structure for information about events triggered
@@ -232,7 +232,7 @@ struct abx500_chargalg {
232 struct abx500_chargalg_charger_info chg_info; 232 struct abx500_chargalg_charger_info chg_info;
233 struct abx500_chargalg_battery_data batt_data; 233 struct abx500_chargalg_battery_data batt_data;
234 struct abx500_chargalg_suspension_status susp_status; 234 struct abx500_chargalg_suspension_status susp_status;
235 struct abx500_bm_data *bat; 235 struct abx500_bm_data *bm;
236 struct power_supply chargalg_psy; 236 struct power_supply chargalg_psy;
237 struct ux500_charger *ac_chg; 237 struct ux500_charger *ac_chg;
238 struct ux500_charger *usb_chg; 238 struct ux500_charger *usb_chg;
@@ -367,13 +367,13 @@ static void abx500_chargalg_start_safety_timer(struct abx500_chargalg *di)
367 case AC_CHG: 367 case AC_CHG:
368 timer_expiration = 368 timer_expiration =
369 round_jiffies(jiffies + 369 round_jiffies(jiffies +
370 (di->bat->main_safety_tmr_h * 3600 * HZ)); 370 (di->bm->main_safety_tmr_h * 3600 * HZ));
371 break; 371 break;
372 372
373 case USB_CHG: 373 case USB_CHG:
374 timer_expiration = 374 timer_expiration =
375 round_jiffies(jiffies + 375 round_jiffies(jiffies +
376 (di->bat->usb_safety_tmr_h * 3600 * HZ)); 376 (di->bm->usb_safety_tmr_h * 3600 * HZ));
377 break; 377 break;
378 378
379 default: 379 default:
@@ -638,32 +638,32 @@ static void abx500_chargalg_start_charging(struct abx500_chargalg *di,
638 */ 638 */
639static void abx500_chargalg_check_temp(struct abx500_chargalg *di) 639static void abx500_chargalg_check_temp(struct abx500_chargalg *di)
640{ 640{
641 if (di->batt_data.temp > (di->bat->temp_low + di->t_hyst_norm) && 641 if (di->batt_data.temp > (di->bm->temp_low + di->t_hyst_norm) &&
642 di->batt_data.temp < (di->bat->temp_high - di->t_hyst_norm)) { 642 di->batt_data.temp < (di->bm->temp_high - di->t_hyst_norm)) {
643 /* Temp OK! */ 643 /* Temp OK! */
644 di->events.btemp_underover = false; 644 di->events.btemp_underover = false;
645 di->events.btemp_lowhigh = false; 645 di->events.btemp_lowhigh = false;
646 di->t_hyst_norm = 0; 646 di->t_hyst_norm = 0;
647 di->t_hyst_lowhigh = 0; 647 di->t_hyst_lowhigh = 0;
648 } else { 648 } else {
649 if (((di->batt_data.temp >= di->bat->temp_high) && 649 if (((di->batt_data.temp >= di->bm->temp_high) &&
650 (di->batt_data.temp < 650 (di->batt_data.temp <
651 (di->bat->temp_over - di->t_hyst_lowhigh))) || 651 (di->bm->temp_over - di->t_hyst_lowhigh))) ||
652 ((di->batt_data.temp > 652 ((di->batt_data.temp >
653 (di->bat->temp_under + di->t_hyst_lowhigh)) && 653 (di->bm->temp_under + di->t_hyst_lowhigh)) &&
654 (di->batt_data.temp <= di->bat->temp_low))) { 654 (di->batt_data.temp <= di->bm->temp_low))) {
655 /* TEMP minor!!!!! */ 655 /* TEMP minor!!!!! */
656 di->events.btemp_underover = false; 656 di->events.btemp_underover = false;
657 di->events.btemp_lowhigh = true; 657 di->events.btemp_lowhigh = true;
658 di->t_hyst_norm = di->bat->temp_hysteresis; 658 di->t_hyst_norm = di->bm->temp_hysteresis;
659 di->t_hyst_lowhigh = 0; 659 di->t_hyst_lowhigh = 0;
660 } else if (di->batt_data.temp <= di->bat->temp_under || 660 } else if (di->batt_data.temp <= di->bm->temp_under ||
661 di->batt_data.temp >= di->bat->temp_over) { 661 di->batt_data.temp >= di->bm->temp_over) {
662 /* TEMP major!!!!! */ 662 /* TEMP major!!!!! */
663 di->events.btemp_underover = true; 663 di->events.btemp_underover = true;
664 di->events.btemp_lowhigh = false; 664 di->events.btemp_lowhigh = false;
665 di->t_hyst_norm = 0; 665 di->t_hyst_norm = 0;
666 di->t_hyst_lowhigh = di->bat->temp_hysteresis; 666 di->t_hyst_lowhigh = di->bm->temp_hysteresis;
667 } else { 667 } else {
668 /* Within hysteresis */ 668 /* Within hysteresis */
669 dev_dbg(di->dev, "Within hysteresis limit temp: %d " 669 dev_dbg(di->dev, "Within hysteresis limit temp: %d "
@@ -682,12 +682,12 @@ static void abx500_chargalg_check_temp(struct abx500_chargalg *di)
682 */ 682 */
683static void abx500_chargalg_check_charger_voltage(struct abx500_chargalg *di) 683static void abx500_chargalg_check_charger_voltage(struct abx500_chargalg *di)
684{ 684{
685 if (di->chg_info.usb_volt > di->bat->chg_params->usb_volt_max) 685 if (di->chg_info.usb_volt > di->bm->chg_params->usb_volt_max)
686 di->chg_info.usb_chg_ok = false; 686 di->chg_info.usb_chg_ok = false;
687 else 687 else
688 di->chg_info.usb_chg_ok = true; 688 di->chg_info.usb_chg_ok = true;
689 689
690 if (di->chg_info.ac_volt > di->bat->chg_params->ac_volt_max) 690 if (di->chg_info.ac_volt > di->bm->chg_params->ac_volt_max)
691 di->chg_info.ac_chg_ok = false; 691 di->chg_info.ac_chg_ok = false;
692 else 692 else
693 di->chg_info.ac_chg_ok = true; 693 di->chg_info.ac_chg_ok = true;
@@ -707,10 +707,10 @@ static void abx500_chargalg_end_of_charge(struct abx500_chargalg *di)
707 if (di->charge_status == POWER_SUPPLY_STATUS_CHARGING && 707 if (di->charge_status == POWER_SUPPLY_STATUS_CHARGING &&
708 di->charge_state == STATE_NORMAL && 708 di->charge_state == STATE_NORMAL &&
709 !di->maintenance_chg && (di->batt_data.volt >= 709 !di->maintenance_chg && (di->batt_data.volt >=
710 di->bat->bat_type[di->bat->batt_id].termination_vol || 710 di->bm->bat_type[di->bm->batt_id].termination_vol ||
711 di->events.usb_cv_active || di->events.ac_cv_active) && 711 di->events.usb_cv_active || di->events.ac_cv_active) &&
712 di->batt_data.avg_curr < 712 di->batt_data.avg_curr <
713 di->bat->bat_type[di->bat->batt_id].termination_curr && 713 di->bm->bat_type[di->bm->batt_id].termination_curr &&
714 di->batt_data.avg_curr > 0) { 714 di->batt_data.avg_curr > 0) {
715 if (++di->eoc_cnt >= EOC_COND_CNT) { 715 if (++di->eoc_cnt >= EOC_COND_CNT) {
716 di->eoc_cnt = 0; 716 di->eoc_cnt = 0;
@@ -733,12 +733,12 @@ static void abx500_chargalg_end_of_charge(struct abx500_chargalg *di)
733static void init_maxim_chg_curr(struct abx500_chargalg *di) 733static void init_maxim_chg_curr(struct abx500_chargalg *di)
734{ 734{
735 di->ccm.original_iset = 735 di->ccm.original_iset =
736 di->bat->bat_type[di->bat->batt_id].normal_cur_lvl; 736 di->bm->bat_type[di->bm->batt_id].normal_cur_lvl;
737 di->ccm.current_iset = 737 di->ccm.current_iset =
738 di->bat->bat_type[di->bat->batt_id].normal_cur_lvl; 738 di->bm->bat_type[di->bm->batt_id].normal_cur_lvl;
739 di->ccm.test_delta_i = di->bat->maxi->charger_curr_step; 739 di->ccm.test_delta_i = di->bm->maxi->charger_curr_step;
740 di->ccm.max_current = di->bat->maxi->chg_curr; 740 di->ccm.max_current = di->bm->maxi->chg_curr;
741 di->ccm.condition_cnt = di->bat->maxi->wait_cycles; 741 di->ccm.condition_cnt = di->bm->maxi->wait_cycles;
742 di->ccm.level = 0; 742 di->ccm.level = 0;
743} 743}
744 744
@@ -755,7 +755,7 @@ static enum maxim_ret abx500_chargalg_chg_curr_maxim(struct abx500_chargalg *di)
755{ 755{
756 int delta_i; 756 int delta_i;
757 757
758 if (!di->bat->maxi->ena_maxi) 758 if (!di->bm->maxi->ena_maxi)
759 return MAXIM_RET_NOACTION; 759 return MAXIM_RET_NOACTION;
760 760
761 delta_i = di->ccm.original_iset - di->batt_data.inst_curr; 761 delta_i = di->ccm.original_iset - di->batt_data.inst_curr;
@@ -766,7 +766,7 @@ static enum maxim_ret abx500_chargalg_chg_curr_maxim(struct abx500_chargalg *di)
766 if (di->ccm.wait_cnt == 0) { 766 if (di->ccm.wait_cnt == 0) {
767 dev_dbg(di->dev, "lowering current\n"); 767 dev_dbg(di->dev, "lowering current\n");
768 di->ccm.wait_cnt++; 768 di->ccm.wait_cnt++;
769 di->ccm.condition_cnt = di->bat->maxi->wait_cycles; 769 di->ccm.condition_cnt = di->bm->maxi->wait_cycles;
770 di->ccm.max_current = 770 di->ccm.max_current =
771 di->ccm.current_iset - di->ccm.test_delta_i; 771 di->ccm.current_iset - di->ccm.test_delta_i;
772 di->ccm.current_iset = di->ccm.max_current; 772 di->ccm.current_iset = di->ccm.max_current;
@@ -791,7 +791,7 @@ static enum maxim_ret abx500_chargalg_chg_curr_maxim(struct abx500_chargalg *di)
791 if (di->ccm.current_iset == di->ccm.original_iset) 791 if (di->ccm.current_iset == di->ccm.original_iset)
792 return MAXIM_RET_NOACTION; 792 return MAXIM_RET_NOACTION;
793 793
794 di->ccm.condition_cnt = di->bat->maxi->wait_cycles; 794 di->ccm.condition_cnt = di->bm->maxi->wait_cycles;
795 di->ccm.current_iset = di->ccm.original_iset; 795 di->ccm.current_iset = di->ccm.original_iset;
796 di->ccm.level = 0; 796 di->ccm.level = 0;
797 797
@@ -803,7 +803,7 @@ static enum maxim_ret abx500_chargalg_chg_curr_maxim(struct abx500_chargalg *di)
803 di->ccm.max_current) { 803 di->ccm.max_current) {
804 if (di->ccm.condition_cnt-- == 0) { 804 if (di->ccm.condition_cnt-- == 0) {
805 /* Increse the iset with cco.test_delta_i */ 805 /* Increse the iset with cco.test_delta_i */
806 di->ccm.condition_cnt = di->bat->maxi->wait_cycles; 806 di->ccm.condition_cnt = di->bm->maxi->wait_cycles;
807 di->ccm.current_iset += di->ccm.test_delta_i; 807 di->ccm.current_iset += di->ccm.test_delta_i;
808 di->ccm.level++; 808 di->ccm.level++;
809 dev_dbg(di->dev, " Maximization needed, increase" 809 dev_dbg(di->dev, " Maximization needed, increase"
@@ -818,7 +818,7 @@ static enum maxim_ret abx500_chargalg_chg_curr_maxim(struct abx500_chargalg *di)
818 return MAXIM_RET_NOACTION; 818 return MAXIM_RET_NOACTION;
819 } 819 }
820 } else { 820 } else {
821 di->ccm.condition_cnt = di->bat->maxi->wait_cycles; 821 di->ccm.condition_cnt = di->bm->maxi->wait_cycles;
822 return MAXIM_RET_NOACTION; 822 return MAXIM_RET_NOACTION;
823 } 823 }
824} 824}
@@ -838,7 +838,7 @@ static void handle_maxim_chg_curr(struct abx500_chargalg *di)
838 break; 838 break;
839 case MAXIM_RET_IBAT_TOO_HIGH: 839 case MAXIM_RET_IBAT_TOO_HIGH:
840 result = abx500_chargalg_update_chg_curr(di, 840 result = abx500_chargalg_update_chg_curr(di,
841 di->bat->bat_type[di->bat->batt_id].normal_cur_lvl); 841 di->bm->bat_type[di->bm->batt_id].normal_cur_lvl);
842 if (result) 842 if (result)
843 dev_err(di->dev, "failed to set chg curr\n"); 843 dev_err(di->dev, "failed to set chg curr\n");
844 break; 844 break;
@@ -1210,7 +1210,7 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
1210 * this way 1210 * this way
1211 */ 1211 */
1212 if (!charger_status || 1212 if (!charger_status ||
1213 (di->events.batt_unknown && !di->bat->chg_unknown_bat)) { 1213 (di->events.batt_unknown && !di->bm->chg_unknown_bat)) {
1214 if (di->charge_state != STATE_HANDHELD) { 1214 if (di->charge_state != STATE_HANDHELD) {
1215 di->events.safety_timer_expired = false; 1215 di->events.safety_timer_expired = false;
1216 abx500_chargalg_state_to(di, STATE_HANDHELD_INIT); 1216 abx500_chargalg_state_to(di, STATE_HANDHELD_INIT);
@@ -1394,8 +1394,8 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
1394 1394
1395 case STATE_NORMAL_INIT: 1395 case STATE_NORMAL_INIT:
1396 abx500_chargalg_start_charging(di, 1396 abx500_chargalg_start_charging(di,
1397 di->bat->bat_type[di->bat->batt_id].normal_vol_lvl, 1397 di->bm->bat_type[di->bm->batt_id].normal_vol_lvl,
1398 di->bat->bat_type[di->bat->batt_id].normal_cur_lvl); 1398 di->bm->bat_type[di->bm->batt_id].normal_cur_lvl);
1399 abx500_chargalg_state_to(di, STATE_NORMAL); 1399 abx500_chargalg_state_to(di, STATE_NORMAL);
1400 abx500_chargalg_start_safety_timer(di); 1400 abx500_chargalg_start_safety_timer(di);
1401 abx500_chargalg_stop_maintenance_timer(di); 1401 abx500_chargalg_stop_maintenance_timer(di);
@@ -1411,7 +1411,7 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
1411 handle_maxim_chg_curr(di); 1411 handle_maxim_chg_curr(di);
1412 if (di->charge_status == POWER_SUPPLY_STATUS_FULL && 1412 if (di->charge_status == POWER_SUPPLY_STATUS_FULL &&
1413 di->maintenance_chg) { 1413 di->maintenance_chg) {
1414 if (di->bat->no_maintenance) 1414 if (di->bm->no_maintenance)
1415 abx500_chargalg_state_to(di, 1415 abx500_chargalg_state_to(di,
1416 STATE_WAIT_FOR_RECHARGE_INIT); 1416 STATE_WAIT_FOR_RECHARGE_INIT);
1417 else 1417 else
@@ -1429,7 +1429,7 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
1429 1429
1430 case STATE_WAIT_FOR_RECHARGE: 1430 case STATE_WAIT_FOR_RECHARGE:
1431 if (di->batt_data.volt <= 1431 if (di->batt_data.volt <=
1432 di->bat->bat_type[di->bat->batt_id].recharge_vol) { 1432 di->bm->bat_type[di->bm->batt_id].recharge_vol) {
1433 if (di->rch_cnt-- == 0) 1433 if (di->rch_cnt-- == 0)
1434 abx500_chargalg_state_to(di, STATE_NORMAL_INIT); 1434 abx500_chargalg_state_to(di, STATE_NORMAL_INIT);
1435 } else 1435 } else
@@ -1439,13 +1439,13 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
1439 case STATE_MAINTENANCE_A_INIT: 1439 case STATE_MAINTENANCE_A_INIT:
1440 abx500_chargalg_stop_safety_timer(di); 1440 abx500_chargalg_stop_safety_timer(di);
1441 abx500_chargalg_start_maintenance_timer(di, 1441 abx500_chargalg_start_maintenance_timer(di,
1442 di->bat->bat_type[ 1442 di->bm->bat_type[
1443 di->bat->batt_id].maint_a_chg_timer_h); 1443 di->bm->batt_id].maint_a_chg_timer_h);
1444 abx500_chargalg_start_charging(di, 1444 abx500_chargalg_start_charging(di,
1445 di->bat->bat_type[ 1445 di->bm->bat_type[
1446 di->bat->batt_id].maint_a_vol_lvl, 1446 di->bm->batt_id].maint_a_vol_lvl,
1447 di->bat->bat_type[ 1447 di->bm->bat_type[
1448 di->bat->batt_id].maint_a_cur_lvl); 1448 di->bm->batt_id].maint_a_cur_lvl);
1449 abx500_chargalg_state_to(di, STATE_MAINTENANCE_A); 1449 abx500_chargalg_state_to(di, STATE_MAINTENANCE_A);
1450 power_supply_changed(&di->chargalg_psy); 1450 power_supply_changed(&di->chargalg_psy);
1451 /* Intentional fallthrough*/ 1451 /* Intentional fallthrough*/
@@ -1459,13 +1459,13 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
1459 1459
1460 case STATE_MAINTENANCE_B_INIT: 1460 case STATE_MAINTENANCE_B_INIT:
1461 abx500_chargalg_start_maintenance_timer(di, 1461 abx500_chargalg_start_maintenance_timer(di,
1462 di->bat->bat_type[ 1462 di->bm->bat_type[
1463 di->bat->batt_id].maint_b_chg_timer_h); 1463 di->bm->batt_id].maint_b_chg_timer_h);
1464 abx500_chargalg_start_charging(di, 1464 abx500_chargalg_start_charging(di,
1465 di->bat->bat_type[ 1465 di->bm->bat_type[
1466 di->bat->batt_id].maint_b_vol_lvl, 1466 di->bm->batt_id].maint_b_vol_lvl,
1467 di->bat->bat_type[ 1467 di->bm->bat_type[
1468 di->bat->batt_id].maint_b_cur_lvl); 1468 di->bm->batt_id].maint_b_cur_lvl);
1469 abx500_chargalg_state_to(di, STATE_MAINTENANCE_B); 1469 abx500_chargalg_state_to(di, STATE_MAINTENANCE_B);
1470 power_supply_changed(&di->chargalg_psy); 1470 power_supply_changed(&di->chargalg_psy);
1471 /* Intentional fallthrough*/ 1471 /* Intentional fallthrough*/
@@ -1479,10 +1479,10 @@ static void abx500_chargalg_algorithm(struct abx500_chargalg *di)
1479 1479
1480 case STATE_TEMP_LOWHIGH_INIT: 1480 case STATE_TEMP_LOWHIGH_INIT:
1481 abx500_chargalg_start_charging(di, 1481 abx500_chargalg_start_charging(di,
1482 di->bat->bat_type[ 1482 di->bm->bat_type[
1483 di->bat->batt_id].low_high_vol_lvl, 1483 di->bm->batt_id].low_high_vol_lvl,
1484 di->bat->bat_type[ 1484 di->bm->bat_type[
1485 di->bat->batt_id].low_high_cur_lvl); 1485 di->bm->batt_id].low_high_cur_lvl);
1486 abx500_chargalg_stop_maintenance_timer(di); 1486 abx500_chargalg_stop_maintenance_timer(di);
1487 di->charge_status = POWER_SUPPLY_STATUS_CHARGING; 1487 di->charge_status = POWER_SUPPLY_STATUS_CHARGING;
1488 abx500_chargalg_state_to(di, STATE_TEMP_LOWHIGH); 1488 abx500_chargalg_state_to(di, STATE_TEMP_LOWHIGH);
@@ -1543,11 +1543,11 @@ static void abx500_chargalg_periodic_work(struct work_struct *work)
1543 if (di->chg_info.conn_chg) 1543 if (di->chg_info.conn_chg)
1544 queue_delayed_work(di->chargalg_wq, 1544 queue_delayed_work(di->chargalg_wq,
1545 &di->chargalg_periodic_work, 1545 &di->chargalg_periodic_work,
1546 di->bat->interval_charging * HZ); 1546 di->bm->interval_charging * HZ);
1547 else 1547 else
1548 queue_delayed_work(di->chargalg_wq, 1548 queue_delayed_work(di->chargalg_wq,
1549 &di->chargalg_periodic_work, 1549 &di->chargalg_periodic_work,
1550 di->bat->interval_not_charging * HZ); 1550 di->bm->interval_not_charging * HZ);
1551} 1551}
1552 1552
1553/** 1553/**
@@ -1614,7 +1614,7 @@ static int abx500_chargalg_get_property(struct power_supply *psy,
1614 if (di->events.batt_ovv) { 1614 if (di->events.batt_ovv) {
1615 val->intval = POWER_SUPPLY_HEALTH_OVERVOLTAGE; 1615 val->intval = POWER_SUPPLY_HEALTH_OVERVOLTAGE;
1616 } else if (di->events.btemp_underover) { 1616 } else if (di->events.btemp_underover) {
1617 if (di->batt_data.temp <= di->bat->temp_under) 1617 if (di->batt_data.temp <= di->bm->temp_under)
1618 val->intval = POWER_SUPPLY_HEALTH_COLD; 1618 val->intval = POWER_SUPPLY_HEALTH_COLD;
1619 else 1619 else
1620 val->intval = POWER_SUPPLY_HEALTH_OVERHEAT; 1620 val->intval = POWER_SUPPLY_HEALTH_OVERHEAT;
@@ -1814,10 +1814,10 @@ static int __devinit abx500_chargalg_probe(struct platform_device *pdev)
1814 dev_err(&pdev->dev, "%s no mem for ab8500_chargalg\n", __func__); 1814 dev_err(&pdev->dev, "%s no mem for ab8500_chargalg\n", __func__);
1815 return -ENOMEM; 1815 return -ENOMEM;
1816 } 1816 }
1817 di->bat = pdev->mfd_cell->platform_data; 1817 di->bm = pdev->mfd_cell->platform_data;
1818 if (!di->bat) { 1818 if (!di->bm) {
1819 if (np) { 1819 if (np) {
1820 ret = bmdevs_of_probe(&pdev->dev, np, &di->bat); 1820 ret = ab8500_bm_of_probe(&pdev->dev, np, &di->bm);
1821 if (ret) { 1821 if (ret) {
1822 dev_err(&pdev->dev, 1822 dev_err(&pdev->dev,
1823 "failed to get battery information\n"); 1823 "failed to get battery information\n");
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h
index 2138bd33021a..6ce749a0e9d4 100644
--- a/include/linux/mfd/abx500.h
+++ b/include/linux/mfd/abx500.h
@@ -279,9 +279,9 @@ enum {
279 NTC_INTERNAL, 279 NTC_INTERNAL,
280}; 280};
281 281
282int bmdevs_of_probe(struct device *dev, 282int ab8500_bm_of_probe(struct device *dev,
283 struct device_node *np, 283 struct device_node *np,
284 struct abx500_bm_data **battery); 284 struct abx500_bm_data **battery);
285 285
286int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, 286int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg,
287 u8 value); 287 u8 value);