diff mbox

[4/4] Input: ads7846 - modificatons of _stop()/_disable() conditions

Message ID 1284634286-8871-5-git-send-email-jason77.wang@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jason Wang Sept. 16, 2010, 10:51 a.m. UTC
None
diff mbox

Patch

diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index eab8b0b..349031d 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -198,7 +198,7 @@  struct ads7846 {
 /* Must be called with ts->lock held */
 static void ads7846_stop(struct ads7846 *ts)
 {
-	if (!ts->disabled && !ts->suspended) {
+	if (!ts->stopped) {
 		/* Signal IRQ thread to stop polling and disable the handler. */
 		ts->stopped = true;
 		mb();
@@ -210,7 +210,7 @@  static void ads7846_stop(struct ads7846 *ts)
 /* Must be called with ts->lock held */
 static void ads7846_restart(struct ads7846 *ts)
 {
-	if (!ts->disabled && !ts->suspended) {
+	if (ts->stopped) {
 		/* Tell IRQ thread that it may poll the device. */
 		ts->stopped = false;
 		mb();
@@ -223,7 +223,7 @@  static void __ads7846_disable(struct ads7846 *ts)
 {
 	ads7846_stop(ts);
 	regulator_disable(ts->reg);
-
+	ts->disabled = true;
 	/*
 	 * We know the chip's in low power mode since we always
 	 * leave it that way after every request
@@ -235,6 +235,7 @@  static void __ads7846_enable(struct ads7846 *ts)
 {
 	regulator_enable(ts->reg);
 	ads7846_restart(ts);
+	ts->disabled = false;
 }
 
 static void ads7846_disable(struct ads7846 *ts)
@@ -244,8 +245,6 @@  static void ads7846_disable(struct ads7846 *ts)
 	if (!ts->disabled && !ts->suspended)
 		__ads7846_disable(ts);
 
-	ts->disabled = true;
-
 	mutex_unlock(&ts->lock);
 }
 
@@ -256,8 +255,6 @@  static void ads7846_enable(struct ads7846 *ts)
 	if (ts->disabled && !ts->suspended)
 		__ads7846_enable(ts);
 
-	ts->disabled = false;
-
 	mutex_unlock(&ts->lock);
 }
 
@@ -919,7 +916,7 @@  static int ads7846_resume(struct spi_device *spi)
 		if (device_may_wakeup(&ts->spi->dev))
 			disable_irq_wake(ts->spi->irq);
 
-		if (!ts->disabled)
+		if (ts->disabled)
 			__ads7846_enable(ts);
 
 		ts->suspended = false;