summaryrefslogtreecommitdiff
path: root/drivers/mfd/tps65912-irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd/tps65912-irq.c')
-rw-r--r--drivers/mfd/tps65912-irq.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/mfd/tps65912-irq.c b/drivers/mfd/tps65912-irq.c
index 96e7b6a34b0..110d714421b 100644
--- a/drivers/mfd/tps65912-irq.c
+++ b/drivers/mfd/tps65912-irq.c
@@ -81,6 +81,7 @@ static irqreturn_t tps65912_irq(int irq, void *irq_data)
int i;
pr_debug("tps65912 handle irq %d\n", irq);
+ mutex_lock(&tps65912->pm_lock);
tps65912->read(tps65912, TPS65912_INT_STS, 1, &reg);
irq_sts = reg;
@@ -93,6 +94,7 @@ static irqreturn_t tps65912_irq(int irq, void *irq_data)
irq_sts &= ~tps65912->irq_mask;
if (!irq_sts) {
+ mutex_unlock(&tps65912->pm_lock);
pr_debug("tps65912 %d IRQ_NONE\n", irq);
return IRQ_NONE;
}
@@ -121,6 +123,8 @@ static irqreturn_t tps65912_irq(int irq, void *irq_data)
if (reg)
tps65912->write(tps65912, TPS65912_INT_STS4, 1, &reg);
+ mutex_unlock(&tps65912->pm_lock);
+
pr_debug("tps65912 %d IRQ_HANDLED\n", irq);
return IRQ_HANDLED;
}