Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56a8eb23 authored by Sahil Chandna's avatar Sahil Chandna Committed by Gerrit - the friendly Code Review server
Browse files

power: qpnp-fg-gen4: Support OCV based step charging in TTF algorithm



Currently TTF algorithm support Vbatt based step charging, but since
oscillation in Vbatt is high when the load changes abruptly we have
moved to OCV based step charging. Add support for OCV based step charging
when TTF algorithm queries for mode and OCV value.

Change-Id: Iefffc864ba362aed53c1b486c25731a140a5b000
Signed-off-by: default avatarSahil Chandna <chandna@codeaurora.org>
parent 9f859f3c
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1035,6 +1035,11 @@ static int fg_gen4_get_ttf_param(void *data, enum ttf_param param, int *val)
	case TTF_VBAT:
		rc = fg_get_battery_voltage(fg, val);
		break;
	case TTF_OCV:
		rc = fg_get_sram_prop(fg, FG_SRAM_OCV, val);
		if (rc < 0)
			pr_err("Failed to get battery OCV, rc=%d\n", rc);
		break;
	case TTF_IBAT:
		rc = fg_get_battery_current(fg, val);
		break;
@@ -1068,6 +1073,8 @@ static int fg_gen4_get_ttf_param(void *data, enum ttf_param param, int *val)
			*val = TTF_MODE_QNOVO;
		else if (chip->ttf->step_chg_cfg_valid)
			*val = TTF_MODE_V_STEP_CHG;
		else if (chip->ttf->ocv_step_chg_cfg_valid)
			*val = TTF_MODE_OCV_STEP_CHG;
		else
			*val = TTF_MODE_NORMAL;
		break;
@@ -1660,6 +1667,12 @@ static int fg_gen4_get_batt_profile(struct fg_dev *fg)

		chip->ttf->step_chg_num_params = tuple_len;
		chip->ttf->step_chg_cfg_valid = true;
		if (of_property_read_bool(profile_node,
					   "qcom,ocv-based-step-chg")) {
			chip->ttf->step_chg_cfg_valid = false;
			chip->ttf->ocv_step_chg_cfg_valid = true;
		}

		mutex_unlock(&chip->ttf->lock);

		if (chip->ttf->step_chg_cfg_valid) {