From bc52f1110f88019e6fc2c73701e8784a0d3d864e Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BC=A0=E6=99=B4?= Date: Tue, 18 Nov 2014 16:10:52 +0800 Subject: [PATCH] rk3288:pmic:ricoh619:slove fuel gauge error when sleep wakeup for a long time --- drivers/power/ricoh619-battery.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) mode change 100644 => 100755 drivers/power/ricoh619-battery.c 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; -- 2.34.1