Driver 层接口设计
以下接口是遵循 Linux DMA Engine 子系统的标准接口:
函数原型 | int dmaengine_slave_config(struct dma_chan *chan, struct dma_slave_config *config) |
---|---|
功能说明 | 配置指定的 DMA 物理通道 |
参数定义 | chan - 指向一个 DMA 物理通道 config - 保存了需要的配置信息 |
返回值 | 0,成功 |
注意事项 | - |
函数原型 | int dmaengine_pause(struct dma_chan *chan) |
---|---|
功能说明 | 暂停指定通道的传输操作 |
参数定义 | chan - 指向一个 DMA 物理通道 |
返回值 | 0,成功 |
注意事项 | - |
函数原型 | int dmaengine_resume(struct dma_chan *chan) |
---|---|
功能说明 | 恢复指定通道的传输操作 |
参数定义 | chan - 指向一个 DMA 物理通道 |
返回值 | 0,成功 |
注意事项 | - |
函数原型 | int dmaengine_prep_dma_memcpy(struct dma_chan *chan,dma_addr_t dest, dma_addr_t src,size_t len, unsigned long flags) |
---|---|
功能说明 | memcpy 操作的预处理 |
参数定义 | chan - 指向一个 DMA 物理通道 dest - 目标 Buffer 的物理地址 src - 源 Buffer 的物理地址 len - 数据长度 |
返回值 | 0,成功;<0,失败 |
注意事项 | - |
函数原型 | int dmaengine_prep_dma_device(struct dma_chan *chan,struct scatterlist *sgl, unsigned int sg_len,enum dma_transfer_direction dir, unsigned long flags,void *context) |
---|---|
功能说明 | 设备与内存之间传输操作的预处理 |
参数定义 | chan - 指向一个 DMA 物理通道 dest - 目标 Buffer 的物理地址 src - 源 Buffer 的物理地址 len - 数据长度 dir - 传输方向,是 Dev to Mem,还是 Mem to Dev |
返回值 | 0,成功;<0,失败 |
注意事项 | - |
函数原型 | int dmaengine_prep_dma_cyclic(struct dma_chan *chan,dma_addr_t buf_addr, size_t buf_len, size_t period_len,enum dma_transfer_direction dir, unsigned long flags) |
---|---|
功能说明 | (设备与内存之间)循环传输操作的预处理 |
参数定义 | chan - 指向一个 DMA 物理通道 buf_addr - 循环 Buffer 的起始物理地址 buf_len - 循环 Buffer 的总长度 period_len - 循环的 Buffer 片段长度 dir - 传输方向,是 Dev to Mem,还是 Mem to Dev |
返回值 | 0,成功;<0,失败 |
注意事项 | - |
函数原型 | void dma_async_issue_pending(struct dma_chan *chan) |
---|---|
功能说明 | 启动指定通道的数据传输 |
参数定义 | chan - 指向一个 DMA 物理通道 |
返回值 | 无 |
注意事项 | - |
函数原型 | int dmaengine_terminate_async(struct dma_chan *chan) |
---|---|
功能说明 | 终止所有通道的数据传输 |
参数定义 | chan - 指向一个 DMA 物理通道 |
返回值 | 0,成功 |
注意事项 | - |
函数原型 | enum dma_status dmaengine_tx_status(struct dma_chan *chan, uint32_t *residue) |
---|---|
功能说明 | 获取指定通道的传输状态 |
参数定义 | chan - 指向一个 DMA 物理通道 residue - 还没有传输完成的剩余长度,单位:字节 |
返回值 | DMA_COMPLETE,传输完成;DMA_IN_PROGRESS,传输中 |
注意事项 | - |