Files
AC707N/SDK/interface/driver/cpu/br35/asm/dma_copy.h
T
2025-12-03 11:12:34 +08:00

70 lines
2.7 KiB
C

#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_ */