mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
dmaengine: add support to provide error result from a DMA transation
Adding a new callback that will provide the error result for a transaction. The result is allocated on the stack and the callback should create a copy if it wishes to retain the information after exiting. The result parameter is now defined and takes over the dummy void pointer we placed in the helper functions previously. dmaengine drivers should start converting to the new "callback_result" callback in order to receive transaction results. Signed-off-by: Dave Jiang <dave.jiang@intel.com> Reviewed-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Vinod Koul <vinod.koul@intel.com>
This commit is contained in:
parent
b1f884a5ff
commit
f067025bc6
2 changed files with 33 additions and 5 deletions
|
@ -441,6 +441,21 @@ typedef bool (*dma_filter_fn)(struct dma_chan *chan, void *filter_param);
|
|||
|
||||
typedef void (*dma_async_tx_callback)(void *dma_async_param);
|
||||
|
||||
enum dmaengine_tx_result {
|
||||
DMA_TRANS_NOERROR = 0, /* SUCCESS */
|
||||
DMA_TRANS_READ_FAILED, /* Source DMA read failed */
|
||||
DMA_TRANS_WRITE_FAILED, /* Destination DMA write failed */
|
||||
DMA_TRANS_ABORTED, /* Op never submitted / aborted */
|
||||
};
|
||||
|
||||
struct dmaengine_result {
|
||||
enum dmaengine_tx_result result;
|
||||
u32 residue;
|
||||
};
|
||||
|
||||
typedef void (*dma_async_tx_callback_result)(void *dma_async_param,
|
||||
const struct dmaengine_result *result);
|
||||
|
||||
struct dmaengine_unmap_data {
|
||||
u8 map_cnt;
|
||||
u8 to_cnt;
|
||||
|
@ -478,6 +493,7 @@ struct dma_async_tx_descriptor {
|
|||
dma_cookie_t (*tx_submit)(struct dma_async_tx_descriptor *tx);
|
||||
int (*desc_free)(struct dma_async_tx_descriptor *tx);
|
||||
dma_async_tx_callback callback;
|
||||
dma_async_tx_callback_result callback_result;
|
||||
void *callback_param;
|
||||
struct dmaengine_unmap_data *unmap;
|
||||
#ifdef CONFIG_ASYNC_TX_ENABLE_CHANNEL_SWITCH
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue