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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 13 Apr 2018 17:47:56 +0000 (19:47 +0200)
[ Upstream commit e7215fe4d51e69c9d2608ad0c409d48e844d0adc ]

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>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iio/pressure/zpa2326.c

index 19d2eb46fda6106f586ca173dee8915842735361..2a4a62ebfd8d11616c9e96421f48429f843c7c34 100644 (file)
@@ -871,12 +871,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.
@@ -886,13 +887,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;
 }