power: pm8921-bms: add protection against divide by zero
There is a unprotected divide by zero in the driver- when full charge
capacity of the battery and unusable charge of the battery are calculated
equal.
In such a case set state of charge to 0% without the actual division.
Change-Id: I57f3333e780396de29435d29c30e54940c657d4e
Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
diff --git a/drivers/power/pm8921-bms.c b/drivers/power/pm8921-bms.c
index 709583a..5e65173 100644
--- a/drivers/power/pm8921-bms.c
+++ b/drivers/power/pm8921-bms.c
@@ -1077,8 +1077,14 @@
- unusable_charge_uah;
pr_debug("RUC = %duAh\n", remaining_usable_charge_uah);
- soc = (remaining_usable_charge_uah * 100)
- / (fcc_uah - unusable_charge_uah);
+ if (fcc_uah - unusable_charge_uah <= 0) {
+ pr_warn("FCC = %duAh, UUC = %duAh forcing soc = 0\n",
+ fcc_uah, unusable_charge_uah);
+ soc = 0;
+ } else {
+ soc = (remaining_usable_charge_uah * 100)
+ / (fcc_uah - unusable_charge_uah);
+ }
if (soc > 100)
soc = 100;