From: 张晴 Date: Tue, 18 Nov 2014 08:10:52 +0000 (+0800) Subject: rk3288:pmic:ricoh619:slove fuel gauge error when sleep wakeup for a long time X-Git-Tag: firefly_0821_release~4460 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=bc52f1110f88019e6fc2c73701e8784a0d3d864e;p=firefly-linux-kernel-4.4.55.git rk3288:pmic:ricoh619:slove fuel gauge error when sleep wakeup for a long time --- diff --git a/drivers/power/ricoh619-battery.c b/drivers/power/ricoh619-battery.c old mode 100644 new mode 100755 index deb097e585b7..d4da2416ea91 --- a/drivers/power/ricoh619-battery.c +++ b/drivers/power/ricoh619-battery.c @@ -767,7 +767,14 @@ static int get_target_use_cap(struct ricoh619_battery_info *info) j = info->soca->soc - info->soca->soc/1000*1000; Ocv_now_table = ocv_table[i]*100+(ocv_table[i+1]-ocv_table[i])*j/10; - Rsys_now = (info->soca->Vsys_ave - Ocv_now_table) / info->soca->Ibat_ave; + Rsys_now = (info->soca->Vsys_ave - Ocv_now_table) / info->soca->Ibat_ave; + if (((abs(info->soca->soc - info->soca->displayed_soc)) > 10) + && (info->soca->Ibat_ave > -250)) { + if (Rsys_now < 0) + Rsys_now = max(-info->soca->Rbat, Rsys_now); + else + Rsys_now = min(info->soca->Rbat, Rsys_now); + } Ocv_ZeroPer_now = info->soca->target_vsys * 1000 - Ibat_now * Rsys_now;