summaryrefslogtreecommitdiff
path: root/drivers/iio/adc/nxp-sar-adc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/iio/adc/nxp-sar-adc.c')
-rw-r--r--drivers/iio/adc/nxp-sar-adc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/iio/adc/nxp-sar-adc.c b/drivers/iio/adc/nxp-sar-adc.c
index 9efa883c277d..58103bf16aff 100644
--- a/drivers/iio/adc/nxp-sar-adc.c
+++ b/drivers/iio/adc/nxp-sar-adc.c
@@ -718,6 +718,10 @@ static int nxp_sar_adc_buffer_software_do_postenable(struct iio_dev *indio_dev)
struct nxp_sar_adc *info = iio_priv(indio_dev);
int ret;
+ info->dma_chan = dma_request_chan(indio_dev->dev.parent, "rx");
+ if (IS_ERR(info->dma_chan))
+ return PTR_ERR(info->dma_chan);
+
nxp_sar_adc_dma_channels_enable(info, *indio_dev->active_scan_mask);
nxp_sar_adc_dma_cfg(info, true);
@@ -738,6 +742,7 @@ out_stop_cyclic_dma:
out_dma_channels_disable:
nxp_sar_adc_dma_cfg(info, false);
nxp_sar_adc_dma_channels_disable(info, *indio_dev->active_scan_mask);
+ dma_release_channel(info->dma_chan);
return ret;
}
@@ -765,10 +770,6 @@ static int nxp_sar_adc_buffer_postenable(struct iio_dev *indio_dev)
unsigned long channel;
int ret;
- info->dma_chan = dma_request_chan(indio_dev->dev.parent, "rx");
- if (IS_ERR(info->dma_chan))
- return PTR_ERR(info->dma_chan);
-
info->channels_used = 0;
/*