summaryrefslogtreecommitdiff
path: root/drivers/mfd
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2011-11-14 19:50:13 +0530
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:50:13 -0800
commit0c5329891706a0860a7c597b0bb06f28797eb37a (patch)
tree56b6275aadb6138495359e47d9493aeb86f01679 /drivers/mfd
parentd45ab1ba44d57ca3c08217c5dd1cf3db604301d9 (diff)
mfd: tps6591x: Acks the enabled interrupts only
Acknowledge the tps6591x interrupt by processor only when it is enabled by client. The acknowledge is done by writing 1 to INT_STS register. bug 896151 Reviewed-on: http://git-master/r/64824 (cherry picked from commit 31fbb94516e5b600ad536e35c95e64b525b21f61) Change-Id: I7f4328f6084f6e94884ac4a87c5c3a247f7fa99d Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/65453 Rebase-Id: R4803a1635b5404226679de09dc15260ff60d44e6
Diffstat (limited to 'drivers/mfd')
-rw-r--r--drivers/mfd/tps6591x.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/mfd/tps6591x.c b/drivers/mfd/tps6591x.c
index 0831a034bed3..cc3ff239e24b 100644
--- a/drivers/mfd/tps6591x.c
+++ b/drivers/mfd/tps6591x.c
@@ -519,6 +519,7 @@ static irqreturn_t tps6591x_irq(int irq, void *data)
struct tps6591x *tps6591x = data;
int ret = 0;
u8 tmp[3];
+ u8 int_ack;
u32 acks, mask = 0;
int i;
@@ -531,8 +532,10 @@ static irqreturn_t tps6591x_irq(int irq, void *data)
return IRQ_NONE;
}
if (tmp[i]) {
+ /* Ack only those interrupts which are enabled */
+ int_ack = tmp[i] & (~(tps6591x->mask_cache[i]));
ret = tps6591x_write(tps6591x->dev,
- TPS6591X_INT_STS + 2*i, tmp[i]);
+ TPS6591X_INT_STS + 2*i, int_ack);
if (ret < 0) {
dev_err(tps6591x->dev,
"failed to write interrupt status\n");