Edit online

接口设计

Read time: 3 minute(s)

以下接口是遵循 Linux DMA Engine 子系统的标准接口:

1. aic_dma_config

函数原型

static int aic_dma_config(struct dma_chan *chan, struct dma_slave_config *config)

功能说明

配置指定的 DMA 物理通道

参数定义

chan - 指向一个 DMA 物理通道

config - 保存了需要的配置信息

返回值

0,成功

注意事项

-

2. aic_dma_pause

函数原型

static int aic_dma_pause(struct dma_chan *chan)

功能说明

暂停指定通道的传输操作

参数定义

chan - 指向一个 DMA 物理通道

返回值

0,成功

注意事项

-

3. aic_dma_resume

函数原型

static int aic_dma_resume(struct dma_chan *chan)

功能说明

恢复指定通道的传输操作

参数定义

chan - 指向一个 DMA 物理通道

返回值

0,成功

注意事项

-

4. aic_dma_prep_dma_memcpy

函数原型

static struct dma_async_tx_descriptor *aic_dma_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 - 数据长度

flags - 一些标记

返回值

成功,则返回一个 DMA 描述符。失败,返回 NULL

注意事项

-

5. aic_dma_prep_slave_sg

函数原型

static struct dma_async_tx_descriptor *aic_dma_prep_slave_sg(struct dma_chan *chan,struct scatterlist *sgl, unsigned int sg_len,enum dma_transfer_direction dir, unsigned long flags,void *context)

功能说明

设备与内存之间传输操作的预处理

参数定义

chan - 指向一个 DMA 物理通道

sgl - 指向一个散列列表

sg_len - 散列中的数据长度

flags - 一些标记

context - 指向一些私有的上下文信息

dir - 传输方向,是 Dev to Mem,还是 Mem to Dev

返回值

成功,则返回一个 DMA 描述符。失败,返回 NULL

注意事项

-

6. aic_dma_prep_dma_cyclic

函数原型

static struct dma_async_tx_descriptor *aic_dma_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

flags - 一些标记

返回值

成功,则返回一个 DMA 描述符。失败,返回 NULL

注意事项

-

7. aic_dma_issue_pending

函数原型

static void aic_dma_issue_pending(struct dma_chan *chan)

功能说明

启动指定通道的数据传输

参数定义

chan - 指向一个 DMA 物理通道

返回值

注意事项

-

8. aic_dma_terminate_all

函数原型

static int aic_dma_terminate_all(struct dma_chan *chan)

功能说明

终止所有通道的数据传输

参数定义

chan - 指向一个 DMA 物理通道

返回值

0,成功

注意事项

-