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

Commit 9ec22fd9 authored by Umang Agrawal's avatar Umang Agrawal Committed by Harry Yang
Browse files

power: smb5: Fix IRQ storm due to WDOG SNARL IRQ



Currently, SNARL WDOG IRQ is required only for SW Thermal Regulation
WA. But, the default enablement of WDOG SNARL IRQ during initialization
results in irq storm.

Fix irq storm issue, by disabling WDOG SNARL IRQ by default.

Change-Id: I7aa40c098c3c5c68174bb11568f71e5fff2e2096
Signed-off-by: default avatarUmang Agrawal <uagrawal@codeaurora.org>
parent 8d296426
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2484,6 +2484,13 @@ static int smb5_request_interrupts(struct smb5 *chip)
	if (chg->irq_info[USBIN_ICL_CHANGE_IRQ].irq)
		chg->usb_icl_change_irq_enabled = true;

	/*
	 * Disable WDOG SNARL IRQ by default to prevent IRQ storm. If required
	 * for any application, enable it through votable.
	 */
	if (chg->irq_info[WDOG_SNARL_IRQ].irq)
		vote(chg->wdog_snarl_irq_en_votable, DEFAULT_VOTER, false, 0);

	return rc;
}

+5 −2
Original line number Diff line number Diff line
@@ -1342,10 +1342,13 @@ static int smblib_wdog_snarl_irq_en_vote_callback(struct votable *votable,
	if (!chg->irq_info[WDOG_SNARL_IRQ].irq)
		return 0;

	if (enable)
	if (enable) {
		enable_irq(chg->irq_info[WDOG_SNARL_IRQ].irq);
	else
		enable_irq_wake(chg->irq_info[WDOG_SNARL_IRQ].irq);
	} else {
		disable_irq_wake(chg->irq_info[WDOG_SNARL_IRQ].irq);
		disable_irq_nosync(chg->irq_info[WDOG_SNARL_IRQ].irq);
	}

	return 0;
}