dma.h
上传用户:poi891205
上传日期:2013-07-15
资源大小:9745k
文件大小:1k
源码类别:

DVD

开发平台:

C/C++

  1. #ifndef __DMA_H
  2. #define __DMA_H
  3. #ifndef EXTERN
  4. #define EXTERN extern
  5. #endif
  6. #include "config.h"
  7. #include "regmap.h"
  8. #include "dmabuf.h"
  9. #define VADDR_MODE_GLOBAL_PHY   0
  10. #define VADDR_MODE_CDDSP        1
  11. #define VADDR_MODE_OSD 2
  12. #define VADDR_MODE_SUP 3
  13. #define VADDR_MODE_OGT VADDR_MODE_SUP
  14. #define VADDR_MODE_AUD 4
  15. #define VADDR_MODE_VID 5
  16. #define VADDR_MODE_DSP16 6
  17. #define VADDR_MODE_DSP24 7
  18. #define VADDR_MODE_GLOBAL 15
  19. #define DMA_LEN_32   (0<<3)
  20. #define DMA_LEN_64   (1<<3)
  21. //#define DMA_LEN_96   (2<<3)
  22. #define DMA_LEN_128  (2<<3)
  23. #define DMA_LEN_256  (3<<3)
  24. #define DMA_LEN_512  (4<<3)
  25. #define DMA_LEN_1024 (5<<3)
  26. #define DMA_READ_MD  (0<<5)
  27. #define DMA_WRITE_MD (1<<5)
  28. #define dma_buf (*(WorkBuf *)(DATA_RAM_BASE)) // regs0p->dmab.dma_mem
  29. //#define dma_buf1 (regs0->reg_dma_buf512)
  30. #define DMA_load(AddrMode, VAddr, HAddr, DAddr, Len) {
  31.   regs0->dma_mode=((((UINT32)(DAddr))&0xff)<<8)|((((Len)>>5)-1)<<3)|(AddrMode);
  32.   regs0->dma_xaddr    = (HAddr);
  33.   regs0->dma_yaddr    = (VAddr);
  34.   }
  35. #define DMA_save(AddrMode, VAddr, HAddr, DAddr, Len)  {
  36.   regs0->dma_mode=((((UINT32)(DAddr))&0xff)<<8)|((0x01)<<5)|((((Len)>>5)-1)<<3)|(AddrMode);
  37.   regs0->dma_xaddr    = (HAddr);
  38.   regs0->dma_yaddr    = (VAddr);
  39.   }
  40. #define DMA_wait() {while (!(regs0->dma_done));}
  41. #endif/*__DMA_H*/