dmaengine_prep_dma_cyclic常用于音频等场景,在进行一定的长度的dma传输,每传输一定的byte就会调用一次传输 完成的回调函数。 dmaengine_prep_interleaved_dma可进行不连续的、交叉的DMA传输,通常用在图形处理,显示等场景中。 kernel dma engine鼓励client driver一次提交过个传输,然后(dma controller driver)统一完成这些...
//带有异或值的操作DMA_PQ_VAL,//带有奇偶校验值的操作DMA_MEMSET,//内存设置操作DMA_MEMSET_SG,//散列表内存设置操作DMA_INTERRUPT,//中断相关的 DMA 操作DMA_PRIVATE,//私有的 DMA 操作DMA_ASYNC_TX,//异步传输的 DMA 操作DMA_SLAVE,//从设备相关的 DMA 操作DMA_CYCLIC,//循环的 DMA 操作DMA_INTERLEAVE...
Kudos on coming back and answering your own question so others can see your solution. I was also upgrading my Linux DMA driver from an older PetaLinux (2018.1) to PetaLinux 2022.1 and was experiencing NULL return values for dmaengine_prep_dma_cyclic. I ran into the same probl...
DMA_PREP_FENCE,告诉DMA controller driver,后续的传输,依赖本次传输的结果(这样controller driver就会小心的组织多个dma传输之间的顺序); DMA_PREP_PQ_DISABLE_P、DMA_PREP_PQ_DISABLE_Q、DMA_PREP_CONTINUE,PQ有关的操作,TODO。 dmaengine_prep_dma_cyclic常用于音频等场景中,在进行一定长度的dma传输(buf_addr&b...
struct dma_async_tx_descriptor dmaengine_prep_dma_cyclic( struct dma_chan chan, dma_addr_t buf_addr, size_t buf_len, size_t period_len, enum dma_data_direction direction); struct dma_async_tx_descriptor dmaengine_prep_interleaved_dma( ...
DMA_CYCLIC 设备可以处理循环传输。 循环传输是指块集合将循环自身,最后一个项目指向第一个。 通常用于音频传输,您希望在一个单独的环形缓冲区上操作,该缓冲区将用音频数据填充。 DMA_INTERLEAVE 设备支持交错传输。 这些传输可以将数据从非连续缓冲区传输到非连续缓冲区,与DMA_SLAVE相反,后者可以将数据从非连续数据...
DMA_CYCLIC,可进行cyclic类[2]的传输; DMA_INTERLEAVE,可进行交叉传输[2]; 等等,等等(各种奇奇怪怪的传输类型,不看不知道,一看吓一跳!!)。 另外,该bitmap的定义,需要和后面device_prep_dma_xxx形式的回调函数对应(bitmap中支持某个传输类型,就必须提供该类型对应的回调函数)。
DMA_CYCLIC 设备可以处理循环传输。 循环传输是指块集合将循环自身,最后一个项目指向第一个。 通常用于音频传输,您希望在一个单独的环形缓冲区上操作,该缓冲区将用音频数据填充。 DMA_INTERLEAVE 设备支持交错传输。 这些传输可以将数据从非连续缓冲区传输到非连续缓冲区,与DMA_SLAVE相反,后者可以将数据从非连续数据...
if (dma_has_cap(DMA_INTERRUPT, device->cap_mask) && !device->device_prep_dma_interrupt) { dev_err(device->dev, "Device claims capability %s, but op is not defined\n", "DMA_INTERRUPT"); return -EIO; } if (dma_has_cap(DMA_CYCLIC, device->cap_mask) && !device-...
chan-device- device_prep_slave_sg struct dma_async_tx_descriptor *dmaengine_prep_dma_cyclic( struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, size_t period_len, enum dma_data_direction direction); struct dma_async_tx_descriptor *dmaengine_prep_interleaved_dma( struct dma_...