power: qpnp-bms: improve coulomb counter shadow performance
Improve the shadow coulomb counter performance by keeping a software
shadow of it and periodically adding error compensated readings.
Change-Id: Ie549b7d0eef362f7473621de78f536173dcff09d
Signed-off-by: Xiaozhe Shi <xiaozhes@codeaurora.org>
diff --git a/drivers/power/qpnp-bms.c b/drivers/power/qpnp-bms.c
index 0dfa545..14cba58 100644
--- a/drivers/power/qpnp-bms.c
+++ b/drivers/power/qpnp-bms.c
@@ -1306,7 +1306,7 @@
struct soc_params *params,
int batt_temp)
{
- int soc_rbatt;
+ int soc_rbatt, shdw_cc_uah;
calculate_delta_time(&chip->tm_sec, ¶ms->delta_time_s);
pr_debug("tm_sec = %ld, delta_s = %d\n",
@@ -1322,8 +1322,10 @@
/* calculate cc micro_volt_hour */
params->cc_uah = calculate_cc(chip, raw->cc, CC, RESET);
- pr_debug("cc_uah = %duAh raw->cc = %llx\n",
- params->cc_uah, raw->cc);
+ shdw_cc_uah = calculate_cc(chip, raw->shdw_cc, SHDW_CC, RESET);
+ pr_debug("cc_uah = %duAh raw->cc = %llx, shdw_cc_uah = %duAh raw->shdw_cc = %llx\n",
+ params->cc_uah, raw->cc,
+ shdw_cc_uah, raw->shdw_cc);
soc_rbatt = ((params->ocv_charge_uah - params->cc_uah) * 100)
/ params->fcc_uah;