Commit 1460c152 authored by Sebastian Andrzej Siewior's avatar Sebastian Andrzej Siewior
Browse files

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: default avatarJonathan Cameron <jic23@kernel.org>
Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
parent 18926ede
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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;
}