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

Commit 29add0fa authored by Umang Agrawal's avatar Umang Agrawal Committed by Guru Das Srinagesh
Browse files

power: smb1390: Add IREV IRQ handler to toggle switcher



Added support of toggling switcher, whenever IREV IRQ is triggered
as because the switcher is expected to be restarted to deal with
the load release case.

CRs-Fixed: 2200344
Change-Id: Ia2139d00965544e1dbb6d33685346dfbe5293337
Signed-off-by: default avatarUmang Agrawal <uagrawal@codeaurora.org>
parent 47cb4b24
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -219,6 +219,32 @@ 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\n");
		goto out;
	}

	rc = smb1390_masked_write(chip, CORE_CONTROL1_REG,
			CMD_EN_SWITCHER_BIT, 1);
	if (rc < 0) {
		pr_err("Couldn't enable switcher by command mode\n");
		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",
@@ -237,7 +263,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] = {