#ifndef _DMA_COPY_H_ #define _DMA_COPY_H_ //=============================================================// //使用硬件dma模块搬运数据, 注意: // 1) 注意:本接口是异步接口,不适用dma读 // 2) dest和src地址需要4byte对齐 // 3)目前支持单模块使用; // 4)典型应用: IMB 乒乓buf搬数到psram; //=============================================================// void dma_memcpy_async(void *dest, void *src, u32 len); //=============================================================// // 等待dma_copy完成, 用于同步操作 //=============================================================// void dma_memcpy_wait_idle(void); //=============================================================// // 注意:本接口是异步接口,用户可以注册完成信息的回调,priv 用户自行定义用户信息,例如信号量激活等 //=============================================================// void dma_memcpy_async_with_callback(void *dest, void *src, u32 len, void (*callback)(void *priv), void *priv); //=============================================================// // 注意:本接口是同步接口 // dest和src地址需要4byte对齐 //=============================================================// void dma_memcpy_sync(void *dest, void *src, u32 len); //=============================================================// // 中断使用 //=============================================================// void dma_memcpy_async_inirq(void *dest, void *src, u32 len); //=============================================================// // 注意:sync_wait 配置dma 是否等结束,1:等待dma结束 0:不等结束 // 1) dest和src地址需要4byte对齐 // 2) 按int的格式进行memset,len = n byte //=============================================================// void dma_memset_int32(void *dest, u32 data, u32 len, int sync_wait); //=============================================================// // 注意:sync_wait 配置dma 是否等结束,1:等待dma结束 0:不等结束 // 1) dest和src地址需要4byte对齐 // 2) 按short的格式进行memset,len = n byte //=============================================================// void dma_memset_short(void *dest, u16 data, u32 len, int sync_wait); //=============================================================// // 注意:sync_wait 配置dma 是否等结束,1:等待dma结束 0:不等结束 // 1) dest和src地址需要4byte对齐 // 2) 按u8的格式进行memset,len = n byte //=============================================================// void dma_memset_byte(void *dest, u8 data, u32 len, int sync_wait); //dma_memcpy 锁,杰理内部使用 void dma_memcpy_lock(); void dma_memcpy_unlock(); #endif /* #ifndef _DMA_COPY_H_ */