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

Commit d0a8cf03 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "power: qpnp-charger: Disable IRQ wake-up when disabling the IRQ"

parents 584d0f68 ebd84378
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -235,6 +235,7 @@ struct qpnp_chg_irq {
	int		irq;
	unsigned long		disabled;
	unsigned long		wake_enable;
	bool			is_wake;
};

struct qpnp_chg_regulator {
@@ -625,6 +626,10 @@ qpnp_chg_enable_irq(struct qpnp_chg_irq *irq)
		pr_debug("number = %d\n", irq->irq);
		enable_irq(irq->irq);
	}
	if ((irq->is_wake) && (!__test_and_set_bit(0, &irq->wake_enable))) {
		pr_debug("enable wake, number = %d\n", irq->irq);
		enable_irq_wake(irq->irq);
	}
}

static void
@@ -634,6 +639,10 @@ qpnp_chg_disable_irq(struct qpnp_chg_irq *irq)
		pr_debug("number = %d\n", irq->irq);
		disable_irq_nosync(irq->irq);
	}
	if ((irq->is_wake) && (__test_and_clear_bit(0, &irq->wake_enable))) {
		pr_debug("disable wake, number = %d\n", irq->irq);
		disable_irq_wake(irq->irq);
	}
}

static void
@@ -643,6 +652,7 @@ qpnp_chg_irq_wake_enable(struct qpnp_chg_irq *irq)
		pr_debug("number = %d\n", irq->irq);
		enable_irq_wake(irq->irq);
	}
	irq->is_wake = true;
}

static void
@@ -652,6 +662,7 @@ qpnp_chg_irq_wake_disable(struct qpnp_chg_irq *irq)
		pr_debug("number = %d\n", irq->irq);
		disable_irq_wake(irq->irq);
	}
	irq->is_wake = false;
}

#define USB_OTG_EN_BIT	BIT(0)
@@ -4614,8 +4625,8 @@ qpnp_chg_request_irqs(struct qpnp_chg_chip *chip)

			qpnp_chg_irq_wake_enable(&chip->chg_trklchg);
			qpnp_chg_irq_wake_enable(&chip->chg_failed);
			qpnp_chg_disable_irq(&chip->chg_vbatdet_lo);
			qpnp_chg_irq_wake_enable(&chip->chg_vbatdet_lo);
			qpnp_chg_disable_irq(&chip->chg_vbatdet_lo);

			break;
		case SMBB_BAT_IF_SUBTYPE: