dma_addr_t dma_dst;//virtual addresschar*src =NULL;char*dst =NULL ;structdma_device *dev;structdma_async_tx_descriptor *tx =NULL;enumdma_ctrl_flags flags; dma_cookie_t cookie;//When dma transfer finished,this function will be called.voiddma_callback_func(void) {inti;for(i =0; i <...
flags,可用于向dma controller driver传递一些额外的信息,包括(具体可参考enum dma_ctrl_flags中以DMA_PREP_开头的定义): DMA_PREP_INTERRUPT,告诉DMA controller driver,本次传输完成后,产生一个中断,并调用client提供的回调函数(可在该函数返回后,通过设置struct dma_async_tx_descriptor指针中的相关字段,提供回调函...
{ struct dma_device *dma_dev; struct dma_async_tx_descriptor *tx; dma_cap_mask_t mask; struct dma_slave_config slave_config; struct scatterlist sg; enum dma_ctrl_flags flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT; int ret; dma_addr_t device_phys_addr; pr_info("DMA test started\n"...
static inline void vchan_free_chan_resources(struct virt_dma_chan *vc) { struct virt_dma_desc *vd; unsigned long flags; LIST_HEAD(head); spin_lock_irqsave(&vc->lock, flags); vchan_get_all_descriptors(vc, &head); list_for_each_entry(vd, &head, node) dmaengine_desc_clear_reuse(&...
DMA_CTRL_ACK,如果该flag为0,表明暂时不能被重复使用。 */ enumdma_ctrl_flags flags;/* not a 'long' to pack with cookie */ //该描述符的物理地址 dma_addr_tphys; //对应的dma channel structdma_chan*chan; /* controller driver提供的回调函数,用于把改描述符提交到待传输列表。
flags,可用于向dma controller driver传递一些额外的信息,包括(具体可参考enum dma_ctrl_flags中以DMA_PREP_开头的定义): DMA_PREP_INTERRUPT,告诉DMA controller driver,本次传输完成后,产生一个中断,并调用client提供的回调函数(可在该函数返回后,通过设置struct dma_async_tx_descriptor指针中的相关字段,提供回调函...
flags:DMA_CTRL_XXX,例如:DMA_CTRL_REUSE:表明这个描述符可以被重复使用;DMA_CTRL_ACK:表明暂时不能被重复使用 tx_submit:controller driver提供的回调函数,用于把该描述符提交到待传输列表 callback、callback_param:传输完成的回调函数(及参数) (3)操作API接口struct dma_chan *dma_request_channel(dma_cap_mask...
flags,可用于向dma controller driver传递一些额外的信息,包括(具体可参考enum dma_ctrl_flags中以DMA_PREP_开头的定义): DMA_PREP_INTERRUPT,告诉DMA controller driver,本次传输完成后,产生一个中断,并调用client提供的回调函数(可在该函数返回后,通过设置struct dma_async_tx_descriptor指针中的相关字段,提供回调函...
flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT; dev = chan->device; } void dma_del(void) { //free memory and dma channel dma_free_coherent(NULL, MM_SIZE, dst, &dma_dst); dma_release_channel(chan); } static int device_open(struct inode *inode, struct file *file) ...
*/enumdma_ctrl_flags flags;/* not a 'long' to pack with cookie *///该描述符的物理地址dma_addr_t phys;//对应的dma channelstruct dma_chan*chan;/* controller driver提供的回调函数,用于把改描述符提交到待传输列表。 通常由dma engine调用,client driver不会直接和该接口打交道。