linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jason Wang <jason77.wang@gmail.com>
To: dmitry.torokhov@gmail.com, notasas@gmail.com, vapier@gentoo.org
Cc: linux-input@vger.kernel.org
Subject: [PATCH 4/4] Input: ads7846 - modificatons of _stop()/_disable() conditions
Date: Thu, 16 Sep 2010 18:51:26 +0800	[thread overview]
Message-ID: <1284634286-8871-5-git-send-email-jason77.wang@gmail.com> (raw)
In-Reply-To: <1284634286-8871-4-git-send-email-jason77.wang@gmail.com>

The design like that, we can stop or disable ADC, one difference is
the disable not only stop the ADC but also close the power regulator.
So we change the condition flag to stopped in the _stop() function.

Because we call __ads7846_disable() in the suspend/resume process, so
move disabled flag modification from ads7846_disable() to the
__ads7846_disable(), otherwise when we call _disable() in the suspend,
and the ADC is really suspended but the flag shows that it isn't.

Signed-off-by: Jason Wang <jason77.wang@gmail.com>
---
 drivers/input/touchscreen/ads7846.c |   13 +++++--------
 1 files changed, 5 insertions(+), 8 deletions(-)

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;
-- 
1.5.6.5


  reply	other threads:[~2010-09-16 10:48 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-16 10:51 [PATCH 0/4] Switch ads7846 driver to use soft irq Jason Wang
2010-09-16 10:51 ` [PATCH 1/4] Input: ads7846 - switch to using threaded IRQ Jason Wang
2010-09-16 10:51   ` [PATCH 2/4] Input: ads7846 - add a include header to prevent building fails Jason Wang
2010-09-16 10:51     ` [PATCH 3/4] Input: ads7846 - restore ADC to powerdown mode if no messgaes needed Jason Wang
2010-09-16 10:51       ` Jason Wang [this message]
2010-09-17  6:39         ` [PATCH 4/4] Input: ads7846 - modificatons of _stop()/_disable() conditions Dmitry Torokhov
2010-09-17  9:20           ` Jason Wang
2010-09-17 16:07             ` Dmitry Torokhov
2010-09-20  8:18               ` Jason Wang
2010-10-12  9:58                 ` Jason Wang
2010-10-12 16:00                   ` Dmitry Torokhov
2010-10-13  3:12                     ` Jason Wang
2010-10-13 22:17                       ` Grazvydas Ignotas
2010-10-14  2:14                         ` Jason Wang
2010-10-14 21:40                           ` Grazvydas Ignotas
2010-10-15  2:29                             ` Jason Wang
2010-10-18 23:19                               ` Tony Lindgren
2010-10-19  1:25                                 ` Jason Wang
2010-09-17  1:48 ` [PATCH 0/4] Switch ads7846 driver to use soft irq Jason Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1284634286-8871-5-git-send-email-jason77.wang@gmail.com \
    --to=jason77.wang@gmail.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=notasas@gmail.com \
    --cc=vapier@gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).