On 05/29/2013 06:09 PM, Sebastian Andrzej Siewior wrote: > Usually we get all the values we wanted but it is possible, that te ADC > unit is busy performing the conversation for the HW events. In that case > -EBUSY is returned and the user may re-call the function. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> Acked-by: Jonathan Cameron <jic23@xxxxxxxxxx> > --- > drivers/iio/adc/ti_am335x_adc.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/adc/ti_am335x_adc.c b/drivers/iio/adc/ti_am335x_adc.c > index df2de4c..6a00874 100644 > --- a/drivers/iio/adc/ti_am335x_adc.c > +++ b/drivers/iio/adc/ti_am335x_adc.c > @@ -161,6 +161,7 @@ static int tiadc_read_raw(struct iio_dev *indio_dev, > int i; > unsigned int fifo1count, read; > u32 step = UINT_MAX; > + bool found = false; > > /* > * When the sub-system is first enabled, > @@ -185,10 +186,14 @@ static int tiadc_read_raw(struct iio_dev *indio_dev, > fifo1count = tiadc_readl(adc_dev, REG_FIFO1CNT); > for (i = 0; i < fifo1count; i++) { > read = tiadc_readl(adc_dev, REG_FIFO1); > - if (read >> 16 == step) > + if (read >> 16 == step) { > *val = read & 0xfff; > + found = true; > + } > } > tiadc_writel(adc_dev, REG_SE, STPENB_STEPENB); > + if (found == false) > + return -EBUSY; > > return IIO_VAL_INT; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html