summaryrefslogtreecommitdiffstats
path: root/drivers/staging/comedi
diff options
context:
space:
mode:
authorH Hartley Sweeten2016-05-02 19:11:42 +0200
committerGreg Kroah-Hartman2016-05-03 23:11:15 +0200
commit9ec148da5fcb04456e883cb243fa1e872d47d385 (patch)
tree6f95466940c0295fdc529f5c501bc8d951f73cab /drivers/staging/comedi
parentstaging: comedi: mite: remove mite member 'channel_allocated' (diff)
downloadkernel-qcow2-linux-9ec148da5fcb04456e883cb243fa1e872d47d385.tar.gz
kernel-qcow2-linux-9ec148da5fcb04456e883cb243fa1e872d47d385.tar.xz
kernel-qcow2-linux-9ec148da5fcb04456e883cb243fa1e872d47d385.zip
staging: comedi: mite: introduce mite_free_dma_descs()
Introduce a helper function to handle the dma_free_coherent() of the mite dma descriptors. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/comedi')
-rw-r--r--drivers/staging/comedi/drivers/mite.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/drivers/staging/comedi/drivers/mite.c b/drivers/staging/comedi/drivers/mite.c
index 14b5345a9357..8b0f875972f5 100644
--- a/drivers/staging/comedi/drivers/mite.c
+++ b/drivers/staging/comedi/drivers/mite.c
@@ -371,16 +371,24 @@ struct mite_ring *mite_alloc_ring(struct mite *mite)
};
EXPORT_SYMBOL_GPL(mite_alloc_ring);
+static void mite_free_dma_descs(struct mite_ring *ring)
+{
+ struct mite_dma_desc *descs = ring->descs;
+
+ if (descs) {
+ dma_free_coherent(ring->hw_dev,
+ ring->n_links * sizeof(*descs),
+ descs, ring->dma_addr);
+ ring->descs = NULL;
+ ring->dma_addr = 0;
+ ring->n_links = 0;
+ }
+}
+
void mite_free_ring(struct mite_ring *ring)
{
if (ring) {
- if (ring->descs) {
- dma_free_coherent(ring->hw_dev,
- ring->n_links *
- sizeof(struct mite_dma_desc),
- ring->descs,
- ring->dma_addr);
- }
+ mite_free_dma_descs(ring);
put_device(ring->hw_dev);
kfree(ring);
}
@@ -467,16 +475,7 @@ int mite_buf_change(struct mite_ring *ring,
struct comedi_async *async = s->async;
unsigned int n_links;
- if (ring->descs) {
- dma_free_coherent(ring->hw_dev,
- ring->n_links *
- sizeof(struct mite_dma_desc),
- ring->descs,
- ring->dma_addr);
- }
- ring->descs = NULL;
- ring->dma_addr = 0;
- ring->n_links = 0;
+ mite_free_dma_descs(ring);
if (async->prealloc_bufsz == 0)
return 0;