diff options
-rw-r--r-- | drivers/power/ab8500_bmdata.c | 6 | ||||
-rw-r--r-- | drivers/power/ab8500_btemp.c | 60 | ||||
-rw-r--r-- | drivers/power/ab8500_charger.c | 24 | ||||
-rw-r--r-- | drivers/power/ab8500_fg.c | 96 | ||||
-rw-r--r-- | drivers/power/abx500_chargalg.c | 112 | ||||
-rw-r--r-- | include/linux/mfd/abx500.h | 6 |
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 | ||
455 | int __devinit bmdevs_of_probe(struct device *dev, | 455 | int __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 | */ |
639 | static void abx500_chargalg_check_temp(struct abx500_chargalg *di) | 639 | static 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 | */ |
683 | static void abx500_chargalg_check_charger_voltage(struct abx500_chargalg *di) | 683 | static 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) | |||
733 | static void init_maxim_chg_curr(struct abx500_chargalg *di) | 733 | static 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 | ||
282 | int bmdevs_of_probe(struct device *dev, | 282 | int 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 | ||
286 | int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, | 286 | int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, |
287 | u8 value); | 287 | u8 value); |