index 899fb976ecf538897d86909ab6ef003c66c7c081..3ac2e5b175ed4a5801818bda00f63b2b107b1e2b 100644 (file)
--- a/pasdk/test_dsp/sap/sap.c
+++ b/pasdk/test_dsp/sap/sap.c
//
#ifndef SAP_CACHE_SUPPORT
- // if you rebuild dap.c in your project without this defined,
+ // if you rebuild sap.c in your project without this defined,
// the result is quite hard to find: Occasional glitches in the sound.
#define SAP_CACHE_SUPPORT // typically defined in the project
#endif
// This works to set a breakpoint
#define SW_BREAKPOINT asm( " SWBP 0" );
-/* Software Breakpoint to Code Composer */
-// SW_BREAKPOINT;
// global allocated in bios_edma3_drv_sample_init.c
extern EDMA3_DRV_Handle hEdma0;
extern EDMA3_DRV_Handle hEdma1;
+// global variables for debug-assist
int gStartError;
int gIsrInputCnt;
int gIsrOutputCnt;
Log_info5("PARAM0x4Ab(%d): SRC: 0x%08x, A_B_CNT: 0x%08x, DST: 0x%08x, SRC_DST_BIDX: 0x%08x", tag_place, ptrPARAM0x4A[1], ptrPARAM0x4A[2], ptrPARAM0x4A[3], ptrPARAM0x4A[4]);
Log_info4("PARAM0x4Ac(%d): LINK_BCNTRLD: 0x%08x, SRC_DST_CIDX: 0x%08x, CCNT: 0x%08x", tag_place, ptrPARAM0x4A[5], ptrPARAM0x4A[6], ptrPARAM0x4A[7]);
- Log_info1("TCC0: ERR reg %x", *((unsigned int *)0x02760120)); //DJDBG
+ Log_info1("TCC0: ERR reg %x", *((unsigned int *)0x02760120));
}
#endif
// .............................................................................
// needed since SAP_watchDog is called before SAP_init
Int SAP_initialized = 0;
-//Int SAP_close(DEV2_Handle);
Int SAP_ctrl(DEV2_Handle, Uns, Arg);
Int SAP_idle(DEV2_Handle, Bool);
Int SAP_issue(DEV2_Handle);
Int SAP_open(DEV2_Handle, String);
void SAP_isrCallback (Uint32 tcc, EDMA3_RM_TccStatus status, Ptr context);
-//Bool SAP_ready(DEV2_Handle, SEM_Handle);
Int SAP_reclaim(DEV2_Handle);
Int SAP_shutdown(DEV2_Handle);
Int SAP_start(DEV2_Handle);
Log_info0 ("SAP PAF_SIO_CONTROL_IDLE_WITH_CLOCKS; PAF_SIO_ERROR_IDLE_STAGE1");
pDevExt->errorState = PAF_SIO_ERROR_IDLE_STAGE1;
-#if 1
- //DJDBG, if below enableTransfer() is commented, input side continuous working.
- if (pDevExt->activeEdma != EDMA_HINV) {
- //EDMA3_DRV_disableTransfer (hEdma0, pDevExt->activeEdma, EDMA3_DRV_TRIG_MODE_EVENT);
- //if(*((unsigned int *)0x02701000) & 0x01000000) *((unsigned int *)0x02701008) = 0x01000000; //Clear pending even in bit 24! //DJDBG
- EDMA3_DRV_enableTransfer (hEdma, pDevExt->activeEdma, EDMA3_DRV_TRIG_MODE_EVENT);
- }
-#endif
+ if (pDevExt->activeEdma != EDMA_HINV)
+ EDMA3_DRV_enableTransfer (hEdma, pDevExt->activeEdma, EDMA3_DRV_TRIG_MODE_EVENT);
+
//TRACE_GEN((&TR_MOD, "SAP_ctrl.%d: (0x%x) errorState = PAF_SIO_ERROR_IDLE_STAGE1 0x%x.", __LINE__, device, PAF_SIO_ERROR_IDLE_STAGE1));
break;
int result;
EDMA3_DRV_Handle hEdma;
- Log_info2("SAP_start.%d (0x%x)", __LINE__, device);
+ Log_info2("SAP_start.%d (0x%x)", __LINE__, (xdc_IArg)device);
// Assume todevice queue is not empty -- how else could we be here?
pFrame = (DEV2_Frame *) Queue_get (device->todevice);
__LINE__, pParam->hEdmaParam, parentEdma, pDevExt->errorEdma);
}
-
- /*if ((device->mode != DEV2_INPUT) && (gDmaParamsidx <=16))
- {
- gDmaParamsarray[gDmaParamsidx][0] = pParam->hEdma;
- gDmaParamsarray[gDmaParamsidx][1] = parentEdma;
- gDmaParamsarray[gDmaParamsidx++][2] = gisrOutput;
- } */
-
if ((pDevExt->errorState == PAF_SIO_ERROR_IDLE_STAGE1) && (device->mode == DEV2_OUTPUT))
pDevExt->errorState = PAF_SIO_ERROR_NONE;
pDevExt->shutDown = 0;
- //if (device->mode == DEV2_OUTPUT)
- //SAP_EDMA_dumpParams(5);
-
// 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_restore (key);
return result;
}
}
- Hwi_restore (key); //DJDBG
+ Hwi_restore (key);
return result;
} // SAP_issue
}
- Log_info3("SAP: Exiting swapHdmi with Frame->Addr: 0x%x, p1->addr: 0x%x, p2->addr: 0x%x ", (xdc_IArg)Input, p1, p2);
+ Log_info3("SAP: Exiting swapHdmi with Frame->Addr: 0x%x, p1->addr: 0x%x, p2->addr: 0x%x ", (xdc_IArg)Input, (xdc_IArg)p1, (xdc_IArg)p2);
return;
}
return SIO2_EBADIO;
}
- // 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: Before SEM Pend for mode: 0x%x", device->mode);
+ Log_info1("SAP_reclaim: Before SEM Pend for mode: 0x%x", device->mode);
// wait for ISR to signal block completion
//TRACE_VERBOSE((&TR_MOD, "SAP_reclaim.%d wait for ISR to signal block completion", __LINE__));
}
Log_info1("SAP_reclaim: After SEM Pend for mode: 0x%x", device->mode);
-#if 1
// return error (owner must idle)
if (pDevExt->errorState == PAF_SIO_ERROR_FATAL)
{
Log_info2("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
// Dont clean if was for fill.
// since pend returned we know that head of fromdevice is valid
pFrame = Queue_head (device->fromdevice);
- Log_info2("SAP: Inside SAP_Reclaim with From Device Frame->Addr: 0x%x and Frame->Size: %d", pFrame->addr, pFrame->size);
+ Log_info2("SAP: Inside SAP_Reclaim with From Device Frame->Addr: 0x%x and Frame->Size: %d", (xdc_IArg)pFrame->addr, pFrame->size);
if ((device->mode == DEV2_INPUT) && (pFrame->addr != NULL))
{
if(pDevExt->edmaWordSize == 2 && pDevExt->numSers == 4)
EDMA3_DRV_Result edmaResult;
Uint32 reqTcc;
EDMA3_DRV_Handle hEdma;
- Log_info2("SAP_config.%d (0x%x)", __LINE__, device);
+ Log_info2("SAP_config.%d (0x%x)", __LINE__, (xdc_IArg)device);
// cannot configure if transfer started
if (pDevExt->runState == 1)
pDevExt->shutDown = 1;
pDevExt->numParamSetup = 0;
-
- /*result = SAP_DMA_FTABLE_unlock (device);
- if (result)
- {
- //TRACE_TERSE((&TR_MOD, "%s.%d: SAP_DMA_FTABLE_unlock returned %d.\n", __FUNCTION__, __LINE__, result));
- return result;
- } */
return SIO2_OK;
} // SAP_shutdown
// -----------------------------------------------------------------------------
-int gSapWatchDogThrottle = 0; //DJDBG
+int gSapWatchDogThrottle = 0;
int gSapWatchDogIn =0;
int gSapWatchDogOut = 0;
int gSapWatchDogInSemPost = 0;
// do nothing if SAP_init not yet called
if (!SAP_initialized)
{
- Log_info2("%s.%d: SAP_init not yet called.\n", __FUNCTION__, __LINE__);
+ Log_info2("%s.%d: SAP_init not yet called.\n", (xdc_IArg)__FUNCTION__, __LINE__);
return;
}
if(device->mode == DEV2_INPUT)
gSapWatchDogIn++;
else
- {
- //if (gSapWatchDogOut == 0)
- //SAP_EDMA_dumpParams(1);
gSapWatchDogOut++;
- }
//TRACE_TERSE((&TR_MOD, "SAP_watchDog.%d, PAF_SIO_ERROR_FATAL: 0x%x", __LINE__, pDevExt->errorState));
- /* if(gSapWatchDogThrottle == 0) //DJDBG
- {
- Log_info3("SAP_watchDog.%d (0x%x); THROTTLED result = 0x%x", __LINE__, device, result);
- }
- gSapWatchDogThrottle ++;
- if(gSapWatchDogThrottle > 10) gSapWatchDogThrottle = 0; */
+
// if outstanding pend then post to free owner thead
if (!Semaphore_pend(pDevExt->sync, 0))
{
//Log_info2("Before SEM_post for device: 0x%x gIsrOutput: %d", device->mode, gisrOutput);
// signal user thread
Semaphore_post (pDevExt->sync);
-#if 0
- if(gIsrCnt > 10) { //DJDBG
- Log_info1("SAP isrCallback enough interrupts! %d", gIsrCnt);
-
- }
-#endif
}
else
gIsrElseCnt++;
@@ -1439,29 +1388,29 @@ Int SAP_EDMA_setupXfer (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
// TODO: shouldn't this just be tcc interrupt disable?
// at least until linkage phase...
- unsigned int key = Hwi_disable (); //DJDBG
+ unsigned int key = Hwi_disable ();
if(targetEdma == NULL)
{
Log_info0("targetEdma is NULL");
}
// configure transfer
- if(pFrame->addr == NULL) //DJDBG
+ if(pFrame->addr == NULL)
{
Log_info0("pFrame has NULL address?");
}
SAP_DMA_FTABLE_setupParam (device, targetEdma, childEdma, (XDAS_UInt32) pFrame->addr, pFrame->size);
if (device->mode == DEV2_OUTPUT)
- Log_info4("SAP: Inside SAP_EDMA_setupXfer with childEdma=0x%x & targetEdma = 0x%x; pFrame->addr = 0x%x, pFrame->size=0x%x", childEdma, targetEdma, pFrame->addr, pFrame->size);
+ Log_info4("SAP: Inside SAP_EDMA_setupXfer with childEdma=0x%x & targetEdma = 0x%x; pFrame->addr = 0x%x, pFrame->size=0x%x", childEdma, targetEdma, (xdc_IArg)pFrame->addr, pFrame->size);
if (parentEdma != EDMA_HINV)
EDMA3_DRV_linkChannel (hEdma, parentEdma, targetEdma);
if (device->mode == DEV2_OUTPUT)
- Log_info3("SAP: Inside SAP_EDMA_setupXfer linked targetEdma = 0x%x with parentEdma=0x%x on Edma=0x%x", targetEdma, parentEdma, hEdma);
+ Log_info3("SAP: Inside SAP_EDMA_setupXfer linked targetEdma = 0x%x with parentEdma=0x%x on Edma=0x%x", targetEdma, parentEdma, (xdc_IArg)hEdma);
- Hwi_restore (key); //DJDBG
+ Hwi_restore (key);
return SIO2_OK;
} // SAP_setupXfer
@@ -1488,7 +1437,7 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
//Log_info3("%s.%d: Entered SAP_EDMA_setupParam for Target: 0x%x.\n", (xdc_IArg)__FUNCTION__, __LINE__, targetEdma);
// Init opt parameter to 0 which, without being overriden, configures as:
- // A synchronized transfer (no FIFO mode on src or dst)
+ // AB synchronized transfer
// no chaining or intermediate interrupts
// param is not static
// normal completion
@@ -1499,15 +1448,11 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
edmaConfig.destCIdx = 0;
edmaConfig.srcCIdx = 0;
- edmaConfig.opt |= EDMA3_DRV_OPT_SYNCDIM_SET_MASK (EDMA3_DRV_SYNC_AB); //DJDBG!
- if (device->mode == DEV2_OUTPUT) {
- //edmaConfig.opt |= EDMA3_DRV_OPT_DAM_SET_MASK (EDMA3_DRV_ADDR_MODE_FIFO); //DJDBG!!!
- edmaConfig.opt |= 2;
- }
- else {
- //edmaConfig.opt |= EDMA3_DRV_OPT_SAM_SET_MASK (EDMA3_DRV_ADDR_MODE_FIFO); //DJDBG!!!
- edmaConfig.opt |= 1;
- }
+ edmaConfig.opt |= EDMA3_DRV_OPT_SYNCDIM_SET_MASK (EDMA3_DRV_SYNC_AB);
+ if (device->mode == DEV2_OUTPUT)
+ edmaConfig.opt |= 2; //DAM=CONST addr mode
+ else
+ edmaConfig.opt |= 1; //SAM=CONST addr mode
// if regular transfer then enable interrupt with tcc code
if (targetEdma != pDevExt->errorEdma) {
@@ -1536,8 +1481,6 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
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_4LANE;
edmaConfig.cCnt = 1;
@@ -1550,15 +1493,10 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
if (addr) {
edmaConfig.srcCIdx = pDevExt->edmaWordSize * pDevExt->numSers ;
edmaConfig.srcAddr = addr;
- //Edma3_CacheFlush ((unsigned int) addr, (size+3)/4);
}
else {
edmaConfig.srcBIdx = 0;
edmaConfig.srcAddr = (unsigned int) &sap_UNDER[0];
-#if 0
- //edmaConfig.cCnt = (SAP_UNDER_LEN * sizeof(int))/(edmaConfig.aCnt * edmaConfig.bCnt); //DJDBG
- edmaConfig.cCnt = SAP_UNDER_LEN; //DJDBG, if underrun have frame of silence
-#endif
}
}
edmaConfig.srcAddr = (unsigned int) getGlobalAddr(edmaConfig.srcAddr);
@@ -1572,7 +1510,7 @@ Int SAP_EDMA_setupParam (DEV2_Handle device, XDAS_UInt32 targetEdma, XDAS_UInt32
if (device->mode == DEV2_OUTPUT) {
Log_info5("SAP: Inside SAP_EDMA_setupParam: 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: aCnt=0x%x, bCnt = 0x%x; linked targetEdma = 0x%x with childEdma=0x%x on Edma=0x%x", edmaConfig.aCnt, edmaConfig.bCnt, targetEdma, childEdma, hEdma );
+ Log_info5("SAP: Inside SAP_EDMA_setupParam: aCnt=0x%x, bCnt = 0x%x; linked targetEdma = 0x%x with childEdma=0x%x on Edma=0x%x", edmaConfig.aCnt, edmaConfig.bCnt, targetEdma, childEdma, (xdc_IArg)hEdma );
}
return SIO2_OK;