|
|
@@ -82,7 +82,7 @@ enum adc_version {
|
|
|
#define ADC_CON_EN_START (1u << 0)
|
|
|
#define ADC_DATX_MASK 0xFFF
|
|
|
|
|
|
-#define EXYNOS_ADC_TIMEOUT (msecs_to_jiffies(1000))
|
|
|
+#define EXYNOS_ADC_TIMEOUT (msecs_to_jiffies(100))
|
|
|
|
|
|
struct exynos_adc {
|
|
|
void __iomem *regs;
|
|
|
@@ -121,6 +121,7 @@ static int exynos_read_raw(struct iio_dev *indio_dev,
|
|
|
struct exynos_adc *info = iio_priv(indio_dev);
|
|
|
unsigned long timeout;
|
|
|
u32 con1, con2;
|
|
|
+ int ret;
|
|
|
|
|
|
if (mask != IIO_CHAN_INFO_RAW)
|
|
|
return -EINVAL;
|
|
|
@@ -145,16 +146,19 @@ static int exynos_read_raw(struct iio_dev *indio_dev,
|
|
|
ADC_V1_CON(info->regs));
|
|
|
}
|
|
|
|
|
|
- timeout = wait_for_completion_interruptible_timeout
|
|
|
+ timeout = wait_for_completion_timeout
|
|
|
(&info->completion, EXYNOS_ADC_TIMEOUT);
|
|
|
- *val = info->value;
|
|
|
+ if (timeout == 0) {
|
|
|
+ ret = -ETIMEDOUT;
|
|
|
+ } else {
|
|
|
+ *val = info->value;
|
|
|
+ *val2 = 0;
|
|
|
+ ret = IIO_VAL_INT;
|
|
|
+ }
|
|
|
|
|
|
mutex_unlock(&indio_dev->mlock);
|
|
|
|
|
|
- if (timeout == 0)
|
|
|
- return -ETIMEDOUT;
|
|
|
-
|
|
|
- return IIO_VAL_INT;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static irqreturn_t exynos_adc_isr(int irq, void *dev_id)
|