|
@@ -1289,6 +1289,7 @@ static int stm32_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val)
|
|
|
{
|
|
|
struct stm32_adc *adc = iio_priv(indio_dev);
|
|
|
unsigned int watermark = STM32_DMA_BUFFER_SIZE / 2;
|
|
|
+ unsigned int rx_buf_sz = STM32_DMA_BUFFER_SIZE;
|
|
|
|
|
|
/*
|
|
|
* dma cyclic transfers are used, buffer is split into two periods.
|
|
@@ -1297,7 +1298,7 @@ static int stm32_adc_set_watermark(struct iio_dev *indio_dev, unsigned int val)
|
|
|
* - one buffer (period) driver can push with iio_trigger_poll().
|
|
|
*/
|
|
|
watermark = min(watermark, val * (unsigned)(sizeof(u16)));
|
|
|
- adc->rx_buf_sz = watermark * 2;
|
|
|
+ adc->rx_buf_sz = min(rx_buf_sz, watermark * 2 * adc->num_conv);
|
|
|
|
|
|
return 0;
|
|
|
}
|