iio: pressure: zpa2326: report interrupted case as failure
authorNicholas Mc Guire <der.herr@hofr.at>
Sun, 14 May 2017 08:43:55 +0000 (10:43 +0200)
committerJonathan Cameron <jic23@kernel.org>
Sun, 14 May 2017 14:28:14 +0000 (15:28 +0100)
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>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/pressure/zpa2326.c

index e58a0ad07477159ed5f9bc455135370d10092a16..c92a95f9f52c21410ea9f372c3254530008914bd 100644 (file)
@@ -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,16 @@ 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 cancelled");
+               ret = -ERESTARTSYS;
+       }
 
        return ret;
 }