Input: ads7846: avoid a deadlock
authorGrazvydas Ignotas <notasas@gmail.com>
Sun, 14 Sep 2014 15:07:30 +0000 (18:07 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Mon, 15 Sep 2014 21:44:33 +0000 (00:44 +0300)
problem caused by earlier hack (2ed0bced).

ads7846_stop() does disable_irq(), which waits for ads7846_irq() to
finish, but ads7846_irq() takes the same lock..
There is no need for that check as irq funcs are refcounted.

drivers/input/touchscreen/ads7846.c

index 5e48586..53aabc7 100644 (file)
@@ -904,10 +904,7 @@ static irqreturn_t ads7846_irq(int irq, void *handle)
                dev_vdbg(&ts->spi->dev, "UP\n");
        }
 
-       mutex_lock(&ts->lock);
-       if (!ts->stopped)
-               enable_irq(ts->spi->irq);
-       mutex_unlock(&ts->lock);
+       enable_irq(ts->spi->irq);
 
        return IRQ_HANDLED;
 }