From: Imre Deak Date: Mon, 15 May 2006 07:35:25 +0000 (-0700) Subject: [PATCH 3/6] ads7846: replace spin_lock_irqsave X-Git-Tag: v2.6.17-omap1~72 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=36350e2973b72a651f10af9b4df644e683b4d7ce;p=linux-2.6-omap-h63xx.git [PATCH 3/6] ads7846: replace spin_lock_irqsave Replace spin_lock_irqsave's with spin_lock_irq where possible, fix a related bug in ads7846_disable() where we spin_unlock_irqrestore'd from an uninitialized flags. Signed-off-by: Imre Deak --- diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index d9c9e0cb8a7..8200a03ee2d 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c @@ -335,19 +335,18 @@ static ssize_t ads7846_disable_store(struct device *dev, const char *buf, size_t count) { struct ads7846 *ts = dev_get_drvdata(dev); - unsigned long flags; char *endp; int i; i = simple_strtoul(buf, &endp, 10); - spin_lock_irqsave(&ts->lock, flags); + spin_lock_irq(&ts->lock); if (i) ads7846_disable(ts); else ads7846_enable(ts); - spin_unlock_irqrestore(&ts->lock, flags); + spin_unlock_irq(&ts->lock); return count; } @@ -532,8 +531,6 @@ static void ads7846_disable(struct ads7846 *ts) disable_irq(ts->spi->irq); } } else { - unsigned long flags; - /* polling; force a final SPI completion; * that will clean things up neatly */ @@ -541,9 +538,9 @@ static void ads7846_disable(struct ads7846 *ts) mod_timer(&ts->timer, jiffies); while (ts->pendown || ts->pending) { - spin_unlock_irqrestore(&ts->lock, flags); + spin_unlock_irq(&ts->lock); msleep(1); - spin_lock_irqsave(&ts->lock, flags); + spin_lock_irq(&ts->lock); } } @@ -568,14 +565,13 @@ static void ads7846_enable(struct ads7846 *ts) static int ads7846_suspend(struct spi_device *spi, pm_message_t message) { struct ads7846 *ts = dev_get_drvdata(&spi->dev); - unsigned long flags; - spin_lock_irqsave(&ts->lock, flags); + spin_lock_irq(&ts->lock); spi->dev.power.power_state = message; ads7846_disable(ts); - spin_unlock_irqrestore(&ts->lock, flags); + spin_unlock_irq(&ts->lock); return 0; @@ -584,14 +580,13 @@ static int ads7846_suspend(struct spi_device *spi, pm_message_t message) static int ads7846_resume(struct spi_device *spi) { struct ads7846 *ts = dev_get_drvdata(&spi->dev); - unsigned long flags; - spin_lock_irqsave(&ts->lock, flags); + spin_lock_irq(&ts->lock); spi->dev.power.power_state = PMSG_ON; ads7846_enable(ts); - spin_unlock_irqrestore(&ts->lock, flags); + spin_unlock_irq(&ts->lock); return 0; }