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

Commit 2d578f48 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "battery: disable parallel at end of taper stepper"

parents 0bdf9dc2 004f7baa
Loading
Loading
Loading
Loading
+20 −6
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@
#define ICL_CHANGE_VOTER		"ICL_CHANGE_VOTER"
#define PL_INDIRECT_VOTER		"PL_INDIRECT_VOTER"
#define USBIN_I_VOTER			"USBIN_I_VOTER"
#define FCC_CHANGE_VOTER		"FCC_CHANGE_VOTER"
#define PL_FCC_LOW_VOTER		"PL_FCC_LOW_VOTER"

struct pl_data {
	int			pl_mode;
@@ -357,12 +357,26 @@ static void pl_taper_work(struct work_struct *work)
	union power_supply_propval pval = {0, };
	int rc;
	int eff_fcc_ua;
	int total_fcc_ua, master_fcc_ua, slave_fcc_ua = 0;

	chip->taper_work_running = true;
	while (true) {
		/* exit immediately if parallel is disabled */
		if (get_effective_result(chip->pl_disable_votable)) {
			pl_dbg(chip, PR_PARALLEL, "terminating parallel not in progress\n");
			/*
			 * if parallel's FCC share is low, simply disable
			 * parallel with TAPER_END_VOTER
			 */
			total_fcc_ua = get_effective_result_locked(
					chip->fcc_votable);
			get_fcc_split(chip, total_fcc_ua, &master_fcc_ua,
					&slave_fcc_ua);
			if (slave_fcc_ua <= MINIMUM_PARALLEL_FCC_UA) {
				pl_dbg(chip, PR_PARALLEL, "terminating: parallel's share is low\n");
				vote(chip->pl_disable_votable, TAPER_END_VOTER,
						true, 0);
			} else {
				pl_dbg(chip, PR_PARALLEL, "terminating: parallel disabled\n");
			}
			goto done;
		}

@@ -420,11 +434,11 @@ static int pl_fcc_vote_callback(struct votable *votable, void *data,

		if (slave_fcc_ua > MINIMUM_PARALLEL_FCC_UA) {
			chip->slave_fcc_ua = slave_fcc_ua;
			vote(chip->pl_disable_votable, FCC_CHANGE_VOTER,
			vote(chip->pl_disable_votable, PL_FCC_LOW_VOTER,
							false, 0);
		} else {
			chip->slave_fcc_ua = 0;
			vote(chip->pl_disable_votable, FCC_CHANGE_VOTER,
			vote(chip->pl_disable_votable, PL_FCC_LOW_VOTER,
							true, 0);
		}
	}
@@ -1012,7 +1026,7 @@ int qcom_batt_init(void)
		goto release_wakeup_source;
	}

	chip->fv_votable = create_votable("FV", VOTE_MAX,
	chip->fv_votable = create_votable("FV", VOTE_MIN,
					pl_fv_vote_callback,
					chip);
	if (IS_ERR(chip->fv_votable)) {
+2 −8
Original line number Diff line number Diff line
@@ -1100,14 +1100,8 @@ static int smb2_batt_set_prop(struct power_supply *psy,
		rc = smblib_set_prop_charge_qnovo_enable(chg, val);
		break;
	case POWER_SUPPLY_PROP_VOLTAGE_QNOVO:
		if (val->intval == -EINVAL) {
			vote(chg->fv_votable, BATT_PROFILE_VOTER,
					true, chg->batt_profile_fv_uv);
			vote(chg->fv_votable, QNOVO_VOTER, false, 0);
		} else {
			vote(chg->fv_votable, QNOVO_VOTER, true, val->intval);
			vote(chg->fv_votable, BATT_PROFILE_VOTER, false, 0);
		}
		vote(chg->fv_votable, QNOVO_VOTER,
			(val->intval >= 0), val->intval);
		break;
	case POWER_SUPPLY_PROP_CURRENT_QNOVO:
		vote(chg->pl_disable_votable, PL_QNOVO_VOTER,
+1 −1
Original line number Diff line number Diff line
@@ -4023,7 +4023,7 @@ static void smblib_handle_typec_removal(struct smb_charger *chg)

	/* reset parallel voters */
	vote(chg->pl_disable_votable, PL_DELAY_VOTER, true, 0);
	vote(chg->pl_disable_votable, FCC_CHANGE_VOTER, false, 0);
	vote(chg->pl_disable_votable, PL_FCC_LOW_VOTER, false, 0);
	vote(chg->pl_enable_votable_indirect, USBIN_I_VOTER, false, 0);
	vote(chg->pl_enable_votable_indirect, USBIN_V_VOTER, false, 0);
	vote(chg->awake_votable, PL_DELAY_VOTER, false, 0);
+1 −1
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ enum print_reason {
#define USBIN_I_VOTER			"USBIN_I_VOTER"
#define WEAK_CHARGER_VOTER		"WEAK_CHARGER_VOTER"
#define OTG_VOTER			"OTG_VOTER"
#define FCC_CHANGE_VOTER		"FCC_CHANGE_VOTER"
#define PL_FCC_LOW_VOTER		"PL_FCC_LOW_VOTER"
#define WBC_VOTER			"WBC_VOTER"

#define VCONN_MAX_ATTEMPTS	3