summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 62ae560)
raw | patch | inline | side by side (parent: 62ae560)
author | Don Dominic <a0486429@ti.com> | |
Fri, 4 Dec 2020 22:39:33 +0000 (04:09 +0530) | ||
committer | Sivaraj R <sivaraj@ti.com> | |
Sat, 5 Dec 2020 02:30:37 +0000 (20:30 -0600) |
- Tests various channel API's for various compinantions of TX/RX/Mapped/Unmapped PKTDMA Channels
- Udma_chOpen
- Udma_chConfigTx / Udma_chConfigRx
- Udma_chEnable
- Udma_chDisable
- Udma_chClose
- For BCDMA/UDMAP this gets tested with block copy tests.
Signed-off-by: Don Dominic <a0486429@ti.com>
- Udma_chOpen
- Udma_chConfigTx / Udma_chConfigRx
- Udma_chEnable
- Udma_chDisable
- Udma_chClose
- For BCDMA/UDMAP this gets tested with block copy tests.
Signed-off-by: Don Dominic <a0486429@ti.com>
diff --git a/packages/ti/drv/udma/unit_test/udma_ut/src/soc/am64x/udma_test_soc.h b/packages/ti/drv/udma/unit_test/udma_ut/src/soc/am64x/udma_test_soc.h
index dea2a7641349249f9c5133858f7132e2303fec4c..04195d948b87bf1989e94b3c2bbf5a94fa542f85 100644 (file)
#define UDMA_TEST_RING_MODE_DEFAULT_START (TISCI_MSG_VALUE_RM_RING_MODE_RING)
#define UDMA_TEST_RING_MODE_DEFAULT_STOP (TISCI_MSG_VALUE_RM_RING_MODE_RING)
+#define UDMA_TEST_PKTDMA_UNMAPPED_TX_PEER_CH (UDMA_PDMA_CH_MAIN0_MCSPI0_CH0_TX)
+#define UDMA_TEST_PKTDMA_CPSW_TX_PEER_CH (UDMA_PSIL_CH_CPSW2_TX)
+#define UDMA_TEST_PKTDMA_SAUL_TX_PEER_CH (UDMA_PSIL_CH_SAUL0_TX)
+#define UDMA_TEST_PKTDMA_ICSSG_0_TX_PEER_CH (UDMA_PSIL_CH_ICSS_G0_TX)
+#define UDMA_TEST_PKTDMA_ICSSG_1_TX_PEER_CH (UDMA_PSIL_CH_ICSS_G1_TX)
+
+#define UDMA_TEST_PKTDMA_UNMAPPED_RX_PEER_CH (UDMA_PDMA_CH_MAIN0_MCSPI0_CH0_RX)
+#define UDMA_TEST_PKTDMA_CPSW_RX_PEER_CH (UDMA_PSIL_CH_CPSW2_RX)
+#define UDMA_TEST_PKTDMA_SAUL_RX_PEER_CH (UDMA_PSIL_CH_SAUL0_RX)
+#define UDMA_TEST_PKTDMA_ICSSG_0_RX_PEER_CH (UDMA_PSIL_CH_ICSS_G0_RX)
+#define UDMA_TEST_PKTDMA_ICSSG_1_RX_PEER_CH (UDMA_PSIL_CH_ICSS_G1_RX)
+
/* Redirect for backward compaitibilitly */
#define UDMA_TEST_RF_MAIN_BC (UDMA_TEST_RF_BCDMA_BC)
#define UDMA_TEST_RF_MCU_BC (UDMA_TEST_RF_BCDMA_BC)
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 353792be643d7e6afff8bf2927f687ac093a5fa5..ed34518ae1990224bcf481930864da4b8a4999b9 100755 (executable)
UDMA_TEST_RING_PRMID_INVALID,
} UdmaTestRingPrmId;
+#if (UDMA_SOC_CFG_RA_LCDMA_PRESENT == 1)
+/**
+ * UDMA UT PKTDMA channel param IDs.
+ */
+typedef enum
+{
+ UDMA_TEST_PKTDMA_CH_PRMID_UNMAPPED_TX,
+ UDMA_TEST_PKTDMA_CH_PRMID_CPSW_TX,
+ UDMA_TEST_PKTDMA_CH_PRMID_SAUL_TX,
+ UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_0_TX,
+ UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_1_TX,
+ UDMA_TEST_PKTDMA_CH_PRMID_UNMAPPED_RX,
+ UDMA_TEST_PKTDMA_CH_PRMID_CPSW_RX,
+ UDMA_TEST_PKTDMA_CH_PRMID_SAUL_RX,
+ UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_0_RX,
+ UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_1_RX,
+} UdmaTestPktdmaChPrmId;
+#endif
+
/* ========================================================================== */
/* Structure Declarations */
/* ========================================================================== */
* Refer #UdmaTestEventMode */
} UdmaTestRingPrm;
+#if (UDMA_SOC_CFG_RA_LCDMA_PRESENT == 1)
+/**
+ * \brief Test parameters for a PKTDMA Channel.
+ */
+typedef struct
+{
+ UdmaTestPktdmaChPrmId pktdmachPrmId;
+ /**< PKTDMA Channel parameter ID. */
+ uint32_t chType;
+ /**< UDMA channel type. */
+ uint32_t mappedChGrp;
+ /**< UDMA mapped channel group. */
+ uint32_t peerChNum;
+ /**< UDMA peer channel to link the #chNum using PSILCFG.*/
+} UdmaTestPktdmaChPrm;
+#endif
+
/**
* \brief Test case parameter structure.
*/
* UDMA channel test functions
*/
int32_t udmaTestChPktdmaParamCheckTc(UdmaTestTaskObj *taskObj);
+int32_t udmaTestChPktdmaChApiTc(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
index 934551b9431435562bbe95a75d0a4f6c94acef67..24ce519acfe5fc808863a8625acfe1b63e11e723 100644 (file)
/* ========================================================================== */
#include <udma_test.h>
+#include <udma_testconfig.h>
/* ========================================================================== */
/* Macros & Typedefs */
/* ========================================================================== */
static int32_t udmaTestChPktdmaParamCheckTestLoop(UdmaTestTaskObj *taskObj);
+static int32_t udmaTestChPktdmaChApiTestLoop(UdmaTestTaskObj *taskObj);
/* ========================================================================== */
/* Global Variables */
}
+int32_t udmaTestChPktdmaChApiTc(UdmaTestTaskObj *taskObj)
+{
+ int32_t retVal = UDMA_SOK;
+ uint32_t loopCnt = 0U;
+
+ GT_1trace(taskObj->traceMask, GT_INFO1,
+ " |TEST INFO|:: Task:%d: PKTDMA Channel API's 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 = udmaTestChPktdmaChApiTestLoop(taskObj);
+ if(UDMA_SOK != retVal)
+ {
+ break;
+ }
+
+ loopCnt++;
+ }
+
+ retVal += gUdmaTestChResult;
+
+ return (retVal);
+}
+
static int32_t udmaTestChPktdmaParamCheckTestLoop(UdmaTestTaskObj *taskObj)
{
int32_t retVal = UDMA_SOK;
+#if (UDMA_SOC_CFG_RA_LCDMA_PRESENT == 1)
uint32_t elemCnt = 50U, ringMemSize;
uint32_t heapId = UTILS_MEM_HEAP_ID_MSMC;
Udma_DrvHandle drvHandle;
chType = UDMA_CH_TYPE_TX_MAPPED;
UdmaChPrms_init(&chPrms, chType);
chPrms.mappedChGrp = UDMA_MAPPED_TX_GROUP_CPSW;
- chPrms.peerChNum = UDMA_PSIL_CH_CPSW2_TX;
+ chPrms.peerChNum = UDMA_TEST_PKTDMA_CPSW_TX_PEER_CH;
retVal = Udma_chOpen(drvHandle, chHandle, chType, &chPrms);
if(UDMA_SOK != retVal)
{
GT_0trace(taskObj->traceMask, GT_ERR, " Ring free failed!!\n");
}
}
+#endif
return(retVal);
}
+static int32_t udmaTestChPktdmaChApiTestLoop(UdmaTestTaskObj *taskObj)
+{
+ int32_t retVal = UDMA_SOK;
+#if (UDMA_SOC_CFG_RA_LCDMA_PRESENT == 1)
+ 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;
+ Udma_ChTxPrms txPrms;
+ Udma_ChRxPrms rxPrms;
+ uint32_t chGrpIdx;
+ void *ringMem = NULL;
+ Udma_RmInitPrms *rmInitPrms;
+ char *pktdmaChGrpStr[] = { "Unmapped TX", "CPSW TX", "SAUL TX", "ICSSG_0 TX", "ICSSG_1_TX",
+ "Unmapped RX", "CPSW RX", "SAUL RX", "ICSSG_0 RX", "ICSSG_1_RX"};
+ const UdmaTestPktdmaChPrm *pktdmaChPrms = NULL;
+
+ drvHandle = &taskObj->testObj->drvObj[UDMA_TEST_INST_ID_PKTDMA_0];
+ rmInitPrms = &drvHandle->initPrms.rmInitPrms;
+ 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");
+ }
+
+ /* Test for each config in PKTMA Channel param table */
+ for(chGrpIdx = 0U; chGrpIdx < UDMA_TEST_NUM_PKTDMA_CH_PRM; chGrpIdx++)
+ {
+ GT_1trace(taskObj->traceMask, GT_INFO1,
+ " Testing for PKTDMA %s Channel Group ...\r\n",
+ pktdmaChGrpStr[chGrpIdx]);
+
+ if(((UDMA_TEST_PKTDMA_CH_PRMID_UNMAPPED_TX == chGrpIdx) && (0U == rmInitPrms->numTxCh)) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_CPSW_TX == chGrpIdx) && (0U == rmInitPrms->numMappedTxCh[UDMA_MAPPED_TX_GROUP_CPSW])) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_SAUL_TX == chGrpIdx) && (0U == rmInitPrms->numMappedTxCh[UDMA_MAPPED_TX_GROUP_SAUL])) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_0_TX == chGrpIdx) && (0U == rmInitPrms->numMappedTxCh[UDMA_MAPPED_TX_GROUP_ICSSG_0])) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_1_TX == chGrpIdx) && (0U == rmInitPrms->numMappedTxCh[UDMA_MAPPED_TX_GROUP_ICSSG_1])) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_UNMAPPED_RX == chGrpIdx) && (0U == rmInitPrms->numRxCh)) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_CPSW_RX == chGrpIdx) && (0U == rmInitPrms->numMappedRxCh[UDMA_MAPPED_RX_GROUP_CPSW - UDMA_NUM_MAPPED_TX_GROUP])) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_SAUL_RX == chGrpIdx) && (0U == rmInitPrms->numMappedRxCh[UDMA_MAPPED_RX_GROUP_SAUL - UDMA_NUM_MAPPED_TX_GROUP])) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_0_RX == chGrpIdx) && (0U == rmInitPrms->numMappedRxCh[UDMA_MAPPED_RX_GROUP_ICSSG_0 - UDMA_NUM_MAPPED_TX_GROUP])) ||
+ ((UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_1_RX == chGrpIdx) && (0U == rmInitPrms->numMappedRxCh[UDMA_MAPPED_RX_GROUP_ICSSG_1 - UDMA_NUM_MAPPED_TX_GROUP])))
+ {
+ GT_1trace(taskObj->traceMask, GT_INFO1,
+ " Skipping the Test for PKTDMA %s Channel Group, since no channels are reserved!!\r\n",
+ pktdmaChGrpStr[chGrpIdx]);
+ continue;
+ }
+
+ pktdmaChPrms = &gUdmaTestPktdmaChPrm[chGrpIdx];
+
+ chType = pktdmaChPrms->chType;
+ UdmaChPrms_init(&chPrms, chType);
+ chPrms.fqRingPrms.ringMem = ringMem;
+ chPrms.fqRingPrms.ringMemSize = ringMemSize;
+ chPrms.fqRingPrms.elemCnt = elemCnt;
+ chPrms.mappedChGrp = pktdmaChPrms->mappedChGrp;
+ chPrms.peerChNum = pktdmaChPrms->peerChNum;
+
+ retVal = Udma_chOpen(drvHandle, chHandle, chType, &chPrms);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA channel open failed!!\n");
+ break;
+ }
+ else
+ {
+ GT_2trace(taskObj->traceMask, GT_INFO1,
+ " |TEST INFO|:: Task:%d: Allocated Ch : %d ::\r\n",
+ taskObj->taskId, Udma_chGetNum(chHandle));
+ }
+
+ if((chType & UDMA_CH_FLAG_TX) == UDMA_CH_FLAG_TX)
+ {
+ /* Config TX channel */
+ UdmaChTxPrms_init(&txPrms, chType);
+ retVal = Udma_chConfigTx(chHandle, &txPrms);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA TX channel config failed!!\n");
+ break;
+ }
+ }
+ else
+ {
+ /* Config RX channel */
+ UdmaChRxPrms_init(&rxPrms, chType);
+ retVal = Udma_chConfigRx(chHandle, &rxPrms);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA RX channel config failed!!\n");
+ break;
+ }
+ }
+
+ retVal = Udma_chEnable(chHandle);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA channel enable failed!!\n");
+ break;
+ }
+
+ retVal = Udma_chDisable(chHandle, UDMA_DEFAULT_CH_DISABLE_TIMEOUT);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA channel disable failed!!\n");
+ break;
+ }
+
+ retVal = Udma_chClose(chHandle);
+ if(UDMA_SOK != retVal)
+ {
+ GT_0trace(taskObj->traceMask, GT_ERR,
+ " UDMA channel close failed!!\n");
+ break;
+ }
+
+ GT_1trace(taskObj->traceMask, GT_INFO1,
+ " Testing for PKTDMA %s Channel Group passed!!\r\n",
+ pktdmaChGrpStr[chGrpIdx]);
+ }
+#endif
+
+ 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 fabae82e78806df583762f301a998919c47990c0..4dd2ebb60ea47f6f06fa81700607f9f9ebfa7c0e 100755 (executable)
.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,
},
+ {
+ .enableTest = TEST_ENABLE,
+ .tcId = 6279U,
+ .tcName = "PKTDMA Channel API's 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 = {&udmaTestChPktdmaChApiTc},
+ /* 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) */
};
diff --git a/packages/ti/drv/udma/unit_test/udma_ut/src/udma_testconfig.h b/packages/ti/drv/udma/unit_test/udma_ut/src/udma_testconfig.h
index 2b17eb8cb8b292e14c7c8e26de390d9063020ca0..db76f0079d171e7f9ad0140a30c83b0c6fbf1785 100644 (file)
#define UDMA_TEST_NUM_RING_PRM (sizeof(gUdmaTestRingPrm) / \
sizeof(gUdmaTestRingPrm[0U]))
+#if (UDMA_SOC_CFG_RA_LCDMA_PRESENT == 1)
+/** \brief Defines the various PKTDMA channel parameters. */
+static const UdmaTestPktdmaChPrm gUdmaTestPktdmaChPrm[] =
+{
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_UNMAPPED_TX,
+ .chType = UDMA_CH_TYPE_TX,
+ .mappedChGrp = UDMA_MAPPED_GROUP_INVALID,
+ .peerChNum = UDMA_TEST_PKTDMA_UNMAPPED_TX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_CPSW_TX,
+ .chType = UDMA_CH_TYPE_TX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_TX_GROUP_CPSW,
+ .peerChNum = UDMA_TEST_PKTDMA_CPSW_TX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_SAUL_TX,
+ .chType = UDMA_CH_TYPE_TX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_TX_GROUP_SAUL,
+ .peerChNum = UDMA_TEST_PKTDMA_SAUL_TX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_0_TX,
+ .chType = UDMA_CH_TYPE_TX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_TX_GROUP_ICSSG_0,
+ .peerChNum = UDMA_TEST_PKTDMA_ICSSG_0_TX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_1_TX,
+ .chType = UDMA_CH_TYPE_TX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_TX_GROUP_ICSSG_1,
+ .peerChNum = UDMA_TEST_PKTDMA_ICSSG_1_TX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_UNMAPPED_RX,
+ .chType = UDMA_CH_TYPE_RX,
+ .mappedChGrp = UDMA_MAPPED_GROUP_INVALID,
+ .peerChNum = UDMA_TEST_PKTDMA_UNMAPPED_RX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_CPSW_RX,
+ .chType = UDMA_CH_TYPE_RX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_RX_GROUP_CPSW,
+ .peerChNum = UDMA_TEST_PKTDMA_CPSW_RX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_SAUL_RX,
+ .chType = UDMA_CH_TYPE_RX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_RX_GROUP_SAUL,
+ .peerChNum = UDMA_TEST_PKTDMA_SAUL_RX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_0_RX,
+ .chType = UDMA_CH_TYPE_RX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_RX_GROUP_ICSSG_0,
+ .peerChNum = UDMA_TEST_PKTDMA_ICSSG_0_RX_PEER_CH,
+ },
+ {
+ .pktdmachPrmId = UDMA_TEST_PKTDMA_CH_PRMID_ICSSG_1_RX,
+ .chType = UDMA_CH_TYPE_RX_MAPPED,
+ .mappedChGrp = UDMA_MAPPED_RX_GROUP_ICSSG_1,
+ .peerChNum = UDMA_TEST_PKTDMA_ICSSG_1_RX_PEER_CH,
+ },
+};
+#define UDMA_TEST_NUM_PKTDMA_CH_PRM (sizeof(gUdmaTestPktdmaChPrm) / \
+ sizeof(gUdmaTestPktdmaChPrm[0U]))
+#endif
+
#ifdef __cplusplus
}
#endif