[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1461068317-28016-5-git-send-email-patrice.chotard@st.com>
Date: Tue, 19 Apr 2016 14:18:33 +0200
From: <patrice.chotard@...com>
To: <lee.jones@...aro.org>, <linus.walleij@...aro.org>,
<gnurou@...il.com>, <linux-gpio@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
CC: <linux-arm-kernel@...ts.infradead.org>, <maxime.coquelin@...com>,
<amelie.delaunay@...com>, <shawnguo@...nel.org>,
<kernel@...gutronix.de>, <dinguyen@...nsource.altera.com>,
<vireshk@...nel.org>, <shiraz.linux.kernel@...il.com>,
<swarren@...dotorg.org>, <thierry.reding@...il.com>,
<gnurou@...il.com>, Patrice Chotard <patrice.chotard@...com>
Subject: [PATCH 4/8] gpio: stmpe: write int status register only when needed
From: Patrice Chotard <patrice.chotard@...com>
On STMPE801/1801 datasheets, it's mentionned writing
in interrupt status register has no effect, bits are
cleared when reading.
Signed-off-by: Amelie DELAUNAY <amelie.delaunay@...com>
Signed-off-by: Patrice Chotard <patrice.chotard@...com>
---
drivers/gpio/gpio-stmpe.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/drivers/gpio/gpio-stmpe.c b/drivers/gpio/gpio-stmpe.c
index 225e075..f8c9d22 100644
--- a/drivers/gpio/gpio-stmpe.c
+++ b/drivers/gpio/gpio-stmpe.c
@@ -344,12 +344,16 @@ static irqreturn_t stmpe_gpio_irq(int irq, void *dev)
stat &= ~(1 << bit);
}
- stmpe_reg_write(stmpe, statmsbreg + i, status[i]);
-
- /* Edge detect register is not present on 801 and 1801 */
- if (stmpe->partnum != STMPE801 || stmpe->partnum != STMPE1801)
+ /*
+ * interrupt status register write has no effect on
+ * 801 and 1801, bits are cleared when read.
+ * Edge detect register is not present on 801 and 1801
+ */
+ if (stmpe->partnum != STMPE801 || stmpe->partnum != STMPE1801) {
+ stmpe_reg_write(stmpe, statmsbreg + i, status[i]);
stmpe_reg_write(stmpe, stmpe->regs[STMPE_IDX_GPEDR_MSB]
+ i, status[i]);
+ }
}
return IRQ_HANDLED;
--
1.9.1
Powered by blists - more mailing lists