Hello,
I’m using TCP3d over C6670 and having problem in initializing EDMA3 to
transfer data (Config Regs) into TCP3 register.
The code is given as below.
Could someone help figuring out why EMDA3 does not work?
Best Regards,
Bob
==================================
CSL_Edma3Context _edma3Context;
CSL_Edma3Obj _edmaObj;
CSL_Edma3Handle _hEdma3Inst;
CSL_Edma3ChannelObj _chObjTcp3P0In;
CSL_Edma3Obj _edmaObj;
CSL_Edma3Handle _hEdma3Inst;
CSL_Edma3ChannelObj _chObjTcp3P0In;
CSL_Edma3ParamHandle _hParamTcp3Ic;
CSL_Edma3ParamHandle _hParamTcp3InData;
uint32 _inDataLinkOffset;
CSL_Status status;
CSL_Edma3ChannelAttr chnlParam;
CSL_Edma3ChannelAttr chnlParam;
CSL_edma3Init(&_edma3Context);
_hEdma3Inst = CSL_edma3Open(&_edmaObj, 2, NULL, &status);
chnlParam.regionNum = CSL_EDMA3_REGION_GLOBAL;
chnlParam.chaNum = 64;
_hEdma3Tcp3P0In = CSL_edma3ChannelOpen(&_chObjTcp3P0In, 2,
&chnlParam, &status);
CSL_edma3HwChannelSetupQue(_hEdma3Tcp3P0Out, CSL_EDMA3_QUE_0);
CSL_edma3HwChannelSetupParam (_hEdma3Tcp3P0In, 0);
_hParamTcp3Ic = CSL_edma3GetParamHandle(_hEdma3Tcp3P0In, 0,
&status);
_hParamTcp3InData = CSL_edma3GetParamHandle(_hEdma3Tcp3P0In, 1,
&status);
_inDataLinkOffset = (uint32)_hParamTcp3InData & 0x0000FFFF;
edma3Config.option = CSL_EDMA3_OPT_MAKE(
CSL_EDMA3_ITCCH_DIS, // itcchEn
CSL_EDMA3_ITCCH_DIS, // itcchEn
CSL_EDMA3_TCCH_EN, // tcchEn
CSL_EDMA3_ITCINT_DIS, // itcintEn
CSL_EDMA3_TCINT_DIS, // tcintEn
0, // tcc
CSL_EDMA3_TCC_NORMAL, // tccMode
CSL_EDMA3_FIFOWIDTH_NONE, // fwid
CSL_EDMA3_STATIC_DIS, // stat
CSL_EDMA3_SYNC_A, // syncDim
CSL_EDMA3_ADDRMODE_INCR, // dam
CSL_EDMA3_ADDRMODE_INCR); // sam
edma3Config.srcAddr = (uint32)pTcp3IC;
edma3Config.aCntbCnt = CSL_EDMA3_CNT_MAKE(60, 1);
edma3Config.dstAddr = (uint32)&(pTcp3DmaReg->TCP3D_IC_CFG0_P0);
edma3Config.srcDstBidx = CSL_EDMA3_BIDX_MAKE(0, 0);
edma3Config.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0, 0);
edma3Config.cCnt = 1;
edma3Config.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(_inDataLinkOffset, 0);
/
status = CSL_edma3ParamSetup(_hParamTcp3Ic, &edma3Config);
edma3Config.option = CSL_EDMA3_OPT_MAKE(
CSL_EDMA3_ITCCH_DIS, // itcchEn
CSL_EDMA3_ITCCH_DIS, // itcchEn
CSL_EDMA3_TCCH_DIS, // tcchEn
CSL_EDMA3_ITCINT_DIS, // itcintEn
CSL_EDMA3_TCINT_DIS, // tcintEn
0, // tcc
CSL_EDMA3_TCC_NORMAL, // tccMode
CSL_EDMA3_FIFOWIDTH_NONE, // fwid
CSL_EDMA3_STATIC_DIS, // stat
CSL_EDMA3_SYNC_AB, // syncDim
CSL_EDMA3_ADDRMODE_INCR, // dam
CSL_EDMA3_ADDRMODE_INCR); // sam
edma3Config.srcAddr = (uint32)pInData;
edma3Config.aCntbCnt = CSL_EDMA3_CNT_MAKE(infoBitsK>>1, 2);
edma3Config.dstAddr = (uint32)&(pTcp3DmaReg->TCP3D_IC_CFG0_P0) +
CSL_TCP3D_DMA_TCP3D_SYS_P0_OFFSET;
edma3Config.srcDstBidx = CSL_EDMA3_BIDX_MAKE(infoBitsK>>1, 0x1000);
edma3Config.srcDstCidx = CSL_EDMA3_CIDX_MAKE(infoBitsK+4, 0x2000);
edma3Config.cCnt = 3;
edma3Config.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(_dummyLinkOffset, 2);
status = CSL_edma3ParamSetup(_hParamTcp3InData,
&edma3Config);
=================================