diff options
author | Maxime Ripard <maxime.ripard@free-electrons.com> | 2014-11-17 08:42:02 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2014-12-22 01:58:56 -0500 |
commit | 7fa0cf462daa6f6121b332b87833d7f5bdb515c0 (patch) | |
tree | 6bb5b041882ca1a32b752410193f2beed85b726d /include/linux/dmaengine.h | |
parent | 23a3ea2f5bead4d3b16e119e9127a66234f41d53 (diff) |
dmaengine: Add device_terminate_all callback
Split out the terminate_all command from device_control to a dma_device
callback. In order to preserve backward capability, still rely on
device_control if no such callback has been implemented.
Eventually, this will allow to create a generic dma_slave_caps callback.
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Vinod Koul <vinod.koul@intel.com>
Diffstat (limited to 'include/linux/dmaengine.h')
-rw-r--r-- | include/linux/dmaengine.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 01f27e8a69b7..ded5161653aa 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -616,6 +616,8 @@ struct dma_tx_state { | |||
616 | * 0 or an error code | 616 | * 0 or an error code |
617 | * @device_resume: Resumes any transfer on a channel previously | 617 | * @device_resume: Resumes any transfer on a channel previously |
618 | * paused. Returns 0 or an error code | 618 | * paused. Returns 0 or an error code |
619 | * @device_terminate_all: Aborts all transfers on a channel. Returns 0 | ||
620 | * or an error code | ||
619 | * @device_tx_status: poll for transaction completion, the optional | 621 | * @device_tx_status: poll for transaction completion, the optional |
620 | * txstate parameter can be supplied with a pointer to get a | 622 | * txstate parameter can be supplied with a pointer to get a |
621 | * struct with auxiliary transfer status information, otherwise the call | 623 | * struct with auxiliary transfer status information, otherwise the call |
@@ -687,6 +689,7 @@ struct dma_device { | |||
687 | unsigned long arg); | 689 | unsigned long arg); |
688 | int (*device_pause)(struct dma_chan *chan); | 690 | int (*device_pause)(struct dma_chan *chan); |
689 | int (*device_resume)(struct dma_chan *chan); | 691 | int (*device_resume)(struct dma_chan *chan); |
692 | int (*device_terminate_all)(struct dma_chan *chan); | ||
690 | 693 | ||
691 | enum dma_status (*device_tx_status)(struct dma_chan *chan, | 694 | enum dma_status (*device_tx_status)(struct dma_chan *chan, |
692 | dma_cookie_t cookie, | 695 | dma_cookie_t cookie, |
@@ -796,6 +799,9 @@ static inline int dma_get_slave_caps(struct dma_chan *chan, struct dma_slave_cap | |||
796 | 799 | ||
797 | static inline int dmaengine_terminate_all(struct dma_chan *chan) | 800 | static inline int dmaengine_terminate_all(struct dma_chan *chan) |
798 | { | 801 | { |
802 | if (chan->device->device_terminate_all) | ||
803 | return chan->device->device_terminate_all(chan); | ||
804 | |||
799 | return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0); | 805 | return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0); |
800 | } | 806 | } |
801 | 807 | ||