Commit 9ec148da authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman
Browse files

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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 48a73aed
Loading
Loading
Loading
Loading
+16 −17
Original line number Diff line number Diff line
@@ -371,16 +371,24 @@ struct mite_ring *mite_alloc_ring(struct mite *mite)
};
EXPORT_SYMBOL_GPL(mite_alloc_ring);

void mite_free_ring(struct mite_ring *ring)
static void mite_free_dma_descs(struct mite_ring *ring)
{
	if (ring) {
		if (ring->descs) {
	struct mite_dma_desc *descs = ring->descs;

	if (descs) {
		dma_free_coherent(ring->hw_dev,
					  ring->n_links *
					  sizeof(struct mite_dma_desc),
					  ring->descs,
					  ring->dma_addr);
				  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) {
		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;