Re: [PATCH 2/2] iio: at91-sama5d2: Limit requested watermark value to hwfifo size

From: Jonathan Cameron
Date: Sat Jan 22 2022 - 11:58:50 EST


On Mon, 17 Jan 2022 10:25:12 +0000
Paul Cercueil <paul@xxxxxxxxxxxxxxx> wrote:

> Instead of returning an error if the watermark value is too high, which
> the core will silently ignore anyway, limit the value to the hardware
> FIFO size; a lower-than-requested value is still better than using the
> default, which is usually 1.

There is another potential error condition in this function which will
also be ignored by the core.

As such whilst I agree this is a sensible thing to do in this
particular case I think we should also be handling the error in the core.

I think it would be better to clean that up at the same time
as these improvements - particularly as I'd guess you have a convenient
test setup to check the error unwind is correct?

Thanks,

Jonathan

>
> Cc: Eugen Hristev <eugen.hristev@xxxxxxxxxxxxx>
> Cc: Nicolas Ferre <nicolas.ferre@xxxxxxxxxxxxx>
> Cc: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>
> Cc: Ludovic Desroches <ludovic.desroches@xxxxxxxxxxxxx>
> Signed-off-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx>
> ---
> drivers/iio/adc/at91-sama5d2_adc.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/iio/adc/at91-sama5d2_adc.c b/drivers/iio/adc/at91-sama5d2_adc.c
> index 854b1f81d807..5cc84f4a17bb 100644
> --- a/drivers/iio/adc/at91-sama5d2_adc.c
> +++ b/drivers/iio/adc/at91-sama5d2_adc.c
> @@ -1752,7 +1752,7 @@ static int at91_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val)
> int ret;
>
> if (val > AT91_HWFIFO_MAX_SIZE)
> - return -EINVAL;
> + val = AT91_HWFIFO_MAX_SIZE;
>
> if (!st->selected_trig->hw_trig) {
> dev_dbg(&indio_dev->dev, "we need hw trigger for DMA\n");