dma.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
- /* DMA.h - DMA functions and definitions*/
- /* Copyright Galileo Technology. */
- #ifndef __INCdmah
- #define __INCdmah
- /* includes */
- #include "core.h"
- /* defines */
- #define FIRST_DMA_ENGINE 0
- #define LAST_DMA_ENGINE 3
- #define FLY_BY BIT0
- #define RD_WR_FLY BIT1
- #define DECREMENT_SOURCE_ADDRESS BIT2
- #define HOLD_SOURCE_ADDRESS BIT3
- #define DECREMENT_DEST_ADDRESS BIT4
- #define HOLD_DEST_ADDRESS BIT5
- #define DTL_1BYTE BIT6 | BIT8
- #define DTL_2BYTES BIT7 | BIT8
- #define DTL_4BYTES BIT7
- #define DTL_8BYTES NO_BIT
- #define DTL_16BYTES BIT6
- #define DTL_32BYTES BIT6 | BIT7
- #define DTL_64BYTES BIT6 | BIT7 | BIT8
- #define NON_CHAIN_MOD BIT9
- #define INT_EVERY_NULL_POINTER BIT10
- #define BLOCK_TRANSFER_MODE BIT11
- #define CHANNEL_ENABLE BIT12
- #define FETCH_NEXT_RECORED BIT13
- #define DMA_ACTIVITY_STATUS BIT14
- #define ALIGN_TOWARD_DEST BIT15
- #define MASK_DMA_REQ BIT16
- #define ENABLE_DESCRIPTOR BIT17
- #define ENABLE_EOT BIT18
- #define ENABLE_EOT_INTERRUPT BIT19
- #define ABORT_DMA BIT20
- #define SOURCE_ADDR_IN_PCI0 BIT21
- #define SOURCE_ADDR_IN_PCI1 BIT22
- #define DEST_ADDR_IN_PCI0 BIT23
- #define DEST_ADDR_IN_PCI1 BIT24
- #define REC_ADDR_IN_PCI0 BIT25
- #define REC_ADDR_IN_PCI1 BIT26
- #define REQ_FROM_TIMER_COUNTER BIT28
- /* typedefs */
- typedef enum dmaEngine{DMA_ENG_0,DMA_ENG_1,DMA_ENG_2,DMA_ENG_3} DMA_ENGINE;
- /* priority definitions */
- typedef enum prioChan01{ROUND_ROBIN01,CH_1,CH_0} PRIO_CHAN_0_1;
- typedef enum prioChan23{ROUND_ROBIN23,CH_3,CH_2} PRIO_CHAN_2_3;
- typedef enum prioGroup{ROUND_ROBIN,CH_2_3,CH_0_1} PRIO_GROUP;
- typedef enum prioOpt{RETURN_BUS,KEEP_BUS} PRIO_OPT;
- typedef struct dmaRecored
- {
- unsigned int ByteCnt;
- unsigned int SrcAdd;
- unsigned int DestAdd;
- unsigned int NextRecPtr;
- } DMA_RECORED;
- typedef enum __dma_status{CHANNEL_BUSY,NO_SUCH_CHANNEL,DMA_OK,
- GENERAL_ERROR} DMA_STATUS;
- DMA_STATUS dmaTransfer (DMA_ENGINE engine,unsigned int sourceAddr,
- unsigned int destAddr,unsigned int numOfBytes,
- unsigned int command,DMA_RECORED * nextRecoredPointer);
- bool dmaCommand (DMA_ENGINE channel,unsigned int command);
- bool isDmaChannelActive (DMA_ENGINE channel);
- bool changeDmaPriority(PRIO_CHAN_0_1 prio_01, PRIO_CHAN_2_3 prio_23,
- PRIO_GROUP prioGrp, PRIO_OPT prioOpt);
- #endif /* __INCdmah */