From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from saturn.retrosnub.co.uk ([178.18.118.26]:41640 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752590AbcHOPrw (ORCPT ); Mon, 15 Aug 2016 11:47:52 -0400 Subject: Re: [PATCH 2/2] iio: adc: ti_am335x_adc: Increase timeout value waiting for ADC sample To: Vignesh R References: <20160808110501.29586-1-vigneshr@ti.com> <20160808110501.29586-3-vigneshr@ti.com> Cc: Hartmut Knaack , Lars-Peter Clausen , Peter Meerwald-Stadler , Lee Jones , "Andrew F . Davis" , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org From: Jonathan Cameron Message-ID: <6e5c9bea-7b0f-0fdb-976a-29b7a0bccc5e@kernel.org> Date: Mon, 15 Aug 2016 16:47:50 +0100 MIME-Version: 1.0 In-Reply-To: <20160808110501.29586-3-vigneshr@ti.com> Content-Type: text/plain; charset=windows-1252 Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org On 08/08/16 12:05, Vignesh R wrote: > 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. > > Signed-off-by: Vignesh R As with patch 1 could you provide a fixes tag as well highlighting the patch that introduced the issue. I'm thinking you are referring to: iio: adc: ti_am335x_adc: make sample delay, open delay, averaging DT parameters 5dc11e810676ec4a5acb4423ccd33314bf74f4e54 > --- > 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 > >