iio: ti_am335x_adc: check if we found the value
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. Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
This commit is contained in:
Родитель
18926edebc
Коммит
1460c152c5
|
@ -145,6 +145,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,
|
||||
|
@ -169,11 +170,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;
|
||||
}
|
||||
}
|
||||
am335x_tsc_se_update(adc_dev->mfd_tscadc);
|
||||
|
||||
if (found == false)
|
||||
return -EBUSY;
|
||||
return IIO_VAL_INT;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче