i960Dma.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* i960Dma.h - Intel i960 DMA definitions */
  2. /* Copyright 1984-1993 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01b,12feb93,ccc  added cplusplus and ASMLANUGAGE.
  7. 01a,22jan93,ccc  created for TP960V SCSI support
  8. */
  9. /*
  10. This file contains definitions associated with the i960's on-board DMA
  11. controller, and the data structures used by the DMA interface routines
  12. in "sysALib.s".  See Intel's "I960CA User's Manual", Chapter 13 - but beware,
  13. there seem to be many typos.
  14. These definitions (and the routines in "sysALib.s") are hardware-independent
  15. and should really be in architecture-wide places rather than the BSP.
  16. */
  17. #ifndef INCi960Dmah
  18. #define INCi960Dmah
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. #ifndef _ASMLANGUAGE
  23. #include "vxWorks.h"
  24. /*
  25.  *  Bit positions and masks in DMA Command Register (DMAC)
  26.  *
  27.  *  Note: 'chan' must be in range 0 to 3
  28.  */
  29. #define DMAC_CHAN_ENABLE_BIT(chan)   ((chan) +  0)
  30. #define DMAC_CHAN_TERM_BIT(chan)   ((chan) +  4)
  31. #define DMAC_CHAN_ACTIVE_BIT(chan)   ((chan) +  8)
  32. #define DMAC_CHAN_DONE_BIT(chan)   ((chan) + 12)
  33. #define DMAC_CHAN_WAIT_BIT(chan)   ((chan) + 16)
  34. #define DMAC_CHAN_ENABLE(chan)      (1 << DMAC_CHAN_ENABLE_BIT (chan))
  35. #define DMAC_CHAN_TERM(chan)      (1 << DMAC_CHAN_TERM_BIT   (chan))
  36. #define DMAC_CHAN_ACTIVE(chan)      (1 << DMAC_CHAN_ACTIVE_BIT (chan))
  37. #define DMAC_CHAN_DONE(chan)      (1 << DMAC_CHAN_DONE_BIT   (chan))
  38. #define DMAC_CHAN_WAIT(chan)      (1 << DMAC_CHAN_WAIT_BIT   (chan))
  39. #define DMAC_PRIORITY           0x00100000
  40. #define DMAC_THROTTLE         0x00200000
  41. /* Bit masks in DMA Control Word */
  42. #define DMACW_XFER_8_TO_8          0   /* transfer mode specs   */
  43. #define DMACW_XFER_8_TO_16         1
  44. #define DMACW_XFER_RESERVED_1       2
  45. #define DMACW_XFER_8_TO_32         3
  46. #define DMACW_XFER_16_TO_8          4
  47. #define DMACW_XFER_16_TO_16         5
  48. #define DMACW_XFER_RESERVED_2       6
  49. #define DMACW_XFER_16_TO_32         7
  50. #define DMACW_XFER_8_FLYBY         8
  51. #define DMACW_XFER_16_FLYBY        9
  52. #define DMACW_XFER_128_FLYBY_QUAD    10
  53. #define DMACW_XFER_32_FLYBY       11
  54. #define DMACW_XFER_32_TO_8         12   /* Intel says 32 to 16 ?? */
  55. #define DMACW_XFER_32_TO_16        13
  56. #define DMACW_XFER_128_TO_128_QUAD   14
  57. #define DMACW_XFER_32_TO_32        15
  58. #define DMACW_XFER_MASK      0x0000000F   /* select one of the above   */
  59. #define DMACW_DST_HOLD      0x00000010   /* hold / increment dst addr */
  60. #define DMACW_DST_INCR      0x00000000
  61. #define DMACW_SRC_HOLD      0x00000020   /* hold / increment src addr */
  62. #define DMACW_SRC_INCR      0x00000000
  63. #define DMACW_SYNC_DST      0x000000C0   /* sync w. dst / src / none  */
  64. #define DMACW_SYNC_SRC      0x00000080   /* (NB - Intel docs reverse  */
  65. #define DMACW_SYNC_NONE      0x00000000   /* src/dst and sync/none.)   */
  66. #define DMACW_TERM_COUNT     0x00000100   /* end on count / EOP input  */
  67. #define DMACW_TERM_EOP      0x00000000
  68. #define DMACW_DST_CHAIN      0x00000200   /* dst chaining when set     */
  69. #define DMACW_SRC_CHAIN      0x00000400   /* src chaining when set     */
  70. #define DMACW_CHAIN_INT      0x00000800   /* intr on chain when set    */
  71. #define DMACW_CHAIN_WAIT     0x00001000   /* wait on chain when set    */
  72. /* Parameters for "sysDmaChanSetup()" */
  73. typedef struct dmaParams
  74.     {
  75.     UINT32              count; /* byte count to be transferred   */
  76.     volatile UINT8 *    srcAddr; /* initial source address         */
  77.     volatile UINT8 *    dstAddr; /* initial destination address    */
  78.     struct  dmaParams * next; /* link to next transfer in chain */
  79.     } DMA_PARAMS;
  80. #endif /* _ASMLANGUAGE */
  81. #ifdef __cplusplus
  82. }
  83. #endif
  84. #endif /* INCi960Dmah */