summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 3bcebc8)
raw | patch | inline | side by side (parent: 3bcebc8)
author | Don Dominic <a0486429@ti.com> | |
Fri, 4 Dec 2020 14:25:19 +0000 (19:55 +0530) | ||
committer | Sivaraj R <sivaraj@ti.com> | |
Fri, 4 Dec 2020 14:53:30 +0000 (08:53 -0600) |
- PKTDMA Channel Open with no ring memory test
- PKTDMA Mapped Channel Open with invalid mapped channel group negative test
TODO:
- Add new TC for PKTDMA Channel open test for all combinations (TX/RX/Mapped/Unmapped)
Signed-off-by: Don Dominic <a0486429@ti.com>
- PKTDMA Mapped Channel Open with invalid mapped channel group negative test
TODO:
- Add new TC for PKTDMA Channel open test for all combinations (TX/RX/Mapped/Unmapped)
Signed-off-by: Don Dominic <a0486429@ti.com>
diff --git a/packages/ti/drv/udma/unit_test/udma_ut/makefile b/packages/ti/drv/udma/unit_test/udma_ut/makefile
index 7a323f8323dc5087e1104f8393130bcd4d8bb5e4..131d50eb8b89c7c0430048646e552a636b4e03a0 100755 (executable)
PACKAGE_SRCS_COMMON = . ./src ../udma_ut_component.mk
SRCS_COMMON += main_common.c
SRCS_COMMON += udma_test_parser.c udma_test_blkcpy.c udma_test_common.c
-SRCS_COMMON += udma_test_ring.c
+SRCS_COMMON += udma_test_ring.c udma_test_ch.c
SRCS_COMMON += udma_test_event.c udma_test_flow.c
SRCS_COMMON += udma_test_bug.c udma_test_misc.c
SRCS_COMMON += udma_test_soc.c
diff --git a/packages/ti/drv/udma/unit_test/udma_ut/src/udma_test.h b/packages/ti/drv/udma/unit_test/udma_ut/src/udma_test.h
index e1168f2ed80b9abda9bd05f5e1b9ea5605b01e7b..353792be643d7e6afff8bf2927f687ac093a5fa5 100755 (executable)
*/
int32_t udmaTestBugTcPDK_3863(UdmaTestTaskObj *taskObj);
int32_t udmaTestBugTcPDK_4654(UdmaTestTaskObj *taskObj);
+/*
+ * UDMA channel test functions
+ */
+int32_t udmaTestChPktdmaParamCheckTc(UdmaTestTaskObj *taskObj);
/*
* UDMA Negative test case functions
diff --git a/packages/ti/drv/udma/unit_test/udma_ut/src/udma_test_ch.c b/packages/ti/drv/udma/unit_test/udma_ut/src/udma_test_ch.c
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * Copyright (c) Texas Instruments Incorporated 2019-20
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the
+ * distribution.
+ *
+ * Neither the name of Texas Instruments Incorporated nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * \file udma_test_ch.c
+ *
+ * \brief UDMA channel related test case file.
+ *
+ */
+
+/* ========================================================================== */
+/* Include Files */
+/* ========================================================================== */
+
+#include <udma_test.h>
+
+/* ========================================================================== */
+/* Macros & Typedefs */
+/* ========================================================================== */
+
+/* None */
+
+/* ========================================================================== */
+/* Structure Declarations */
+/* ========================================================================== */
+
+/* None */
+
+/* ========================================================================== */
+/* Function Declarations */
+/* ========================================================================== */
+
+static int32_t udmaTestChPktdmaParamCheckTestLoop(UdmaTestTaskObj *taskObj);
+
+/* ========================================================================== */
+/* Global Variables */
+/* ========================================================================== */
+
+/* Global test pass/fail flag */
+static volatile int32_t gUdmaTestChResult = UDMA_SOK;
+
+/* ========================================================================== */
+/* Function Definitions */
+/* ========================================================================== */
+
+
+int32_t udmaTestChPktdmaParamCheckTc(UdmaTestTaskObj *taskObj)
+{
+ int32_t retVal = UDMA_SOK;
+ uint32_t loopCnt = 0U;
+
+ GT_1trace(taskObj->traceMask, GT_INFO1,
+ " |TEST INFO|:: Task:%d: PKTDMA Channel Paramter Check Testcase ::\r\n", taskObj->taskId);
+ GT_2trace(taskObj->traceMask, GT_INFO1,
+ " |TEST INFO|:: Task:%d: Loop count : %d ::\r\n", taskObj->taskId, taskObj->loopCnt);
+
+ gUdmaTestChResult = UDMA_SOK;
+ while(loopCnt < taskObj->loopCnt)
+ {
+ retVal = udmaTestChPktdmaParamCheckTestLoop(taskObj);
+ if(UDMA_SOK != retVal)
+ {
+ break;
+ }
+
+ loopCnt++;
+ }
+
+ retVal += gUdmaTestChResult;
+
+ return (retVal);
+}
+
+
+static int32_t udmaTestChPktdmaParamCheckTestLoop(UdmaTestTaskObj *taskObj)
+{
+ int32_t retVal = UDMA_SOK;
+ uint32_t elemCnt = 50U, ringMemSize;
+ uint32_t heapId = UTILS_MEM_HEAP_ID_MSMC;
+ Udma_DrvHandle drvHandle;
+ uint32_t chType;
+ struct Udma_ChObj chObj;
+ Udma_ChHandle chHandle = &chObj;
+ Udma_ChPrms chPrms;
+ void *ringMem = NULL;
+
+ drvHandle = &taskObj->testObj->drvObj[UDMA_TEST_INST_ID_PKTDMA_0];
+ ringMemSize = elemCnt * sizeof (uint64_t);
+ ringMem = Utils_memAlloc(heapId, ringMemSize, UDMA_CACHELINE_ALIGNMENT);
+ if(NULL == ringMem)
+ {
+ retVal = UDMA_EALLOC;
+ GT_0trace(taskObj->traceMask, GT_ERR, " Ring memory allocation failure\r\n");
+ }
+
+
+#if ((UDMA_NUM_MAPPED_TX_GROUP + UDMA_NUM_MAPPED_RX_GROUP) > 0)
+ /* PKTDMA Channel Open with no ring memory test */
+ chType = UDMA_CH_TYPE_TX_MAPPED;
+ UdmaChPrms_init(&chPrms, chType);
+ chPrms.mappedChGrp = UDMA_MAPPED_TX_GROUP_CPSW;
+ chPrms.peerChNum = UDMA_PSIL_CH_CPSW2_TX;
+ retVal = Udma_chOpen(drvHandle, chHandle, chType, &chPrms);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA channel open failed!!\n");
+ }
+ if(UDMA_SOK == retVal)
+ {
+ if(chHandle->fqRing != (Udma_RingHandle) NULL_PTR)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " Ring allocated even when no ring memory was provided!!\n");
+ retVal = UDMA_EFAIL;
+ }
+ }
+ if(UDMA_SOK == retVal)
+ {
+ retVal = Udma_chClose(chHandle);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA channel close failed!!\n");
+ }
+ }
+
+ /* PKTDMA Mapped Channel Open with invalid mapped channel group negative test*/
+ chType = UDMA_CH_TYPE_TX_MAPPED;
+ UdmaChPrms_init(&chPrms, chType);
+ chPrms.fqRingPrms.ringMem = ringMem;
+ chPrms.fqRingPrms.ringMemSize = ringMemSize;
+ chPrms.fqRingPrms.elemCnt = elemCnt;
+ chPrms.mappedChGrp = UDMA_NUM_MAPPED_TX_GROUP + UDMA_NUM_MAPPED_RX_GROUP;
+ retVal = Udma_chOpen(drvHandle, chHandle, chType, &chPrms);
+ if(UDMA_SOK == retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " Channel Open did not fail for incorrect mappedChGrp check!!\n");
+ retVal = UDMA_EFAIL;
+ }
+ else
+ {
+ retVal = UDMA_SOK;
+ }
+
+#endif
+
+ if(NULL != ringMem)
+ {
+ retVal += Utils_memFree(heapId, ringMem, ringMemSize);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR, " Ring free failed!!\n");
+ }
+ }
+
+ return(retVal);
+}
+
diff --git a/packages/ti/drv/udma/unit_test/udma_ut/src/udma_testcases.h b/packages/ti/drv/udma/unit_test/udma_ut/src/udma_testcases.h
index fdf283d7474cec86244f400f2004a7b14f7408ab..fabae82e78806df583762f301a998919c47990c0 100755 (executable)
.runFlag = (UDMA_TEST_RF_CHAIN | UDMA_TEST_RF_CFG_DYN),
.ringPrmId = UDMA_TEST_RING_PRMID_INVALID,
},
-
+#if (UDMA_SOC_CFG_RA_LCDMA_PRESENT == 1)
+ {
+ .enableTest = TEST_ENABLE,
+ .tcId = 6282U,
+ .tcName = "PKTDMA Channel Paramter Check test",
+ .disableInfo= NULL,
+ .printEnable= PRINT_ENABLE,
+ .prfEnable = PRF_DISABLE,
+ .tcType = (UDMA_TCT_SANITY | UDMA_TCT_NEGATIVE),
+ .dcEnable = DATA_CHECK_DISABLE,
+ .loopCnt = 1U,
+ .numTasks = 1U,
+ .testType = {UDMA_TT_MISC},
+ .testFxnPtr = {&udmaTestChPktdmaParamCheckTc},
+ /* All other below parameters not used in this testcase */
+ .pacingTime = {PACING_NONE},
+ .numCh = {1U},
+ .instId = {UDMA_TEST_DEFAULT_UDMA_INST},
+ .chPrmId = {UDMA_TEST_CH_PRMID_DEF},
+ .qdepth = {USE_DEF_QDEPTH},
+ .icnt = {
+ {UDMA_TEST_DEF_ICNT0, 1U, 1U, 1U}
+ },
+ .dicnt = {
+ {UDMA_TEST_DEF_DICNT0, 1U, 1U, 1U}
+ },
+ .dim = {
+ {0U, 0U, 0U}
+ },
+ .ddim = {
+ {0U, 0U, 0U}
+ },
+ .heapIdSrc = {DEF_HEAP_ID},
+ .heapIdDest = {DEF_HEAP_ID},
+ .srcBufSize = {UDMA_TEST_DEF_ICNT0},
+ .destBufSize= {UDMA_TEST_DEF_DICNT0},
+ .runFlag = (UDMA_TEST_RF_SOC_ALL | UDMA_TEST_RF_CORE_ALL | UDMA_TEST_RF_CFG_DEF | UDMA_TEST_RF_CFG_DYN),
+ .ringPrmId = UDMA_TEST_RING_PRMID_EVENT_POLLED,
+ },
+#endif /* #if (UDMA_SOC_CFG_RA_LCDMA_PRESENT == 1) */
};
#ifdef __cplusplus