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

Commit df5fbccd authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: supply: qcom: Update SMB5 charger properties for GKI compliance"

parents 54dded29 fd8fcf07
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -945,7 +945,7 @@ static void pl_taper_work(struct work_struct *work)
		}

		chip->charge_type = pval.intval;
		if (pval.intval == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER) {
		if (pval.intval == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE) {
			fcc_ua = get_client_vote(chip->fcc_votable,
					TAPER_STEPPER_VOTER);
			if (fcc_ua < 0) {
@@ -1558,7 +1558,7 @@ static int pl_disable_vote_callback(struct votable *votable,
		if (rc < 0) {
			pr_err("Couldn't get batt charge type rc=%d\n", rc);
		} else {
			if (pval.intval == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER
			if (pval.intval == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE
				&& !chip->taper_work_running) {
				pl_dbg(chip, PR_PARALLEL,
					"pl enabled in Taper scheduing work\n");
@@ -1761,7 +1761,7 @@ static void handle_main_charge_type(struct pl_data *chip)

	/* not fast/not taper state to disables parallel */
	if ((pval.intval != POWER_SUPPLY_CHARGE_TYPE_FAST)
		&& (pval.intval != QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER)) {
		&& (pval.intval != POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE)) {
		vote(chip->pl_disable_votable, CHG_STATE_VOTER, true, 0);
		chip->charge_type = pval.intval;
		return;
@@ -1769,7 +1769,7 @@ static void handle_main_charge_type(struct pl_data *chip)

	/* handle taper charge entry */
	if (chip->charge_type == POWER_SUPPLY_CHARGE_TYPE_FAST
		&& (pval.intval == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER)) {
		&& (pval.intval == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE)) {
		chip->charge_type = pval.intval;
		if (!chip->taper_work_running) {
			pl_dbg(chip, PR_PARALLEL, "taper entry scheduling work\n");
@@ -1780,7 +1780,7 @@ static void handle_main_charge_type(struct pl_data *chip)
	}

	/* handle fast/taper charge entry */
	if (pval.intval == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER
	if (pval.intval == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE
			|| pval.intval == POWER_SUPPLY_CHARGE_TYPE_FAST) {
		/*
		 * Undo parallel charging termination if entered taper in
@@ -1895,7 +1895,7 @@ static void handle_parallel_in_taper(struct pl_data *chip)
	 * if parallel is seen in taper mode ever, that is an anomaly and
	 * we disable parallel charger
	 */
	if (pval.intval == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER) {
	if (pval.intval == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE) {
		vote(chip->pl_disable_votable, PL_TAPER_EARLY_BAD_VOTER,
				true, 0);
		return;
+3 −3
Original line number Diff line number Diff line
@@ -1213,7 +1213,7 @@ static int get_time_to_full_locked(struct ttf *ttf, int *val)
	pr_debug("TTF: i_cc2cv=%d\n", i_cc2cv);

	/* if we are already in CV state then we can skip estimating CC */
	if (charge_type == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER)
	if (charge_type == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE)
		goto cv_estimate;

	/* estimated SOC at the CC to CV transition */
@@ -1343,14 +1343,14 @@ static int get_time_to_full_locked(struct ttf *ttf, int *val)
cv_estimate:
	pr_debug("TTF: t_predicted_cc=%d\n", t_predicted);

	if (charge_type == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER)
	if (charge_type == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE)
		iterm = max(100, abs(iterm));
	else
		iterm = max(100, abs(iterm) + ttf->iterm_delta);

	pr_debug("TTF: iterm=%d\n", iterm);

	if (charge_type == QTI_POWER_SUPPLY_CHARGE_TYPE_TAPER)
	if (charge_type == POWER_SUPPLY_CHARGE_TYPE_ADAPTIVE)
		tau = max(MILLI_UNIT, ibatt_avg * MILLI_UNIT / iterm);
	else
		tau = max(MILLI_UNIT, i_cc2cv * MILLI_UNIT / iterm);
+3 −0
Original line number Diff line number Diff line
@@ -869,6 +869,7 @@ static int smb5_usb_get_prop(struct power_supply *psy,
		rc = smblib_get_prop_scope(chg, val);
		break;
	case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT:
		/* USB uses this to set SDP current */
		val->intval = get_client_vote(chg->usb_icl_votable,
					      USB_PSY_VOTER);
		break;
@@ -1072,6 +1073,7 @@ static int smb5_dc_get_prop(struct power_supply *psy,

	switch (psp) {
	case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT:
		/* For DC, INPUT_CURRENT_LIMIT equates to INPUT_SUSPEND */
		val->intval = get_effective_result(chg->dc_suspend_votable);
		break;
	case POWER_SUPPLY_PROP_PRESENT:
@@ -1209,6 +1211,7 @@ static int smb5_batt_get_prop(struct power_supply *psy,
		rc = smblib_get_prop_batt_present(chg, pval);
		break;
	case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT:
		/* For battery, INPUT_CURRENT_LIMIT equates to INPUT_SUSPEND */
		rc = smblib_get_prop_input_current_limit_usb(chg, pval);
		break;
	case POWER_SUPPLY_PROP_CHARGE_TYPE:
+3 −0
Original line number Diff line number Diff line
@@ -260,6 +260,9 @@ int smb5_iio_get_prop(struct smb_charger *chg, int channel, int *val)
	case PSY_IIO_FCC_STEPPER_ENABLE:
		*val = chg->fcc_stepper_enable;
		break;
	case PSY_IIO_TYPEC_ACCESSORY_MODE:
		rc = smblib_get_usb_prop_typec_accessory_mode(chg, val);
		break;
	default:
		pr_err("get prop %d is not supported\n", channel);
		rc = -EINVAL;
+1 −0
Original line number Diff line number Diff line
@@ -199,6 +199,7 @@ static const struct smb5_iio_prop_channels smb5_chans_pmic[] = {
	SMB5_CHAN_ACTIVITY("battery_recharge_soc", RECHARGE_SOC)
	SMB5_CHAN_ACTIVITY("battery_force_recharge", FORCE_RECHARGE)
	SMB5_CHAN_ACTIVITY("battery_fcc_stepper_enable", FCC_STEPPER_ENABLE)
	SMB5_CHAN_INDEX("usb_typec_accessory_mode", TYPEC_ACCESSORY_MODE)
};

struct iio_channel **get_ext_channels(struct device *dev,
Loading