qcom: qpnp-fg-gen3: Reconfigure profile parameters upon battery hotswap
Currently, we configure battery profile parameters during bootup and they're not configured again during battery hotswap. Fix this by configuring those parameters after getting it from the device tree. Change-Id: I43c5c9cdc6dfc12751ae0a67faee59aacf4326dc Signed-off-by: Subbaraman Narayanamurthy <subbaram@codeaurora.org>
This commit is contained in:
parent
493821b72c
commit
0356676d7d
1 changed files with 34 additions and 21 deletions
|
@ -2189,6 +2189,35 @@ static int fg_get_cycle_count(struct fg_chip *chip)
|
|||
return count;
|
||||
}
|
||||
|
||||
static int fg_bp_params_config(struct fg_chip *chip)
|
||||
{
|
||||
int rc = 0;
|
||||
u8 buf;
|
||||
|
||||
/* This SRAM register is only present in v2.0 and above */
|
||||
if (!(chip->wa_flags & PMI8998_V1_REV_WA) &&
|
||||
chip->bp.float_volt_uv > 0) {
|
||||
fg_encode(chip->sp, FG_SRAM_FLOAT_VOLT,
|
||||
chip->bp.float_volt_uv / 1000, &buf);
|
||||
rc = fg_sram_write(chip, chip->sp[FG_SRAM_FLOAT_VOLT].addr_word,
|
||||
chip->sp[FG_SRAM_FLOAT_VOLT].addr_byte, &buf,
|
||||
chip->sp[FG_SRAM_FLOAT_VOLT].len, FG_IMA_DEFAULT);
|
||||
if (rc < 0) {
|
||||
pr_err("Error in writing float_volt, rc=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
if (chip->bp.vbatt_full_mv > 0) {
|
||||
rc = fg_set_constant_chg_voltage(chip,
|
||||
chip->bp.vbatt_full_mv * 1000);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
#define PROFILE_LOAD_BIT BIT(0)
|
||||
#define BOOTLOADER_LOAD_BIT BIT(1)
|
||||
#define BOOTLOADER_RESTART_BIT BIT(2)
|
||||
|
@ -2367,6 +2396,11 @@ static void profile_load_work(struct work_struct *work)
|
|||
}
|
||||
|
||||
done:
|
||||
rc = fg_bp_params_config(chip);
|
||||
if (rc < 0)
|
||||
pr_err("Error in configuring battery profile params, rc:%d\n",
|
||||
rc);
|
||||
|
||||
rc = fg_sram_read(chip, NOM_CAP_WORD, NOM_CAP_OFFSET, buf, 2,
|
||||
FG_IMA_DEFAULT);
|
||||
if (rc < 0) {
|
||||
|
@ -3018,27 +3052,6 @@ static int fg_hw_init(struct fg_chip *chip)
|
|||
return rc;
|
||||
}
|
||||
|
||||
/* This SRAM register is only present in v2.0 and above */
|
||||
if (!(chip->wa_flags & PMI8998_V1_REV_WA) &&
|
||||
chip->bp.float_volt_uv > 0) {
|
||||
fg_encode(chip->sp, FG_SRAM_FLOAT_VOLT,
|
||||
chip->bp.float_volt_uv / 1000, buf);
|
||||
rc = fg_sram_write(chip, chip->sp[FG_SRAM_FLOAT_VOLT].addr_word,
|
||||
chip->sp[FG_SRAM_FLOAT_VOLT].addr_byte, buf,
|
||||
chip->sp[FG_SRAM_FLOAT_VOLT].len, FG_IMA_DEFAULT);
|
||||
if (rc < 0) {
|
||||
pr_err("Error in writing float_volt, rc=%d\n", rc);
|
||||
return rc;
|
||||
}
|
||||
}
|
||||
|
||||
if (chip->bp.vbatt_full_mv > 0) {
|
||||
rc = fg_set_constant_chg_voltage(chip,
|
||||
chip->bp.vbatt_full_mv * 1000);
|
||||
if (rc < 0)
|
||||
return rc;
|
||||
}
|
||||
|
||||
fg_encode(chip->sp, FG_SRAM_CHG_TERM_CURR, chip->dt.chg_term_curr_ma,
|
||||
buf);
|
||||
rc = fg_sram_write(chip, chip->sp[FG_SRAM_CHG_TERM_CURR].addr_word,
|
||||
|
|
Loading…
Add table
Reference in a new issue