作用:des 参数是指向一个 struct dma_async_tx_descriptor 结构体的指针,该结构体描述了要进行的 DMA 传输的详细信息,包括传输的源地址、目标地址、传输大小、传输方向(读/写)、传输类型(如内存到内存、内存到外设等)以及任何相关的回调函数或参数。 结构体内成员:struct dma_async_tx_descriptor 的具体成员可能因...
static int hc_dma_probe(struct platform_device *pdev); static int hc_dma_remove(struct platform_device *pdev); static void hc_dma_tasklet(unsigned long data); static irqreturn_t hc_dma_interrupt(int irq, void *dev_id); static struct dma_async_tx_descriptor *hc_dma_prep_dma_memcpy(struc...
static int hc_dma_alloc_chan_resources(struct dma_chan *chan); static void hc_dma_free_chan_resources(struct dma_chan *chan); static int hc_dma_config(struct dma_chan *chan, struct dma_slave_config *config); static struct dma_async_tx_descriptor *hc_dma_prep_dma_memcpy(struct dma_chan...
dma_filter_fn filter_fn,void*filter_param);2. Set slave and controller specific parameters Interface:intdmaengine_slave_config(structdma_chan *chan,structdma_slave_config *config)3. Get a descriptorfortransaction Interface:structdma_async_tx_descriptor *(*chan->device->device_prep_slave_sg)(str...
struct dma_async_tx_descriptor *tx = NULL; dma_cookie_t cookie; unsigned long flags; bool sync_wait = false;---true表示同步等待模式;false表示异步模式,和callback()配合。 int err = 0; flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT; tx = xxxxxx->dma.chan->device-...
DMA传输属于异步传输,在启动传输之前,slave driver需要将此次传输的一些信息(例如src/dst的buffer、传输的方向等)提交给dma engine(本质上是dma controller driver),dma engine确认okay后,返回一个描述符(由struct dma_async_tx_descriptor抽象)。此后,slave driver就可以以该描述符为单位,控制并跟踪此次传输。
DMA传输属于异步传输,在启动传输之前,slave driver需要将此次传输的一些信息(例如src/dst的buffer、传输的方向等)提交给dma engine(本质上是dma controller driver),dma engine确认okay后,返回一个描述符(由struct dma_async_tx_descriptor抽象)。此后,slave driver就可以以该描述符为单位,控制并跟踪此次传输。
驱动程序应尽量在探测时预先分配可能需要的任何内存,以避免对现在ait分配器施加过大压力。它应返回dma_async_tx_descriptor结构的唯一实例,进一步表示此特定传输。可以使用函数dma_async_tx_descriptor_init初始化此结构。您还需要在此结构中设置两个字段: flags:TODO:驱动程序本身是否可以修改它,还是应始终使用参数传递...
dma_cookie_t dmaengine_submit(struct dma_async_tx_descriptor *desc) 一旦传输描述符准备好并且回调函数也加入后,该函数把传输描述符加入到DMA engine驱动的等待队列,但不会启动DMA操作 void dma_async_issue_pending(struct dma_chan *chan) 该函数启动DMA传输,此时如果通道是空闲的,等待队列中的第一个传输描述...
*/int(*desc_free)(struct dma_async_tx_descriptor*tx);//传输完成的回调函数(及其参数),由client driver提供。dma_async_tx_callback callback;dma_async_tx_callback_result callback_result;//传输完成的回调函数(及其参数),由client driver提供。void*callback_param;struct dmaengine_unmap_data*unmap;#...