📄 csl_edma3.h
字号:
/* ============================================================================
* Copyright (c) Texas Instruments Inc 2002, 2003, 2004, 2005, 2006
*
* Use of this software is controlled by the terms and conditions found in the
* license agreement under which this software has been supplied.
* ===========================================================================
*/
/** ============================================================================
* @file csl_edma3.h
*
* @path $(CSLPATH)\inc
*
* @desc Header file for functional layer CSL of EDMA
*
*/
/** @mainpage EDMA3
*
* @section Introduction
*
* @subsection xxx Purpose and Scope
* The purpose of this document is to detail the CSL APIs for the EDMA3
* Module. The CSL developer is expected to refer to this document
* while designing APIs for the modules which use Edma module. Some of the
* listed APIs may not be applicable to a given module. While other cases
* this list of APIs may not be sufficient to cover all the features required
* for a particular Module. The CSL developer should use his discretion
* designing new APIs or extending the existing ones to cover these.
*
* @subsection aaa Terms and Abbreviations
* -# CSL: Chip Support Library
* -# API: Application Programmer Interface
* -# EDMA: Enhanced Direct Memory Access
*
* @subsection References
* -# CSL 3.x Technical Requirements Specifications Version 0.5, dated
* May 14th, 2003
* -# EDMA Channel Controller Specification (Revision 3.0.2)
* -# EDMA Transfer Controller Specification (Revision 3.0.1)
*
* @subsection Assumptions
* The abbreviations EDMA, edma and Edma have been used throughout this
* document to refer to Enhanced Direct Memory Access.
*/
/* =============================================================================
* Revision History
* ===============
* 29-May-2004 Ruchika Kharwar File Created.
*
* =============================================================================
*/
#ifndef _CSL_EDMA3_H_
#define _CSL_EDMA3_H_
#ifdef __cplusplus
extern "C" {
#endif
#include <csl.h>
#include <soc.h>
#include <cslr_edma3cc.h>
/* EDMA Symbols Defined */
/** Link to a Null Param set */
#define CSL_EDMA3_LINK_NULL 0xFFFF
/** Link to a Null Param set */
#define CSL_EDMA3_LINK_DEFAULT 0xFFFF
/** A synchronized transfer */
#define CSL_EDMA3_SYNC_A 0
/** AB synchronized transfer */
#define CSL_EDMA3_SYNC_AB 1
/** Normal Completion */
#define CSL_EDMA3_TCC_NORMAL 0
/** Early Completion */
#define CSL_EDMA3_TCC_EARLY 1
/** Only for ease */
#define CSL_EDMA3_FIFOWIDTH_NONE 0
/** 8 bit FIFO Width */
#define CSL_EDMA3_FIFOWIDTH_8BIT 0
/** 16 bit FIFO Width */
#define CSL_EDMA3_FIFOWIDTH_16BIT 1
/** 32 bit FIFO Width */
#define CSL_EDMA3_FIFOWIDTH_32BIT 2
/** 64 bit FIFO Width */
#define CSL_EDMA3_FIFOWIDTH_64BIT 3
/** 128 bit FIFO Width */
#define CSL_EDMA3_FIFOWIDTH_128BIT 4
/** 256 bit FIFO Width */
#define CSL_EDMA3_FIFOWIDTH_256BIT 5
/** Address Mode is incremental */
#define CSL_EDMA3_ADDRMODE_INCR 0
/** Address Mode is such it wraps around after reaching FIFO width */
#define CSL_EDMA3_ADDRMODE_CONST 1
/* Bitwise OR of the below symbols are used for setting the Memory attributes
These are defined only if the Memory Protection feature exists */
#if CSL_EDMA3_MEMPROTECT
/** User Execute permission */
#define CSL_EDMA3_MEMACCESS_UX 0x0001
/** User Write permission */
#define CSL_EDMA3_MEMACCESS_UW 0x0002
/** User Read permission */
#define CSL_EDMA3_MEMACCESS_UR 0x0004
/** Supervisor Execute permission */
#define CSL_EDMA3_MEMACCESS_SX 0x0008
/** Supervisor Write permission */
#define CSL_EDMA3_MEMACCESS_SW 0x0010
/** Supervisor Read permission */
#define CSL_EDMA3_MEMACCESS_SR 0x0020
/** External Allowed ID. Requests with PrivID >= '6' are permitted
* if access type is allowed
*/
#define CSL_EDMA3_MEMACCESS_EXT 0x0200
/** Allowed ID '0' */
#define CSL_EDMA3_MEMACCESS_AID0 0x0400
/** Allowed ID '1' */
#define CSL_EDMA3_MEMACCESS_AID1 0x0800
/** Allowed ID '2' */
#define CSL_EDMA3_MEMACCESS_AID2 0x1000
/** Allowed ID '3' */
#define CSL_EDMA3_MEMACCESS_AID3 0x2000
/** Allowed ID '4' */
#define CSL_EDMA3_MEMACCESS_AID4 0x4000
/** Allowed ID '5' */
#define CSL_EDMA3_MEMACCESS_AID5 0x8000
#endif
/** Intermediate transfer completion interrupt enable */
#define CSL_EDMA3_ITCINT_EN 1
/** Intermediate transfer completion interrupt disable */
#define CSL_EDMA3_ITCINT_DIS 0
/** Intermediate transfer completion chaining enable */
#define CSL_EDMA3_ITCCH_EN 1
/** Intermediate transfer completion chaining disable */
#define CSL_EDMA3_ITCCH_DIS 0
/** Transfer completion interrupt enable */
#define CSL_EDMA3_TCINT_EN 1
/** Transfer completion interrupt disable */
#define CSL_EDMA3_TCINT_DIS 0
/** Transfer completion chaining enable */
#define CSL_EDMA3_TCCH_EN 1
/** Transfer completion chaining disable */
#define CSL_EDMA3_TCCH_DIS 0
/** Enable Static */
#define CSL_EDMA3_STATIC_EN 1
/** Disable Static */
#define CSL_EDMA3_STATIC_DIS 0
/** Last trigger word in a QDMA parameter set */
#define CSL_EDMA3_TRIGWORD_DEFAULT 7
/** Trigger word option field */
#define CSL_EDMA3_TRIGWORD_OPT 0
/** Trigger word source */
#define CSL_EDMA3_TRIGWORD_SRC 1
/** Trigger word AB count */
#define CSL_EDMA3_TRIGWORD_A_B_CNT 2
/** Trigger word destination */
#define CSL_EDMA3_TRIGWORD_DST 3
/** Trigger word src and dst B index */
#define CSL_EDMA3_TRIGWORD_SRC_DST_BIDX 4
/** Trigger word B count reload */
#define CSL_EDMA3_TRIGWORD_LINK_BCNTRLD 5
/** Trigger word src and dst C index */
#define CSL_EDMA3_TRIGWORD_SRC_DST_CIDX 6
/** Trigger word C count */
#define CSL_EDMA3_TRIGWORD_CCNT 7
/** Used for creating the options entry in the parameter ram */
#define CSL_EDMA3_OPT_MAKE(itcchEn, tcchEn, itcintEn, tcintEn, tcc, tccMode, \
fwid, stat, syncDim, dam, sam) \
(Uint32)(\
CSL_FMKR(23,23,itcchEn) \
|CSL_FMKR(22,22,tcchEn) \
|CSL_FMKR(21,21,itcintEn) \
|CSL_FMKR(20,20,tcintEn) \
|CSL_FMKR(17,12,tcc) \
|CSL_FMKR(11,11,tccMode) \
|CSL_FMKR(10,8,fwid) \
|CSL_FMKR(3,3,stat) \
|CSL_FMKR(2,2,syncDim) \
|CSL_FMKR(1,1,dam) \
|CSL_FMKR(0,0,sam))
/** Used for creating the A,B Count entry in the parameter ram */
#define CSL_EDMA3_CNT_MAKE(aCnt,bCnt) \
(Uint32)(\
CSL_FMK(EDMA3CC_A_B_CNT_ACNT,aCnt) \
|CSL_FMK(EDMA3CC_A_B_CNT_BCNT,bCnt)\
)
/** Used for creating the link and B count reload entry in the parameter ram */
#define CSL_EDMA3_LINKBCNTRLD_MAKE(link,bCntRld) \
(Uint32)(\
CSL_FMK(EDMA3CC_LINK_BCNTRLD_LINK,(Uint32)link) \
|CSL_FMK(EDMA3CC_LINK_BCNTRLD_BCNTRLD,bCntRld)\
)
/** Used for creating the B index entry in the parameter ram */
#define CSL_EDMA3_BIDX_MAKE(src,dst) \
(Uint32)(\
CSL_FMK(EDMA3CC_SRC_DST_BIDX_DSTBIDX,(Uint32)dst) \
|CSL_FMK(EDMA3CC_SRC_DST_BIDX_SRCBIDX,(Uint32)src)\
)
/** Used for creating the C index entry in the parameter ram */
#define CSL_EDMA3_CIDX_MAKE(src,dst) \
(Uint32)(\
CSL_FMK(EDMA3CC_SRC_DST_CIDX_DSTCIDX,(Uint32)dst) \
|CSL_FMK(EDMA3CC_SRC_DST_CIDX_SRCCIDX,(Uint32)src)\
)
/** DMA Channel Setup */
#define CSL_EDMA3_DMACHANNELSETUP_DEFAULT { \
{CSL_EDMA3_QUE_0,0}, \
{CSL_EDMA3_QUE_0,1}, \
{CSL_EDMA3_QUE_0,2}, \
{CSL_EDMA3_QUE_0,3}, \
{CSL_EDMA3_QUE_0,4}, \
{CSL_EDMA3_QUE_0,5}, \
{CSL_EDMA3_QUE_0,6}, \
{CSL_EDMA3_QUE_0,7}, \
{CSL_EDMA3_QUE_0,8}, \
{CSL_EDMA3_QUE_0,9}, \
{CSL_EDMA3_QUE_0,10}, \
{CSL_EDMA3_QUE_0,11}, \
{CSL_EDMA3_QUE_0,12}, \
{CSL_EDMA3_QUE_0,13}, \
{CSL_EDMA3_QUE_0,14}, \
{CSL_EDMA3_QUE_0,15}, \
{CSL_EDMA3_QUE_0,16}, \
{CSL_EDMA3_QUE_0,17}, \
{CSL_EDMA3_QUE_0,18}, \
{CSL_EDMA3_QUE_0,19}, \
{CSL_EDMA3_QUE_0,20}, \
{CSL_EDMA3_QUE_0,21}, \
{CSL_EDMA3_QUE_0,22}, \
{CSL_EDMA3_QUE_0,23}, \
{CSL_EDMA3_QUE_0,24}, \
{CSL_EDMA3_QUE_0,25}, \
{CSL_EDMA3_QUE_0,26}, \
{CSL_EDMA3_QUE_0,27}, \
{CSL_EDMA3_QUE_0,28}, \
{CSL_EDMA3_QUE_0,29}, \
{CSL_EDMA3_QUE_0,30}, \
{CSL_EDMA3_QUE_0,31}, \
{CSL_EDMA3_QUE_0,32}, \
{CSL_EDMA3_QUE_0,33}, \
{CSL_EDMA3_QUE_0,34}, \
{CSL_EDMA3_QUE_0,35}, \
{CSL_EDMA3_QUE_0,36}, \
{CSL_EDMA3_QUE_0,37}, \
{CSL_EDMA3_QUE_0,38}, \
{CSL_EDMA3_QUE_0,39}, \
{CSL_EDMA3_QUE_0,40}, \
{CSL_EDMA3_QUE_0,41}, \
{CSL_EDMA3_QUE_0,42}, \
{CSL_EDMA3_QUE_0,43}, \
{CSL_EDMA3_QUE_0,44}, \
{CSL_EDMA3_QUE_0,45}, \
{CSL_EDMA3_QUE_0,46}, \
{CSL_EDMA3_QUE_0,47}, \
{CSL_EDMA3_QUE_0,48}, \
{CSL_EDMA3_QUE_0,49}, \
{CSL_EDMA3_QUE_0,50}, \
{CSL_EDMA3_QUE_0,51}, \
{CSL_EDMA3_QUE_0,52}, \
{CSL_EDMA3_QUE_0,53}, \
{CSL_EDMA3_QUE_0,54}, \
{CSL_EDMA3_QUE_0,55}, \
{CSL_EDMA3_QUE_0,56}, \
{CSL_EDMA3_QUE_0,57}, \
{CSL_EDMA3_QUE_0,58}, \
{CSL_EDMA3_QUE_0,59}, \
{CSL_EDMA3_QUE_0,60}, \
{CSL_EDMA3_QUE_0,61}, \
{CSL_EDMA3_QUE_0,62}, \
{CSL_EDMA3_QUE_0,63} \
}
/** QDMA Channel Setup */
#define CSL_EDMA3_QDMACHANNELSETUP_DEFAULT { \
{CSL_EDMA3_QUE_0,64,CSL_EDMA3_TRIGWORD_DEFAULT}, \
{CSL_EDMA3_QUE_0,65,CSL_EDMA3_TRIGWORD_DEFAULT}, \
{CSL_EDMA3_QUE_0,66,CSL_EDMA3_TRIGWORD_DEFAULT}, \
{CSL_EDMA3_QUE_0,67,CSL_EDMA3_TRIGWORD_DEFAULT} \
}
/** @brief Enumeration for System priorities
*
* This is used for Setting up the Que Priority level
*/
typedef enum {
/** System priority level 0 */
CSL_EDMA3_QUE_PRI_0 = 0,
/** System priority level 1 */
CSL_EDMA3_QUE_PRI_1 = 1,
/** System priority level 2 */
CSL_EDMA3_QUE_PRI_2 = 2,
/** System priority level 3 */
CSL_EDMA3_QUE_PRI_3 = 3,
/** System priority level 4 */
CSL_EDMA3_QUE_PRI_4 = 4,
/** System priority level 5 */
CSL_EDMA3_QUE_PRI_5 = 5,
/** System priority level 6 */
CSL_EDMA3_QUE_PRI_6 = 6,
/** System priority level 7 */
CSL_EDMA3_QUE_PRI_7 = 7
}CSL_Edma3QuePri;
/** @brief Enumeration for EDMA Que Thresholds
*
* This is used for Setting up the Que thresholds
*/
typedef enum {
/** EDMA Que Threshold 0 */
CSL_EDMA3_QUE_THR_0 = 0,
/** EDMA Que Threshold 1 */
CSL_EDMA3_QUE_THR_1 = 1,
/** EDMA Que Threshold 2 */
CSL_EDMA3_QUE_THR_2 = 2,
/** EDMA Que Threshold 3 */
CSL_EDMA3_QUE_THR_3 = 3,
/** EDMA Que Threshold 4 */
CSL_EDMA3_QUE_THR_4 = 4,
/** EDMA Que Threshold 5 */
CSL_EDMA3_QUE_THR_5 = 5,
/** EDMA Que Threshold 6 */
CSL_EDMA3_QUE_THR_6 = 6,
/** EDMA Que Threshold 7 */
CSL_EDMA3_QUE_THR_7 = 7,
/** EDMA Que Threshold 8 */
CSL_EDMA3_QUE_THR_8 = 8,
/** EDMA Que Threshold 9 */
CSL_EDMA3_QUE_THR_9 = 9,
/** EDMA Que Threshold 10 */
CSL_EDMA3_QUE_THR_10 = 10,
/** EDMA Que Threshold 11 */
CSL_EDMA3_QUE_THR_11 = 11,
/** EDMA Que Threshold 12 */
CSL_EDMA3_QUE_THR_12 = 12,
/** EDMA Que Threshold 13 */
CSL_EDMA3_QUE_THR_13 = 13,
/** EDMA Que Threshold 14 */
CSL_EDMA3_QUE_THR_14 = 14,
/** EDMA Que Threshold 15 */
CSL_EDMA3_QUE_THR_15 = 15,
/** EDMA Que Threshold 16 */
CSL_EDMA3_QUE_THR_16 = 16,
/* EDMA Que Threshold Disable Errors */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -