Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1464545

[PATCH v2 2/2] iio: adc: ti_am335x_adc: Increase timeout value waiting for ADC sample

From Vignesh R <vigneshr@ti.com>
Newsgroups linux.kernel
Subject [PATCH v2 2/2] iio: adc: ti_am335x_adc: Increase timeout value waiting for ADC sample
Date 2016-08-17 14:20 +0200
Message-ID <s77Z8-TF-17@gated-at.bofh.it> (permalink)
References <s77Z7-TF-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


Now that open delay and sample delay for each channel is configurable
via DT, the default IDLE_TIMEOUT value is not enough as this is
calculated based on hardcoded macros. This results in driver returning
EBUSY sometimes. Fix this by increasing the timeout
value based on maximum value possible to open delay and sample delays
for each channel.

Fixes: 5dc11e810676e ("iio: adc: ti_am335x_adc: make sample delay, open delay, averaging DT parameters")
Signed-off-by: Vignesh R <vigneshr@ti.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
---

v2: Add fixes tag.

 drivers/iio/adc/ti_am335x_adc.c      | 2 +-
 include/linux/mfd/ti_am335x_tscadc.h | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c
index bed9977a1863..c3cfacca2541 100644
--- a/drivers/iio/adc/ti_am335x_adc.c
+++ b/drivers/iio/adc/ti_am335x_adc.c
@@ -381,7 +381,7 @@ static int tiadc_read_raw(struct iio_dev *indio_dev,
 
 	am335x_tsc_se_set_once(adc_dev->mfd_tscadc, step_en);
 
-	timeout = jiffies + usecs_to_jiffies
+	timeout = jiffies + msecs_to_jiffies
 				(IDLE_TIMEOUT * adc_dev->channels);
 	/* Wait for Fifo threshold interrupt */
 	while (1) {
diff --git a/include/linux/mfd/ti_am335x_tscadc.h b/include/linux/mfd/ti_am335x_tscadc.h
index 2567a87872b0..7f55b8b41032 100644
--- a/include/linux/mfd/ti_am335x_tscadc.h
+++ b/include/linux/mfd/ti_am335x_tscadc.h
@@ -138,16 +138,16 @@
 /*
  * time in us for processing a single channel, calculated as follows:
  *
- * num cycles = open delay + (sample delay + conv time) * averaging
+ * max num cycles = open delay + (sample delay + conv time) * averaging
  *
- * num cycles: 152 + (1 + 13) * 16 = 376
+ * max num cycles: 262143 + (255 + 13) * 16 = 266431
  *
  * clock frequency: 26MHz / 8 = 3.25MHz
  * clock period: 1 / 3.25MHz = 308ns
  *
- * processing time: 376 * 308ns = 116us
+ * max processing time: 266431 * 308ns = 83ms(approx)
  */
-#define IDLE_TIMEOUT 116 /* microsec */
+#define IDLE_TIMEOUT 83 /* milliseconds */
 
 #define TSCADC_CELLS		2
 
-- 
2.9.2

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 0/2] ti_am335x_adc: Fix bugs related to oneshot read Vignesh R <vigneshr@ti.com> - 2016-08-17 14:20 +0200
  [PATCH v2 2/2] iio: adc: ti_am335x_adc: Increase timeout value waiting for ADC sample Vignesh R <vigneshr@ti.com> - 2016-08-17 14:20 +0200
    Re: [PATCH v2 2/2] iio: adc: ti_am335x_adc: Increase timeout value  waiting for ADC sample Jonathan Cameron <jic23@kernel.org> - 2016-08-21 21:00 +0200
  [PATCH v2 1/2] iio: adc: ti_am335x_adc: Protect FIFO1 from concurrent access Vignesh R <vigneshr@ti.com> - 2016-08-17 14:20 +0200
    Re: [PATCH v2 1/2] iio: adc: ti_am335x_adc: Protect FIFO1 from  concurrent access Jonathan Cameron <jic23@kernel.org> - 2016-08-21 21:00 +0200

csiph-web