input: AD7877 driver fixup
Subsystems (3)
PATCH 1/1 input: AD7877 driver fixup
From: Michael Hennerich <[email protected]>
- Test flag with spinlock hold
Signed-off-by Michael Hennerich <[email protected]>
Signed-off-by Bryan Wu <[email protected]>
--- drivers/input/touchscreen/ad7877.c | 20 ++++++++++++-------- 1 files changed, 12 insertions(+), 8 deletions(-)
drivers/input/touchscreen/ad7877.c +12 -8
@@ -388,10 +388,11 @@ static irqreturn_t ad7877_irq(int irq, void *handle)* doesn't get issued twice while in work. */ -if (ts->pending) -return IRQ_HANDLED ; -spin_lock_irqsave (&ts->lock, flags); +if (ts->pending) { +spin_unlock_irqrestore (&ts->lock, flags); +return IRQ_HANDLED ; + } ts->pending =1 ;spin_unlock_irqrestore (&ts->lock, flags);
@@ -420,10 +421,12 @@ static void ad7877_disable(struct ad7877 *ts) {unsigned long flags; -if (ts->disabled) +spin_lock_irqsave (&ts->lock, flags); +if (ts->disabled) { +spin_unlock_irqrestore (&ts->lock, flags);return ; + } -spin_lock_irqsave (&ts->lock, flags); ts->disabled =1 ;disable_irq (ts->spi->irq);spin_unlock_irqrestore (&ts->lock, flags);
@@ -443,10 +446,11 @@ static void ad7877_enable(struct ad7877 *ts) {unsigned long flags; -if (!ts->disabled) -return ; -spin_lock_irqsave (&ts->lock, flags); +if (ts->disabled) { +spin_unlock_irqrestore (&ts->lock, flags); +return ; + } ts->disabled =0 ;enable_irq (ts->spi->irq);spin_unlock_irqrestore (&ts->lock, flags);
Signature · 1 line
1.5.6