summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 020c3ad)
raw | patch | inline | side by side (parent: 020c3ad)
author | Don Dominic <a0486429@ti.com> | |
Fri, 14 Aug 2020 07:33:02 +0000 (13:03 +0530) | ||
committer | Sivaraj R <sivaraj@ti.com> | |
Fri, 14 Aug 2020 10:13:20 +0000 (05:13 -0500) |
- Always Register Teardwon Event
- Teardown Callback function to dequeue channel teardwon response from tdCqRing
- This is applicable only for Normal Ring Accelerator. (LCDMA Ring Accelrator dosent support Teardown Response)
Signed-off-by: Don Dominic <a0486429@ti.com>
- Teardown Callback function to dequeue channel teardwon response from tdCqRing
- This is applicable only for Normal Ring Accelerator. (LCDMA Ring Accelrator dosent support Teardown Response)
Signed-off-by: Don Dominic <a0486429@ti.com>
diff --git a/packages/ti/drv/udma/examples/udma_memcpy_test/udma_memcpy_test.c b/packages/ti/drv/udma/examples/udma_memcpy_test/udma_memcpy_test.c
index b95a2fc18f060ff3cd91815db71ce651de3e5c56..37298313bdc83fc905381e51170220549ed95d8d 100644 (file)
static void App_udmaEventDmaCb(Udma_EventHandle eventHandle,
uint32_t eventType,
void *appData);
+#endif
#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
static void App_udmaEventTdCb(Udma_EventHandle eventHandle,
uint32_t eventType,
void *appData);
#endif
-#endif
static int32_t App_init(Udma_DrvHandle drvHandle);
static int32_t App_deinit(Udma_DrvHandle drvHandle);
struct Udma_ChObj gUdmaChObj;
#if defined (UDMA_TEST_INTR)
struct Udma_EventObj gUdmaCqEventObj;
+#endif
#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
struct Udma_EventObj gUdmaTdCqEventObj;
#endif
-#endif
/*
* UDMA Memories
return;
}
-
+#endif
#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
static void App_udmaEventTdCb(Udma_EventHandle eventHandle,
uint32_t eventType,
return;
}
#endif
-#endif
static int32_t App_init(Udma_DrvHandle drvHandle)
{
Udma_ChPrms chPrms;
Udma_ChTxPrms txPrms;
Udma_ChRxPrms rxPrms;
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ Udma_EventHandle tdCqEventHandle;
+ Udma_EventPrms tdCqEventPrms;
+#endif
#if defined (UDMA_TEST_INTR)
- Udma_EventHandle eventHandle;
- Udma_EventPrms eventPrms;
+ Udma_EventHandle cqEventHandle;
+ Udma_EventPrms cqEventPrms;
SemaphoreP_Params semPrms;
SemaphoreP_Params_init(&semPrms);
if(UDMA_SOK == retVal)
{
/* Register ring completion callback */
- eventHandle = &gUdmaCqEventObj;
- UdmaEventPrms_init(&eventPrms);
- eventPrms.eventType = UDMA_EVENT_TYPE_DMA_COMPLETION;
- eventPrms.eventMode = UDMA_EVENT_MODE_SHARED;
- eventPrms.chHandle = chHandle;
- eventPrms.masterEventHandle = Udma_eventGetGlobalHandle(drvHandle);
- eventPrms.eventCb = &App_udmaEventDmaCb;
- retVal = Udma_eventRegister(drvHandle, eventHandle, &eventPrms);
+ cqEventHandle = &gUdmaCqEventObj;
+ UdmaEventPrms_init(&cqEventPrms);
+ cqEventPrms.eventType = UDMA_EVENT_TYPE_DMA_COMPLETION;
+ cqEventPrms.eventMode = UDMA_EVENT_MODE_SHARED;
+ cqEventPrms.chHandle = chHandle;
+ cqEventPrms.masterEventHandle = Udma_eventGetGlobalHandle(drvHandle);
+ cqEventPrms.eventCb = &App_udmaEventDmaCb;
+ retVal = Udma_eventRegister(drvHandle, cqEventHandle, &cqEventPrms);
if(UDMA_SOK != retVal)
{
App_print("[Error] UDMA CQ event register failed!!\n");
}
}
-
+#endif
#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
if(UDMA_SOK == retVal)
{
/* Register teardown ring completion callback */
- eventHandle = &gUdmaTdCqEventObj;
- UdmaEventPrms_init(&eventPrms);
- eventPrms.eventType = UDMA_EVENT_TYPE_TEARDOWN_PACKET;
- eventPrms.eventMode = UDMA_EVENT_MODE_SHARED;
- eventPrms.chHandle = chHandle;
- eventPrms.masterEventHandle = Udma_eventGetGlobalHandle(drvHandle);
- eventPrms.eventCb = &App_udmaEventTdCb;
- retVal = Udma_eventRegister(drvHandle, eventHandle, &eventPrms);
+ tdCqEventHandle = &gUdmaTdCqEventObj;
+ UdmaEventPrms_init(&tdCqEventPrms);
+ tdCqEventPrms.eventType = UDMA_EVENT_TYPE_TEARDOWN_PACKET;
+ tdCqEventPrms.eventMode = UDMA_EVENT_MODE_SHARED;
+ tdCqEventPrms.chHandle = chHandle;
+ tdCqEventPrms.masterEventHandle = Udma_eventGetGlobalHandle(drvHandle);
+ tdCqEventPrms.eventCb = &App_udmaEventTdCb;
+ retVal = Udma_eventRegister(drvHandle, tdCqEventHandle, &tdCqEventPrms);
if(UDMA_SOK != retVal)
{
App_print("[Error] UDMA Teardown CQ event register failed!!\n");
}
}
-#endif
#endif
if(UDMA_SOK == retVal)
int32_t retVal, tempRetVal;
uint64_t pDesc;
#if defined (UDMA_TEST_INTR)
- Udma_EventHandle eventHandle;
+ Udma_EventHandle cqEventHandle;
+#endif
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ Udma_EventHandle tdCqEventHandle;
#endif
retVal = Udma_chDisable(chHandle, UDMA_DEFAULT_CH_DISABLE_TIMEOUT);
App_print("[Error] UDMA channel disable failed!!\n");
}
-#if defined (UDMA_TEST_INTR)
/* Unregister all events */
-#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
- eventHandle = &gUdmaTdCqEventObj;
- retVal += Udma_eventUnRegister(eventHandle);
+#if defined (UDMA_TEST_INTR)
+ cqEventHandle = &gUdmaCqEventObj;
+ retVal += Udma_eventUnRegister(cqEventHandle);
+ if(UDMA_SOK != retVal)
+ {
+ App_print("[Error] UDMA event unregister failed!!\n");
+ }
#endif
- eventHandle = &gUdmaCqEventObj;
- retVal += Udma_eventUnRegister(eventHandle);
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ tdCqEventHandle = &gUdmaTdCqEventObj;
+ retVal += Udma_eventUnRegister(tdCqEventHandle);
if(UDMA_SOK != retVal)
{
App_print("[Error] UDMA event unregister failed!!\n");
diff --git a/packages/ti/drv/udma/examples/udma_ospi_flash_test/udma_ospi_flash_test.c b/packages/ti/drv/udma/examples/udma_ospi_flash_test/udma_ospi_flash_test.c
index 5cf61b11295df56333e6f4008e753ffbb5c592e8..b1931132294d8a281c20bc916539b9e36b16a1ef 100644 (file)
struct Udma_ChObj chObj;
App_UdmaTrObj appTrObj;
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ struct Udma_EventObj tdCqEventObj;
+ Udma_EventHandle tdCqEventHandle;
+ Udma_EventPrms tdCqEventPrms;
+#endif
+
Udma_ChHandle chHandle;
Udma_DrvHandle drvHandle;
static int32_t App_udmaOspiFlashWrite(App_UdmaObj *appObj) __attribute__((section(".udma_critical_fxns")));
static int32_t App_udmaOspiFlashRead(App_UdmaObj *appObj) __attribute__((section(".udma_critical_fxns")));
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+static void App_udmaEventTdCb(Udma_EventHandle eventHandle,
+ uint32_t eventType,
+ void *appData);
+#endif
+
static int32_t App_init(App_UdmaObj *appObj);
static int32_t App_deinit(App_UdmaObj *appObj);
@@ -337,6 +349,8 @@ static uint8_t gUdmaTestRxBuf[UDMA_TEST_APP_BUF_SIZE_ALIGN] __attribute__((align
static uint8_t * gUdmaTestOspiFlashDataAddr = (uint8_t *)(OSPI_FLASH_DATA_BASE_ADDR);
/* Global test pass/fail flag */
+static volatile int32_t gUdmaTestResult = UDMA_SOK;
+/* Global App pass/fail flag */
static volatile int32_t gUdmaAppResult = UDMA_SOK;
/* No.of ticks taken to do a GTC Reg Read operation */
appObj->appTestObj = *test;
appObj->totalNumBytes = test->numBytes * UDMA_TEST_XFER_CNT;
retVal = test->testFunc();
- if(UDMA_SOK == retVal)
+ if((UDMA_SOK == retVal) && (UDMA_SOK == gUdmaTestResult))
{
App_print(test->testDesc);
App_print(" have passed\r\n");
{
App_print(test->testDesc);
App_print(" have failed\r\n");
- break;
+ gUdmaTestResult = UDMA_SOK;
+ gUdmaAppResult = UDMA_EFAIL;
}
}
- if(UDMA_SOK != retVal)
+ if(UDMA_SOK != gUdmaAppResult)
{
App_print("\n Some tests have failed. \n");
}
App_print("\n [Error] UDMA App deinit failed!!\n");
}
- return (0);
+ return (retVal);
}
static int32_t App_ospiFlashTest(App_UdmaObj *appObj)
return (retVal);
}
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+static void App_udmaEventTdCb(Udma_EventHandle eventHandle,
+ uint32_t eventType,
+ void *appData)
+{
+ int32_t retVal;
+ CSL_UdmapTdResponse tdResp;
+ App_UdmaChObj *appChObj = (App_UdmaChObj *) appData;
+
+ if(appChObj != NULL)
+ {
+ if(UDMA_EVENT_TYPE_TEARDOWN_PACKET == eventType)
+ {
+ /* Response received in Teardown completion queue */
+ retVal = Udma_chDequeueTdResponse(appChObj->chHandle, &tdResp);
+ if(UDMA_SOK != retVal)
+ {
+ /* [Error] No TD response after callback!! */
+ gUdmaTestResult = UDMA_EFAIL;
+ }
+ }
+ else
+ {
+ gUdmaTestResult = UDMA_EFAIL;
+ }
+ }
+ else
+ {
+ gUdmaTestResult = UDMA_EFAIL;
+ }
+
+ return;
+}
+#endif
+
static int32_t App_init(App_UdmaObj *appObj)
{
int32_t retVal;
appChObj->drvHandle = drvHandle;
appChObj->txRingMem = &gTxRingMem[0U];
#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ appChObj->tdCqEventHandle = NULL;
appChObj->txCompRingMem = &gTxCompRingMem[0U];
appChObj->txTdCompRingMem = &gTxTdCompRingMem[0U];
#endif
}
}
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ if(UDMA_SOK == retVal)
+ {
+ /* Register teardown ring completion callback */
+ eventHandle = &appChObj->tdCqEventObj;
+ UdmaEventPrms_init(&appChObj->tdCqEventPrms);
+ appChObj->tdCqEventPrms.eventType = UDMA_EVENT_TYPE_TEARDOWN_PACKET;
+ appChObj->tdCqEventPrms.eventMode = UDMA_EVENT_MODE_SHARED;
+ appChObj->tdCqEventPrms.chHandle = chHandle;
+ appChObj->tdCqEventPrms.masterEventHandle = Udma_eventGetGlobalHandle(drvHandle);
+ appChObj->tdCqEventPrms.eventCb = &App_udmaEventTdCb;
+ appChObj->tdCqEventPrms.appData = appChObj;
+ retVal = Udma_eventRegister(drvHandle, eventHandle, &appChObj->tdCqEventPrms);
+ if(UDMA_SOK != retVal)
+ {
+ App_print("[Error] UDMA Teardown CQ event register failed!!\n");
+ }
+ else
+ {
+ appChObj->tdCqEventHandle = eventHandle;
+ }
+ }
+#endif
+
if(UDMA_SOK == retVal)
{
/* Channel enable */
}
appTrObj->trEventHandle = NULL;
}
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ if(NULL != appChObj->tdCqEventHandle)
+ {
+ retVal += Udma_eventUnRegister(appChObj->tdCqEventHandle);
+ if(UDMA_SOK != retVal)
+ {
+ App_print("[Error] UDMA event unregister failed!!\n");
+ }
+ appChObj->tdCqEventHandle = NULL;
+ }
+#endif
retVal += Udma_chClose(chHandle);
if(UDMA_SOK != retVal)
diff --git a/packages/ti/drv/udma/examples/udma_sw_trigger_test/udma_sw_trigger_test.c b/packages/ti/drv/udma/examples/udma_sw_trigger_test/udma_sw_trigger_test.c
index 24b5a56da31f29a3921b8e37fbbdae51a610fc11..c492c4b7d145794a1b36b10c751c705a77a846a9 100644 (file)
int32_t chIdx;
struct Udma_ChObj chObj;
struct Udma_EventObj trEventObj;
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ struct Udma_EventObj tdCqEventObj;
+#endif
Udma_ChHandle chHandle;
Udma_EventHandle trEventHandle;
Udma_EventPrms trEventPrms;
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ Udma_EventHandle tdCqEventHandle;
+ Udma_EventPrms tdCqEventPrms;
+#endif
uint32_t trigger;
/**< Global0 or Global 1 Trigger - refer \ref CSL_UdmapTrFlagsTrigger. */
uint32_t eventType,
void *appData);
#endif
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+static void App_udmaEventTdCb(Udma_EventHandle eventHandle,
+ uint32_t eventType,
+ void *appData);
+#endif
static int32_t App_init(App_UdmaObj *appObj);
static int32_t App_deinit(App_UdmaObj *appObj);
}
#endif
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+static void App_udmaEventTdCb(Udma_EventHandle eventHandle,
+ uint32_t eventType,
+ void *appData)
+{
+ int32_t retVal;
+ CSL_UdmapTdResponse tdResp;
+ App_UdmaChObj *appChObj = (App_UdmaChObj *) appData;
+
+ if(appChObj != NULL)
+ {
+ if(UDMA_EVENT_TYPE_TEARDOWN_PACKET == eventType)
+ {
+ /* Response received in Teardown completion queue */
+ retVal = Udma_chDequeueTdResponse(appChObj->chHandle, &tdResp);
+ if(UDMA_SOK != retVal)
+ {
+ /* [Error] No TD response after callback!! */
+ gUdmaAppResult = UDMA_EFAIL;
+ }
+ }
+ else
+ {
+ gUdmaAppResult = UDMA_EFAIL;
+ }
+ }
+ else
+ {
+ gUdmaAppResult = UDMA_EFAIL;
+ }
+
+ return;
+}
+#endif
+
static int32_t App_init(App_UdmaObj *appObj)
{
int32_t retVal;
appChObj->eolType = CSL_UDMAP_TR_FLAGS_EOL_ICNT0_ICNT1;
appChObj->txRingMem = &gTxRingMem[chIdx][0U];
#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ appChObj->tdCqEventHandle = NULL;
appChObj->txCompRingMem = &gTxCompRingMem[chIdx][0U];
appChObj->txTdCompRingMem = &gTxTdCompRingMem[chIdx][0U];
#endif
}
}
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ if(UDMA_SOK == retVal)
+ {
+ /* Register teardown ring completion callback */
+ eventHandle = &appChObj->tdCqEventObj;
+ UdmaEventPrms_init(&appChObj->tdCqEventPrms);
+ appChObj->tdCqEventPrms.eventType = UDMA_EVENT_TYPE_TEARDOWN_PACKET;
+ appChObj->tdCqEventPrms.eventMode = UDMA_EVENT_MODE_SHARED;
+ appChObj->tdCqEventPrms.chHandle = chHandle;
+ appChObj->tdCqEventPrms.masterEventHandle = Udma_eventGetGlobalHandle(drvHandle);
+ appChObj->tdCqEventPrms.eventCb = &App_udmaEventTdCb;
+ appChObj->tdCqEventPrms.appData = appChObj;
+ retVal = Udma_eventRegister(drvHandle, eventHandle, &appChObj->tdCqEventPrms);
+ if(UDMA_SOK != retVal)
+ {
+ App_print("[Error] UDMA Teardown CQ event register failed!!\n");
+ }
+ else
+ {
+ appChObj->tdCqEventHandle = eventHandle;
+ }
+ }
+#endif
+
if(UDMA_SOK == retVal)
{
/* Channel enable */
}
appChObj->trEventHandle = NULL;
}
+#if (UDMA_SOC_CFG_RA_NORMAL_PRESENT == 1)
+ if(NULL != appChObj->tdCqEventHandle)
+ {
+ retVal += Udma_eventUnRegister(appChObj->tdCqEventHandle);
+ if(UDMA_SOK != retVal)
+ {
+ App_print("[Error] UDMA event unregister failed!!\n");
+ }
+ appChObj->tdCqEventHandle = NULL;
+ }
+#endif
retVal += Udma_chClose(chHandle);
if(UDMA_SOK != retVal)