public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH RFC] iio: pressure: zpa2326: report interrupted case as failure
@ 2017-05-14  8:43 Nicholas Mc Guire
  2017-05-14  9:46 ` Peter Meerwald-Stadler
  2017-07-04 10:40 ` Geert Uytterhoeven
  0 siblings, 2 replies; 12+ messages in thread
From: Nicholas Mc Guire @ 2017-05-14  8:43 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald-Stadler,
	simran singhal, Arnd Bergmann, Gregor Boirie, linux-iio,
	linux-kernel, Nicholas Mc Guire

If the timeout-case prints a warning message then probably the interrupted
case should also. Further, wait_for_completion_interruptible_timeout()
returns long not int. 

Fixes: commit 03b262f2bbf4 ("iio:pressure: initial zpa2326 barometer support")
Signed-off-by: Nicholas Mc Guire <der.herr@hofr.at>
---

The original control-flow was technically not wrong just confusing and a bit 
complicated. Not clear if reporting the interrupted case actually is useful,
but given that the timeout is relatively long (200ms) it is not that unlikely
so differentiating the cases seems helpful.

Patch was compile-tested with: x86_64_defconfig + CONFIG_IIO=m, CONFIG_ZPA2326=m

Patch is against v4.11 (localversion-next is next-20170512)

 drivers/iio/pressure/zpa2326.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/drivers/iio/pressure/zpa2326.c b/drivers/iio/pressure/zpa2326.c
index e58a0ad..617926f 100644
--- a/drivers/iio/pressure/zpa2326.c
+++ b/drivers/iio/pressure/zpa2326.c
@@ -867,12 +867,13 @@ static int zpa2326_wait_oneshot_completion(const struct iio_dev   *indio_dev,
 {
 	int          ret;
 	unsigned int val;
+	long     timeout;
 
 	zpa2326_dbg(indio_dev, "waiting for one shot completion interrupt");
 
-	ret = wait_for_completion_interruptible_timeout(
+	timeout = wait_for_completion_interruptible_timeout(
 		&private->data_ready, ZPA2326_CONVERSION_JIFFIES);
-	if (ret > 0)
+	if (timeout > 0)
 		/*
 		 * Interrupt handler completed before timeout: return operation
 		 * status.
@@ -882,13 +883,15 @@ static int zpa2326_wait_oneshot_completion(const struct iio_dev   *indio_dev,
 	/* Clear all interrupts just to be sure. */
 	regmap_read(private->regmap, ZPA2326_INT_SOURCE_REG, &val);
 
-	if (!ret)
+	if (!timeout) {
 		/* Timed out. */
+		zpa2326_warn(indio_dev, "no one shot interrupt occurred (%ld)",
+			     timeout);
 		ret = -ETIME;
-
-	if (ret != -ERESTARTSYS)
-		zpa2326_warn(indio_dev, "no one shot interrupt occurred (%d)",
-			     ret);
+	} else if (timeout < 0) {
+		zpa2326_warn(indio_dev, "wait for one shot interrupt canceled");
+		ret = -ERESTARTSYS;
+	}
 
 	return ret;
 }
-- 
2.1.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-07-05 10:12 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-05-14  8:43 [PATCH RFC] iio: pressure: zpa2326: report interrupted case as failure Nicholas Mc Guire
2017-05-14  9:46 ` Peter Meerwald-Stadler
2017-05-14 11:29   ` Nicholas Mc Guire
2017-05-14 14:29   ` Jonathan Cameron
2017-07-04 10:40 ` Geert Uytterhoeven
2017-07-04 19:08   ` Jonathan Cameron
2017-07-05  7:37     ` Nicholas Mc Guire
2017-07-05  8:02       ` Geert Uytterhoeven
2017-07-05  8:55         ` Nicholas Mc Guire
2017-07-05 10:06           ` Jonathan Cameron
2017-07-05 10:11             ` Nicholas Mc Guire
2017-07-05  8:06       ` Jonathan Cameron

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox