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

Commit 9045b11b authored by Umang Agrawal's avatar Umang Agrawal
Browse files

power: qcom: smb1390: Add IREV IRQ handler to toggle switcher



Add support to toggle SMB1390 switcher as part of IREV IRQ
handling. This will ensure SMB1390 is not stuck in disabled
state.

CRs-Fixed: 2200344

Change-Id: Ia2139d00965544e1dbb6d33685346dfbe5293337
Signed-off-by: default avatarUmang Agrawal <uagrawal@codeaurora.org>
parent 271536fc
Loading
Loading
Loading
Loading
+29 −1
Original line number Diff line number Diff line
@@ -209,6 +209,34 @@ static irqreturn_t default_irq_handler(int irq, void *data)
	return IRQ_HANDLED;
}

static irqreturn_t irev_irq_handler(int irq, void *data)
{
	struct smb1390 *chip = data;
	int rc;

	pr_debug("IREV IRQ triggered\n");

	rc = smb1390_masked_write(chip, CORE_CONTROL1_REG,
			CMD_EN_SWITCHER_BIT, 0);
	if (rc < 0) {
		pr_err("Couldn't disable switcher by command mode, rc=%d\n",
			rc);
		goto out;
	}

	rc = smb1390_masked_write(chip, CORE_CONTROL1_REG,
			CMD_EN_SWITCHER_BIT, CMD_EN_SWITCHER_BIT);
	if (rc < 0) {
		pr_err("Couldn't enable switcher by command mode, rc=%d\n",
			rc);
		goto out;
	}

out:
	kobject_uevent(&chip->dev->kobj, KOBJ_CHANGE);
	return IRQ_HANDLED;
}

static const struct smb_irq smb_irqs[] = {
	[SWITCHER_OFF_WINDOW_IRQ] = {
		.name		= "switcher-off-window",
@@ -227,7 +255,7 @@ static const struct smb_irq smb_irqs[] = {
	},
	[IREV_IRQ] = {
		.name		= "irev-fault",
		.handler	= default_irq_handler,
		.handler	= irev_irq_handler,
		.wake		= true,
	},
	[VPH_OV_HARD_IRQ] = {