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

Commit 6349f860 authored by Divya Sharma's avatar Divya Sharma
Browse files

Revert "power: smb5-lib: Fix floating cable IRQ storms"



This reverts commit 1d74850b.

Change-Id: I55101ea8d09e22c63a75e438d1a849b88b42f02b
Signed-off-by: default avatarDivya Sharma <divyash@codeaurora.org>
parent a157124f
Loading
Loading
Loading
Loading
+18 −43
Original line number Diff line number Diff line
@@ -3672,7 +3672,6 @@ enum alarmtimer_restart smblib_lpd_recheck_timer(struct alarm *alarm,
							lpd_recheck_timer);
	int rc;

	if (chg->lpd_reason == LPD_MOISTURE_DETECTED) {
	pval.intval = POWER_SUPPLY_TYPEC_PR_DUAL;
	rc = smblib_set_prop_typec_power_role(chg, &pval);
	if (rc < 0) {
@@ -3680,19 +3679,8 @@ enum alarmtimer_restart smblib_lpd_recheck_timer(struct alarm *alarm,
			pval.intval, rc);
		return ALARMTIMER_NORESTART;
	}
	} else {
		rc = smblib_masked_write(chg, TYPE_C_INTERRUPT_EN_CFG_2_REG,
					TYPEC_WATER_DETECTION_INT_EN_BIT,
					TYPEC_WATER_DETECTION_INT_EN_BIT);
		if (rc < 0) {
			smblib_err(chg, "Couldn't set TYPE_C_INTERRUPT_EN_CFG_2_REG rc=%d\n",
					rc);
			return ALARMTIMER_NORESTART;
		}
	}

	chg->lpd_stage = LPD_STAGE_NONE;
	chg->lpd_reason = LPD_NONE;

	return ALARMTIMER_NORESTART;
}
@@ -3731,11 +3719,9 @@ static bool smblib_src_lpd(struct smb_charger *chg)
		if (rc < 0)
			smblib_err(chg, "Couldn't write 0x%02x to TYPE_C_INTRPT_ENB_SOFTWARE_CTRL rc=%d\n",
				pval.intval, rc);
		chg->lpd_reason = LPD_MOISTURE_DETECTED;
		alarm_start_relative(&chg->lpd_recheck_timer,
						ms_to_ktime(60000));
	} else {
		chg->lpd_reason = LPD_NONE;
		chg->typec_mode = smblib_get_prop_typec_mode(chg);
	}

@@ -4572,26 +4558,18 @@ static void smblib_lpd_ra_open_work(struct work_struct *work)
	/* Emark cable */
	if ((stat & SRC_RA_OPEN_BIT) &&
			!smblib_rsbux_low(chg, RSBU_K_300K_UV)) {
		/* Floating cable, disable water detection irq temporarily */
		rc = smblib_masked_write(chg, TYPE_C_INTERRUPT_EN_CFG_2_REG,
					TYPEC_WATER_DETECTION_INT_EN_BIT, 0);
		if (rc < 0) {
			smblib_err(chg, "Couldn't set TYPE_C_INTERRUPT_EN_CFG_2_REG rc=%d\n",
					rc);
			goto out;
		}

		/* restore DRP mode */
		pval.intval = POWER_SUPPLY_TYPEC_PR_DUAL;
		rc = smblib_set_prop_typec_power_role(chg, &pval);
		if (rc < 0) {
		if (rc < 0)
			smblib_err(chg, "Couldn't write 0x%02x to TYPE_C_INTRPT_ENB_SOFTWARE_CTRL rc=%d\n",
				pval.intval, rc);
			goto out;

		chg->lpd_stage = LPD_STAGE_NONE;
		vote(chg->awake_votable, LPD_VOTER, false, 0);
		return;
	}

		chg->lpd_reason = LPD_FLOATING_CABLE;
	} else {
	/* Moisture detected, enable sink only mode */
	pval.intval = POWER_SUPPLY_TYPEC_PR_SINK;
	rc = smblib_set_prop_typec_power_role(chg, &pval);
@@ -4601,9 +4579,6 @@ static void smblib_lpd_ra_open_work(struct work_struct *work)
		goto out;
	}

		chg->lpd_reason = LPD_MOISTURE_DETECTED;
	}

	/* recheck in 60 seconds */
	alarm_start_relative(&chg->lpd_recheck_timer, ms_to_ktime(60000));
out:
+0 −7
Original line number Diff line number Diff line
@@ -197,12 +197,6 @@ static const unsigned int smblib_extcon_cable[] = {
	EXTCON_NONE,
};

enum lpd_reason {
	LPD_NONE,
	LPD_MOISTURE_DETECTED,
	LPD_FLOATING_CABLE,
};

enum lpd_stage {
	LPD_STAGE_NONE,
	LPD_STAGE_FLOAT,
@@ -398,7 +392,6 @@ struct smb_charger {
	int			smb_temp_max;
	u8			typec_try_mode;
	int			lpd_stage;
	int			lpd_reason;

	/* workaround flag */
	u32			wa_flags;