October 2017
Intermediate to advanced
586 pages
14h 8m
English
To put the transaction in the driver pending queue, one uses dmaengine_submit(). Once the descriptor has been prepared and the callback information added, one should place it on the DMA engine driver pending queue:
dma_cookie_t dmaengine_submit(struct dma_async_tx_descriptor *desc)
This function returns a cookie that one can use to check the progress of DMA activity through other DMA engines. dmaengine_submit() will not start the DMA operation, it merely adds it to the pending queue. How to start the transaction is discussed in the next step:
struct completion transfer_ok; init_completion(&transfer_ok); tx->callback = my_dma_callback; /* Submit our dma transfer */ dma_cookie_t cookie = dmaengine_submit(tx); if ...