diff options
author | Ira Snyder <iws@ovro.caltech.edu> | 2010-01-06 08:34:06 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2010-02-02 16:51:42 -0500 |
commit | 9c3a50b7d7ec45da34e73cac66cde12dd6092dd8 (patch) | |
tree | a16b2dd972ba8ebdd9e6796ad8f0027513316f49 /drivers/dma/fsldma.h | |
parent | a1c03319018061304be28d131073ac13a5cb86fb (diff) |
fsldma: major cleanups and fixes
Fix locking. Use two queues in the driver, one for pending transacions, and
one for transactions which are actually running on the hardware. Call
dma_run_dependencies() on descriptor cleanup so that the async_tx API works
correctly.
There are a number of places throughout the code where lists of descriptors
are freed in a loop. Create functions to handle this, and use them instead
of open-coding the loop each time.
Signed-off-by: Ira W. Snyder <iws@ovro.caltech.edu>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dma/fsldma.h')
-rw-r--r-- | drivers/dma/fsldma.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/dma/fsldma.h b/drivers/dma/fsldma.h index ea3b19c8708..cb4d6ff5159 100644 --- a/drivers/dma/fsldma.h +++ b/drivers/dma/fsldma.h | |||
@@ -131,7 +131,8 @@ struct fsldma_chan { | |||
131 | struct fsldma_chan_regs __iomem *regs; | 131 | struct fsldma_chan_regs __iomem *regs; |
132 | dma_cookie_t completed_cookie; /* The maximum cookie completed */ | 132 | dma_cookie_t completed_cookie; /* The maximum cookie completed */ |
133 | spinlock_t desc_lock; /* Descriptor operation lock */ | 133 | spinlock_t desc_lock; /* Descriptor operation lock */ |
134 | struct list_head ld_queue; /* Link descriptors queue */ | 134 | struct list_head ld_pending; /* Link descriptors queue */ |
135 | struct list_head ld_running; /* Link descriptors queue */ | ||
135 | struct dma_chan common; /* DMA common channel */ | 136 | struct dma_chan common; /* DMA common channel */ |
136 | struct dma_pool *desc_pool; /* Descriptors pool */ | 137 | struct dma_pool *desc_pool; /* Descriptors pool */ |
137 | struct device *dev; /* Channel device */ | 138 | struct device *dev; /* Channel device */ |