index 0b68afa1a342ca1af495e46f5973ea356be0f93d..174e76b143bf391df2fac8bab27199d93f33a2a4 100644 (file)
--- a/pasdk/test_dsp/sap/sap.c
+++ b/pasdk/test_dsp/sap/sap.c
extern EDMA3_DRV_Handle hEdma1;
int gStartError;
-int gIsrCnt;
+int gIsrInputCnt;
+int gIsrOutputCnt;
int gIsrElseCnt;
-int gIsrErrCnt;
+int gIsrInErrCnt;
+int gIsrOutErrCnt;
int gIsrRunCnt;
int gIsrNotRunCnt;
int gisrOutput;
+int gSAPResetIn;
+int gSAPResetOut;
typedef xdc_Short MdInt;
void swapHdmi(Ptr, int);
-#define TEST_MULTICHANNEL
+//#define TEST_MULTICHANNEL
#ifdef TEST_MULTICHANNEL
-#define SAP_UNDER_LEN 4
+#define SAP_UNDER_LEN 8
//#define SAP_UNDER_LEN 1024 // GJ: experiment
#else
#define SAP_UNDER_LEN 1024
#endif
int sap_UNDER[SAP_UNDER_LEN]; // used for underrun
-int sap_OVER = 0; // used for overrun
+int sap_OVER_1LANE = 0; // used for overrun
+int sap_OVER_4LANE[4] = {0,0,0,0}; // used for overrun
+
+#ifdef DEBUG
void DJDBG_SAP_EDMA_dumpParams(int tag_place)
{
- unsigned int *ptrPARAM_BASE = (unsigned int *)0x02704000;
- unsigned int *ptrPARAM0x18 = (unsigned int *)0x02704300; // ((*((EDMA3_CCRL_Regs *) 0x02700000)).PARAMENTRY)[24]
+ //unsigned int *ptrPARAM_BASE = (unsigned int *)0x02704000;
+ //unsigned int *ptrPARAM0x18 = (unsigned int *)0x02704300; // ((*((EDMA3_CCRL_Regs *) 0x02700000)).PARAMENTRY)[24]
unsigned int *ptrPARAM0x19 = (unsigned int *)0x02704320; // ((*((EDMA3_CCRL_Regs *) 0x02700000)).PARAMENTRY)[24]
+ unsigned int *ptrPARAM0x41 = (unsigned int *)0x027048A0; // ((*((EDMA3_CCRL_Regs *) 0x02700000)).PARAMENTRY)[24]
+ unsigned int *ptrPARAM0x42 = (unsigned int *)0x027048C0; // ((*((EDMA3_CCRL_Regs *) 0x02700000)).PARAMENTRY)[24]
+ unsigned int *ptrPARAM0x43 = (unsigned int *)0x027048E0; // ((*((EDMA3_CCRL_Regs *) 0x02700000)).PARAMENTRY)[24]
+ unsigned int *ptrPARAM0x44 = (unsigned int *)0x02704910; // ((*((EDMA3_CCRL_Regs *) 0x02700000)).PARAMENTRY)[24]
+
+ //Log_info5("PARAM0x18a(%d): 0x%x 0x%x 0x%x 0x%x", tag_place, ptrPARAM0x18[0], ptrPARAM0x18[1], ptrPARAM0x18[2], ptrPARAM0x18[3]);
+ //Log_info5("PARAM0x18b(%d): 0x%x 0x%x 0x%x 0x%x", tag_place, ptrPARAM0x18[4], ptrPARAM0x18[5], ptrPARAM0x18[6], ptrPARAM0x18[7]);
+
+ Log_info5("PARAM0x19a(%d): ITCINTEN: 0x%02x, TCINTEN: 0x%02x, TCC: 0x%02x, TCCMODE: %d", tag_place, ((ptrPARAM0x19[0] & 0x200000) >> 21), ((ptrPARAM0x19[0] & 0x100000) >> 20), ((ptrPARAM0x19[0] & 0x3F000) >> 12), ((ptrPARAM0x19[0] & 0x800) >> 11));
+ Log_info5("PARAM0x19b(%d): SRC: 0x%08x, A_B_CNT: 0x%08x, DST: 0x%08x, SRC_DST_BIDX: 0x%08x", tag_place, ptrPARAM0x19[1], ptrPARAM0x19[2], ptrPARAM0x19[3], ptrPARAM0x19[4]);
+ Log_info4("PARAM0x19b(%d): LINK_BCNTRLD: 0x%08x, SRC_DST_CIDX: 0x%08x, CCNT: 0x%08x", tag_place, ptrPARAM0x19[5], ptrPARAM0x19[6], ptrPARAM0x19[7]);
+
+ Log_info5("PARAM0x41a(%d): ITCINTEN: 0x%02x, TCINTEN: 0x%02x, TCC: 0x%02x, TCCMODE: %d", tag_place, ((ptrPARAM0x41[0] & 0x200000) >> 21), ((ptrPARAM0x41[0] & 0x100000) >> 20), ((ptrPARAM0x41[0] & 0x3F000) >> 12), ((ptrPARAM0x41[0] & 0x800) >> 11));
+ Log_info5("PARAM0x41b(%d): SRC: 0x%08x, A_B_CNT: 0x%08x, DST: 0x%08x, SRC_DST_BIDX: 0x%08x", tag_place, ptrPARAM0x41[1], ptrPARAM0x41[2], ptrPARAM0x41[3], ptrPARAM0x41[4]);
+ Log_info4("PARAM0x41b(%d): LINK_BCNTRLD: 0x%08x, SRC_DST_CIDX: 0x%08x, CCNT: 0x%08x", tag_place, ptrPARAM0x41[5], ptrPARAM0x41[6], ptrPARAM0x41[7]);
- Log_info5("PARAM0x18a(%d): 0x%x 0x%x 0x%x 0x%x", tag_place, ptrPARAM0x18[0], ptrPARAM0x18[1], ptrPARAM0x18[2], ptrPARAM0x18[3]);
- Log_info5("PARAM0x18b(%d): 0x%x 0x%x 0x%x 0x%x", tag_place, ptrPARAM0x18[4], ptrPARAM0x18[5], ptrPARAM0x18[6], ptrPARAM0x18[7]);
+ Log_info5("PARAM0x42a(%d): ITCINTEN: 0x%02x, TCINTEN: 0x%02x, TCC: 0x%02x, TCCMODE: %d", tag_place, ((ptrPARAM0x42[0] & 0x200000) >> 21), ((ptrPARAM0x42[0] & 0x100000) >> 20), ((ptrPARAM0x42[0] & 0x3F000) >> 12), ((ptrPARAM0x42[0] & 0x800) >> 11));
+ Log_info5("PARAM0x42b(%d): SRC: 0x%08x, A_B_CNT: 0x%08x, DST: 0x%08x, SRC_DST_BIDX: 0x%08x", tag_place, ptrPARAM0x42[1], ptrPARAM0x42[2], ptrPARAM0x42[3], ptrPARAM0x42[4]);
+ Log_info4("PARAM0x42b(%d): LINK_BCNTRLD: 0x%08x, SRC_DST_CIDX: 0x%08x, CCNT: 0x%08x", tag_place, ptrPARAM0x42[5], ptrPARAM0x42[6], ptrPARAM0x42[7]);
- Log_info5("PARAM0x19a(%d): 0x%x 0x%x 0x%x 0x%x", tag_place, ptrPARAM0x19[0], ptrPARAM0x19[1], ptrPARAM0x19[2], ptrPARAM0x19[3]);
- Log_info5("PARAM0x19b(%d): 0x%x 0x%x 0x%x 0x%x", tag_place, ptrPARAM0x19[4], ptrPARAM0x19[5], ptrPARAM0x19[6], ptrPARAM0x19[7]);
+ Log_info5("PARAM0x43a(%d): ITCINTEN: 0x%02x, TCINTEN: 0x%02x, TCC: 0x%02x, TCCMODE: %d", tag_place, ((ptrPARAM0x43[0] & 0x200000) >> 21), ((ptrPARAM0x43[0] & 0x100000) >> 20), ((ptrPARAM0x43[0] & 0x3F000) >> 12), ((ptrPARAM0x43[0] & 0x800) >> 11));
+ Log_info5("PARAM0x43b(%d): SRC: 0x%08x, A_B_CNT: 0x%08x, DST: 0x%08x, SRC_DST_BIDX: 0x%08x", tag_place, ptrPARAM0x43[1], ptrPARAM0x43[2], ptrPARAM0x43[3], ptrPARAM0x43[4]);
+ Log_info4("PARAM0x43b(%d): LINK_BCNTRLD: 0x%08x, SRC_DST_CIDX: 0x%08x, CCNT: 0x%08x", tag_place, ptrPARAM0x43[5], ptrPARAM0x43[6], ptrPARAM0x43[7]);
+
+ Log_info5("PARAM0x44a(%d): ITCINTEN: 0x%02x, TCINTEN: 0x%02x, TCC: 0x%02x, TCCMODE: %d", tag_place, ((ptrPARAM0x44[0] & 0x200000) >> 21), ((ptrPARAM0x44[0] & 0x100000) >> 20), ((ptrPARAM0x44[0] & 0x3F000) >> 12), ((ptrPARAM0x44[0] & 0x800) >> 11));
+ Log_info5("PARAM0x44b(%d): SRC: 0x%08x, A_B_CNT: 0x%08x, DST: 0x%08x, SRC_DST_BIDX: 0x%08x", tag_place, ptrPARAM0x44[1], ptrPARAM0x44[2], ptrPARAM0x44[3], ptrPARAM0x44[4]);
+ Log_info4("PARAM0x44b(%d): LINK_BCNTRLD: 0x%08x, SRC_DST_CIDX: 0x%08x, CCNT: 0x%08x", tag_place, ptrPARAM0x44[5], ptrPARAM0x44[6], ptrPARAM0x44[7]);
//Log_info1("TCC0: ERR reg %x", *((unsigned int *)0x02760120)); //DJDBG
}
+#endif
// .............................................................................
// notes:
// . add control function to PORT table
Int SAP_shutdown(DEV2_Handle);
Int SAP_start(DEV2_Handle);
Int SAP_config(DEV2_Handle device, const SAP_Params *pParams);
-Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32 childEdma, unsigned int addr, unsigned int size);
+Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32 childEdma, XDAS_UInt32 addr, XDAS_UInt32 size);
Int SAP_EDMA_setupXfer (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32 parentEdma, XDAS_UInt32 childEdma, DEV2_Frame *pFrame);
// .............................................................................
return result;
} // SAP_ctrl
+int gSAPIdleShutdownIn=0;
+int gSAPIdleShutdownOut=0;
+
// -----------------------------------------------------------------------------
Int SAP_idle (DEV2_Handle device, Bool flush)
// reset serial port -- stop generating sync events
result = SAP_PORT_FTABLE_reset (device);
+ if(device->mode == DEV2_OUTPUT)
+ gSAPResetOut++;
+ else
+ gSAPResetIn++;
if (result)
{
//TRACE_VERBOSE((&TR_MOD, "%s.%d: SAP_PORT_FTABLE_reset returned %d.\n", __FUNCTION__, __LINE__, result));
pDevExt->shutDown = 0; // force shutdown to run
result = SAP_FTABLE_shutdown (device);
+ if(device->mode == DEV2_OUTPUT)
+ gSAPIdleShutdownOut++;
+ else
+ gSAPIdleShutdownIn++;
+
if (result)
{
//TRACE_VERBOSE((&TR_MOD, "%s.%d: SAP_FTABLE_shutdown returned %d.\n", __FUNCTION__, __LINE__, result));
// will be serviced and generate an interrupt even before the McASP is enabled.
pDevExt->runState = 1;
pDevExt->shutDown = 0;
- //Log_info0 ("SAP_start runState=1 & ENABLE TRANSFERS");
+ Log_info1 ("SAP: %d, SAP_start runState=1 & ENABLE TRANSFERS", __LINE__);
// enable interrupts and event servicing for this channel
EDMA3_DRV_enableTransfer (hEdma, pDevExt->activeEdma, EDMA3_DRV_TRIG_MODE_EVENT);
} // SAP_start
int gDmaParamsarray[17][3];
-int gDmaParamsidx=0;
+int gDmaParamsidx=0, gSAPSpecialCase=0;
// -----------------------------------------------------------------------------
Int SAP_issue (DEV2_Handle device)
pFrame = Queue_dequeue (device->todevice);
pParam = (SAP_EDMA_Param *) Queue_dequeue (Queue_handle(&pDevExt->paramQue));
- /* if (pFrame->addr == NULL)
- SW_BREAKPOINT; */
if (pParam->hEdmaParam == NULL)
Log_info0("SAP_issue: hEdma value is NULL");
// set misc argument to pParam so get enqueue later
pDevExt->numQueued += 1;
result = SAP_EDMA_setupXfer (device, pParam->hEdmaParam, parentEdma, pDevExt->errorEdma, pFrame);
- //Log_info4("SAP_issue.%d, EDMA_setupXfer: Target EDMA: 0x%x, Parent Edma: 0x%x Error Edma: 0x%x",
- // __LINE__, pParam->hEdma, parentEdma, pDevExt->errorEdma);
+ Log_info4("SAP_issue.%d, EDMA_setupXfer: Target EDMA: 0x%x, Parent Edma: 0x%x Error Edma: 0x%x",
+ __LINE__, pParam->hEdmaParam, parentEdma, pDevExt->errorEdma);
/*if ((device->mode != DEV2_INPUT) && (gDmaParamsidx <=16))
{
// special case enables when not yet started
if (pDevExt->runState == 0) {
+ gSAPSpecialCase++;
result = SAP_FTABLE_start (device);
if (result) {
//SAP_DMA_FTABLE_unlock (device);
- Hwi_enable ();
+ Hwi_restore (key);
return result;
}
}
}
- Log_info3("SAP: Exiting swapHdmi with Frame->Addr: 0x%x, p1->addr: 0x%x, p2->addr: 0x%x ", (MdInt *)Input, p1, p2);
-
- /**p2++ = 0xF872;
- *p2++ = 0x4E1F;
- *p2++ = 0x0016;
- *p2++ = 0xEFF0;
- *p2++ = 0x079E;
- *p2++ = 0x0003;
- *p2++ = 0x8401;
- *p2++ = 0x0101; */
+ Log_info3("SAP: Exiting swapHdmi with Frame->Addr: 0x%x, p1->addr: 0x%x, p2->addr: 0x%x ", (xdc_IArg)Input, p1, p2);
return;
}
Int SAP_reclaim (DEV2_Handle device)
{
SAP_DeviceExtension *pDevExt = (SAP_DeviceExtension *)(device->object);
- Int result, i, oldMask;
#ifdef SAP_CACHE_SUPPORT
DEV2_Frame *pFrame;
#endif
// idle if necessary
if (pDevExt->errorState == PAF_SIO_ERROR_FATAL) {
+ Log_info1("SAP_reclaim: PAF_SIO_ERROR_FATAL, Before Idle for device 0x%x ", device->mode);
DEV2_idle (device, 1);
return SIO2_EBADIO;
}
}
//Log_info1("SAP_reclaim: After SEM Pend for mode: 0x%x", device->mode);
+#if 0
// return error (owner must idle)
if (pDevExt->errorState == PAF_SIO_ERROR_FATAL)
{
//TRACE_TERSE((&TR_MOD, "SAP_reclaim.%d, PAF_SIO_ERROR_FATAL: 0x%x", __LINE__, pDevExt->errorState));
return PAF_SIO_ERROR_FATAL;
}
+#endif
#ifdef SAP_CACHE_SUPPORT
// invalidate CACHE region if input -- use clean since
{
Cache_inv (pFrame->addr, pFrame->size, Cache_Type_ALL, 0);
Cache_wait();
- //note: size here is in # of bytes, so incrementing by 4X32b words ( or 8X16b)
- //for(i=0; i<(pFrame->size)/(4*4); i+=16)
- //{
- // Hwi_disable commented since it used to affect other interrupts
- // max HWI disable duration ~1ms observed
- //oldMask = Hwi_disable ();
- swapHdmi(pFrame->addr, pFrame->size);
- //Hwi_restore(oldMask);
-
- Cache_wb (pFrame->addr, pFrame->size, Cache_Type_ALL, 0);
- Cache_wait();
- //}
+
+ // max HWI disable duration ~1ms observed
+ //unsigned int key = Hwi_disable (); // GJ: Revisit, along with other context protections here.
+ swapHdmi(pFrame->addr, pFrame->size);
+ //Hwi_restore(key);
+
+ Cache_wb (pFrame->addr, pFrame->size, Cache_Type_ALL, 0);
+ Cache_wait();
}
}
/*if ((device->mode == DEV2_OUTPUT) && (pFrame->addr == NULL))
SW_BREAKPOINT; */
+ Log_info1("SAP_reclaim: Exiting with SIO2_OK for device 0x%x ", device->mode);
//TRACE_VERBOSE((&TR_MOD, "SAP_reclaim.%d, exit SIO2_OK", __LINE__));
return SIO2_OK;
} // SAP_reclaim
SAP_DeviceExtension *pDevExt = (SAP_DeviceExtension *)(device->object);
SIO2_Handle stream = (SIO2_Handle) device;
DEV2_Frame *pFrame;
- Int result,i;
+ Int i;
EDMA3_DRV_Handle hEdma;
//TRACE_GEN((&TR_MOD, "SAP_shutdown.%d (0x%x)", __LINE__, device));
// reset counter
pDevExt->numQueued = 0;
+ //DJDBG_SAP_EDMA_dumpParams(1);
// make sure active is linked to error
EDMA3_DRV_linkChannel (hEdma, pDevExt->activeEdma, pDevExt->errorEdma);
// -----------------------------------------------------------------------------
int gSapWatchDogThrottle = 0; //DJDBG
+int gSapWatchDogIn =0;
+int gSapWatchDogOut = 0;
+int gSapWatchDogInSemPost = 0;
+int gSapWatchDogOutSemPost = 0;
+
Void SAP_watchDog (Void)
{
DEV2_Handle device;
// protect context
Task_disable (); // needed since we may call SEM_post
- // Hwi_disable commented since it used to affect other interrupts
- // max HWI disable duration ~4ms observed
//oldMask = Hwi_disable ();
+
//TRACE_VERBOSE((&TR_MOD, "%s.%d: devices loop, numDevices = %d", __FUNCTION__, __LINE__, dapDrv.numDevices));
for (i=0; i < sapDrv.numDevices; i++) {
// set errorState which will force owner thread
// to clean up via SIO_idle()
pDevExt->errorState = PAF_SIO_ERROR_FATAL;
+ if(device->mode == DEV2_INPUT)
+ gSapWatchDogIn++;
+ else
+ gSapWatchDogOut++;
+
//TRACE_TERSE((&TR_MOD, "SAP_watchDog.%d, PAF_SIO_ERROR_FATAL: 0x%x", __LINE__, pDevExt->errorState));
/* if(gSapWatchDogThrottle == 0) //DJDBG
{
if(gSapWatchDogThrottle > 10) gSapWatchDogThrottle = 0; */
// if outstanding pend then post to free owner thead
if (!Semaphore_pend(pDevExt->sync, 0))
- Semaphore_post (pDevExt->sync);
+ {
+ if(device->mode == DEV2_INPUT)
+ gSapWatchDogInSemPost++;
+ else
+ gSapWatchDogOutSemPost++;
+ Semaphore_post (pDevExt->sync);
+ }
}
}
+
// renable interrupts and task manager.
// If we posted to the semaphore then the TSK_enable call will lead to
// an immediate task switch to the associated audio thread.
device = (DEV2_Handle) context;
pDevExt = (SAP_DeviceExtension *)(device->object);
- if (pDevExt->pParams == NULL)
- return SIO2_EINVAL;
+ //if (pDevExt->pParams == NULL)
+ //return SIO2_EINVAL;
if (pDevExt->pParams->sio.moduleNum == 0)
hEdma = hEdma0;
// decrement count
pDevExt->numQueued -= 1;
- gIsrCnt++;
+ //gIsrCnt++;
if (device->mode == 1)
- gisrOutput++;
-
+ gIsrOutputCnt++;
+ else
+ gIsrInputCnt++;
// place frame onto user queue and signal user thread
Queue_enqueue (device->fromdevice, (Ptr) pFrame);
- Log_info2("Before SEM_post for device: 0x%x gIsrOutput: %d", device->mode, gisrOutput);
+ //Log_info2("Before SEM_post for device: 0x%x gIsrOutput: %d", device->mode, gisrOutput);
// signal user thread
Semaphore_post (pDevExt->sync);
#if 0
if (!(opt & EDMA3_DRV_OPT_TCINTEN_SET_MASK (1)))
{
- gIsrErrCnt++;
+ if (device->mode == 1)
+ gIsrOutErrCnt++;
+ else
+ gIsrInErrCnt++;
pDevExt->errorState = PAF_SIO_ERROR_ERRBUF_XFER;
}
@@ -1325,7 +1376,7 @@ Int SAP_EDMA_setupXfer (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
{
Log_info0("pFrame has NULL address?");
}
- SAP_DMA_FTABLE_setupParam (device, targetEdma, childEdma, pFrame->addr, pFrame->size);
+ SAP_DMA_FTABLE_setupParam (device, targetEdma, childEdma, (XDAS_UInt32) pFrame->addr, pFrame->size);
if (parentEdma != EDMA_HINV)
EDMA3_DRV_linkChannel (hEdma, parentEdma, targetEdma);
@@ -1339,7 +1390,7 @@ Int SAP_EDMA_setupXfer (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
// -----------------------------------------------------------------------------
// Configure EDMA3 parameter entry
-Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32 childEdma, unsigned int addr, unsigned int size)
+Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32 childEdma, XDAS_UInt32 addr, XDAS_UInt32 size)
{
SAP_DeviceExtension *pDevExt = (SAP_DeviceExtension *)device->object;
EDMA3_DRV_Handle hEdma;
@@ -1353,7 +1404,7 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
else if (pDevExt->pParams->sio.moduleNum == 1 || pDevExt->pParams->sio.moduleNum == 2)
hEdma = hEdma1;
MCASP_Handle hPort = sapMcaspDrv.hPort[pDevExt->pParams->sio.moduleNum];
- volatile Uint32 *base = (volatile Uint32 *)(hPort->baseAddr);
+ // volatile Uint32 *base = (volatile Uint32 *)(hPort->baseAddr);
//Log_info3("%s.%d: Entered SAP_EDMA_setupParam for Target: 0x%x.\n", (xdc_IArg)__FUNCTION__, __LINE__, targetEdma);
@@ -1376,7 +1427,7 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
}
else {
//edmaConfig.opt |= EDMA3_DRV_OPT_SAM_SET_MASK (EDMA3_DRV_ADDR_MODE_FIFO); //DJDBG!!!
- //edmaConfig.opt |= 1;
+ edmaConfig.opt |= 1;
}
// if regular transfer then enable interrupt with tcc code
@@ -1403,38 +1454,39 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
edmaConfig.destAddr = addr;
edmaConfig.destCIdx = pDevExt->edmaWordSize * pDevExt->numSers ;
if(pDevExt->edmaWordSize == 2)
- edmaConfig.cCnt= (size)/((edmaConfig.aCnt * edmaConfig.bCnt)/2); // GJ: Account for additional 2-bytes.
+ edmaConfig.cCnt= (size)/((edmaConfig.aCnt * edmaConfig.bCnt)/2);
}
else {
//if(pDevExt->edmaWordSize == 2)
//edmaConfig.srcAddr= (unsigned int)edmaConfig.srcAddr+ 2;
edmaConfig.destBIdx = 0;
- edmaConfig.destAddr = (unsigned int) &sap_OVER;
+ edmaConfig.destAddr = (unsigned int) &sap_OVER_4LANE;
+ edmaConfig.cCnt = 1;
}
}
else {
edmaConfig.destBIdx = 0;
+ edmaConfig.srcBIdx = pDevExt->edmaWordSize;
edmaConfig.destAddr = (unsigned int) (hPort->xbufAddr);
-
if (addr) {
- edmaConfig.srcBIdx = pDevExt->edmaWordSize;
edmaConfig.srcCIdx = pDevExt->edmaWordSize * pDevExt->numSers ;
edmaConfig.srcAddr = addr;
- Edma3_CacheFlush ((unsigned int) addr, (size+3)/4);
+ //Edma3_CacheFlush ((unsigned int) addr, (size+3)/4);
}
else {
edmaConfig.srcBIdx = 0;
edmaConfig.srcAddr = (unsigned int) &sap_UNDER[0];
#if 1
//edmaConfig.cCnt = (SAP_UNDER_LEN * sizeof(int))/(edmaConfig.aCnt * edmaConfig.bCnt); //DJDBG
- edmaConfig.cCnt = 512; //DJDBG, if underrun have frame of silence
+ edmaConfig.cCnt = SAP_UNDER_LEN; //DJDBG, if underrun have frame of silence
#endif
}
}
edmaConfig.srcAddr = (unsigned int) getGlobalAddr(edmaConfig.srcAddr);
edmaConfig.destAddr = (unsigned int) getGlobalAddr(edmaConfig.destAddr);
- //Log_info3("SAP: Inside SAP_EDMA_setupParam with targetEdma = 0x%x linked to childEdma = 0x%x & dest-addr: 0x%x", targetEdma, childEdma, edmaConfig.destAddr);
+ Log_info5("SAP: Inside SAP_EDMA_setupParam with size=0x%x, targetEdma = 0x%x, CCNT = %d with dest-addr: 0x%x and OPT=0x%x", size, targetEdma, edmaConfig.cCnt, edmaConfig.destAddr, edmaConfig.opt);
+ Log_info5("SAP: Inside SAP_EDMA_setupParam with aCnt=0x%x, bCnt = 0x%x, destBIdx = 0x%x destCIdx: 0x%x and bCntReload=0x%x", edmaConfig.aCnt, edmaConfig.bCnt, edmaConfig.destBIdx, edmaConfig.destCIdx, edmaConfig.bCntReload);
EDMA3_DRV_setPaRAM (hEdma, targetEdma, &edmaConfig);