From c4205fe6be9dc3b998451e4eb44aecf91ef4665f Mon Sep 17 00:00:00 2001 From: Subbaraman Narayanamurthy Date: Fri, 23 Jun 2017 18:25:09 -0700 Subject: [PATCH] power: qpnp-fg-gen3: add support for skew in capacity learning algorithm In some cases, a skew needs to be applied on the learnt capacity to counter the error. Add support for it. Change-Id: I7f80088e7db4e3414d86983722c92e4fc14323e0 Signed-off-by: Subbaraman Narayanamurthy Signed-off-by: Abhijeet Dharmapurikar --- drivers/power/supply/qcom/qpnp-fg-gen3.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/power/supply/qcom/qpnp-fg-gen3.c b/drivers/power/supply/qcom/qpnp-fg-gen3.c index 9b427a1b52c5..df20a14fb457 100644 --- a/drivers/power/supply/qcom/qpnp-fg-gen3.c +++ b/drivers/power/supply/qcom/qpnp-fg-gen3.c @@ -1315,11 +1315,20 @@ static bool is_temp_valid_cap_learning(struct fg_chip *chip) return true; } +#define QNOVO_CL_SKEW_DECIPCT -30 static void fg_cap_learning_post_process(struct fg_chip *chip) { int64_t max_inc_val, min_dec_val, old_cap; int rc; + if (is_qnovo_en(chip)) { + fg_dbg(chip, FG_CAP_LEARN, "applying skew %d on current learnt capacity %lld\n", + QNOVO_CL_SKEW_DECIPCT, chip->cl.final_cc_uah); + chip->cl.final_cc_uah = chip->cl.final_cc_uah * + (1000 + QNOVO_CL_SKEW_DECIPCT); + do_div(chip->cl.final_cc_uah, 1000); + } + max_inc_val = chip->cl.learned_cc_uah * (1000 + chip->dt.cl_max_cap_inc); do_div(max_inc_val, 1000);