]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - keystone-rtos/dfe-lld.git/commitdiff
add CB support for DFE test
authorBenjamin Mouchard <b-mouchard@ti.com>
Fri, 23 Jan 2015 09:44:05 +0000 (10:44 +0100)
committerBenjamin Mouchard <b-mouchard@ti.com>
Fri, 23 Jan 2015 09:44:05 +0000 (10:44 +0100)
test/src/dfe_lld_test.c
test/src/testCmd.c
test/utils/dfetest.h

index bafe4efccbb11a95cec6e0ec36df0361a118b5bf..8617da4f30e49e2ba3299efbf28e6b1c1430c837 100644 (file)
@@ -116,6 +116,10 @@ float g_BBRXPM[16*2];
 volatile int resultTx = 0;
 volatile int resultRx = 0;
 
+volatile int enableCB = 0;
+volatile int disableCB = 0;
+
+
 DFE_CbBufCfg bufCfg[4];
 
 /* DMA test for BB and CB using IQN */
@@ -312,9 +316,24 @@ DFE_Err disableCppDma(DFE_Handle hDfe)
        return (rc);
 }
 
+/* DMA test for BB and CB using IQN */
 DFE_Err doTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma)
 {
        DFE_Err rc;
+       Uint32 i;
+    Uint32 cbCppDescripId[8];
+
+/* CB setup */
+       rc = init_CB(hDfe, &bufCfg[0]);
+
+/* CB DMA */
+       // Open CB buf DMA for reading CB buf
+       for(i = 0; i < 8; i++)
+               cbCppDescripId[i] = i+3;
+
+       rc = Dfe_openCbBufDma(hDfe, 1/*flag_18bit*/, 10/*cppDamId*/, &cbCppDescripId[0], CB_CTL_CHL);
+       if(rc != DFE_ERR_NONE)
+               printf("error\n");
 
        /* Test CB DMA */
        // Issue CB
@@ -343,38 +362,59 @@ DFE_Err doTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma)
        if(rc != DFE_ERR_NONE)
                printf("error\n");
 
-       return (rc);
+       return(rc);
 }
 
-DFE_Err resultTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma)
+int readTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma)
 {
+       uint32_t status = 0;
        DFE_Err rc;
        DfeCbStatus cbStatus;
+
+       if(enableCB != 1)
+       {
+               // do CB of dpdin
+               cbStatus = doStaticCB(hDfe, DFE_FL_SYNC_GEN_SIG_MPU_SYNC, 100);
+               // read CB
+               if(cbStatus != DFE_CBDONE)
+               {
+                       printf("CB not started properly\n");
+               }
+               rc = enableCB_DMA(hDfe, &bufCfg[0], (DfeFl_CbStatus *)g_cbInfo);
+               enableCB = 1;
+       }
+
+//     readCB_DMA(hDfe, hPktDma, &bufCfg[0], hDfe->flag_18bit, (DfeFl_CbStatus *)g_cbInfo+info_offset, (DFE_CbData *)g_cbDataOut+data_offset);
+       if (disableCB == 0)
+               status = readCB_DMA(hDfe, hPktDma);
+
+//     rc = readCB(hDfe,&bufCfg[0] , 1, (DfeFl_CbStatus *)g_cbInfo, (DFE_CbData *)g_cbDataOut);
+       // Disable CB buf DMA
+       if ((status != 0) && (enableCB == 1))
+       {
+               rc = Dfe_disableCbBufDma(hDfe);
+               disableCB = 1;
+       }
+
+       return (status);
+}
+
+void resultTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma)
+{
        uint32_t info_offset, data_offset;
 
        info_offset = 0;
        data_offset = 0;
 
-       // do CB of dpdin
-       cbStatus = doStaticCB(hDfe, DFE_FL_SYNC_GEN_SIG_MPU_SYNC, 100);
-       // read CB
-       if(cbStatus == DFE_CBDONE)
-       {
-               readCB_DMA(hDfe, hPktDma, &bufCfg[0], hDfe->flag_18bit, (DfeFl_CbStatus *)g_cbInfo+info_offset, (DFE_CbData *)g_cbDataOut+data_offset);
-               info_offset += 4;
-               data_offset += 4*DFE_FL_MAX_CB_LENGTH;
-       }
-       else
-               return(DFE_ERR_TIMEDOUT);
+       info_offset += 4;
+       data_offset += 4*DFE_FL_MAX_CB_LENGTH;
+       resultCB_DMA(hDfe, hPktDma, &bufCfg[0], hDfe->flag_18bit, (DfeFl_CbStatus *)g_cbInfo+info_offset, (DFE_CbData *)g_cbDataOut+data_offset);
 
-       // Close CPP/DMA for BBTX power meters
-       rc = Dfe_closeBbtxPowmtrDma(hDfe);
-       if(rc != DFE_ERR_NONE)
-               printf("error\n");
-       // Close CPP/DMA for BBRX power meters
-       rc = Dfe_closeBbrxPowmtrDma(hDfe);
-       if(rc != DFE_ERR_NONE)
-               printf("error\n");
+}
+
+DFE_Err closeTestCbDma(DFE_Handle hDfe)
+{
+       DFE_Err rc;
 
        // Close CB buf DMA
        rc = Dfe_closeCbBufDma(hDfe);
index d447be0cdb226d0b4fa7bc81e65e93ffc1d9ab00..b1b4b1491c683a570b790df50d3d7a0069a67701 100644 (file)
@@ -29,8 +29,8 @@
 #include <ti/drv/dfe/test/utils/cslUtils.h>
 #include <ti/drv/dfe/test/utils/dfetest.h>
 
-//#define TEST_CB_SSEL DFE_FL_SYNC_GEN_SIG_UL_IQ0_FSTROBE_SYNC0
-#define TEST_CB_SSEL   DFE_FL_SYNC_GEN_SIG_SYNC_GEN_CNTR0
+#define TEST_CB_SSEL   DFE_FL_SYNC_GEN_SIG_UL_IQ0_FSTROBE_SYNC0
+//#define TEST_CB_SSEL DFE_FL_SYNC_GEN_SIG_SYNC_GEN_CNTR0
 
 //capture node select:
 //0000 = DPD input (node 0)
@@ -634,26 +634,11 @@ int readBBRXPM_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, float *result, i
        return (queCount);
 }
 
-int readCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, DFE_CbBufCfg *bufCfg, Uint32 flag_18bit,
-           DfeFl_CbStatus cbStatus[],
-           DFE_CbData cbData[])
+DFE_Err enableCB_DMA(DFE_Handle hDfe, DFE_CbBufCfg *bufCfg, DfeFl_CbStatus cbStatus[])
 {
        DFE_Err rc;
-       Uint32 i, signaled, LinkLen;
-//     MNAV_HostPacketDescriptor *host_pkt;
-       Cppi_MonolithicDesc *ptrMonoDesc;
-       Cppi_HostDesc *ptrHostDesc;
-       Uint32 pkt, idx, idxd;
+       Uint32 i, signaled;
        DfeFl_CbBufMode cbBufMode;
-    Uint32          *payloadPtr;
-    Uint32                     payloadLen;
-
-       Uint32 j, k, dstIdx, srcIdx, queCount, tempReal, tempImag;
-
-       if(flag_18bit == 1)
-               LinkLen = 8;
-       else
-               LinkLen = 4;
 
        for(i = 0; i < DFE_FL_CB_NUM_BUF; i++)
        {
@@ -677,39 +662,60 @@ int readCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, DFE_CbBufCfg *bufCfg
                rc = Dfe_getSyncStatus(hDfe, DFE_FL_SYNC_GEN_SIG_MPU_SYNC, &signaled);
        } while(signaled == 0);
 
-    // wait till data arrives Rx queue
-    do
-    {
-        // Get current descriptor count for monolithic RX queue
-//        queCount = qm_get_descriptor_count(CTL_RX_Q + CB_CTL_CHL);
-//        queCount = Qmss_getQueueEntryCount(CTL_RX_Q + CB_CTL_CHL);
-        queCount = Qmss_getQueueEntryCount(hPktDma->rxQCtrl[CB_CTL_CHL]);
-    }while (queCount < LinkLen);
-
-//    queCount = qm_get_descriptor_count((CTL_RX_Q + CB_CTL_CHL));
-//    queCount = Qmss_getQueueEntryCount((CTL_RX_Q + CB_CTL_CHL));
+       return (rc);
+}
+
+int readCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma)
+{
+       uint32_t queCount;
+       DFE_Err rc;
+       int status = 0;
+       uint32_t LinkLen;
+
+       if(hDfe->flag_18bit == 1)
+               LinkLen = 8;
+       else
+               LinkLen = 4;
+
+//    // wait till data arrives Rx queue
     queCount = Qmss_getQueueEntryCount(hPktDma->rxQCtrl[CB_CTL_CHL]);
 
-    if (queCount != LinkLen)
+    if (queCount >= LinkLen)
     {
-       printf("Wrong queCont!\n");
-       return(-1);
+               if (queCount != LinkLen)
+               {
+                       printf("Wrong queCont!\n");
+                       return(-1);
+               } else {
+                       status = queCount;
+               }
+    } else {
+       status = 0;
     }
+    return (status);
+}
 
-       // Disable CB buf DMA
-       rc = Dfe_disableCbBufDma(hDfe);
+void resultCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, DFE_CbBufCfg *bufCfg, Uint32 flag_18bit,
+           DfeFl_CbStatus cbStatus[],
+           DFE_CbData cbData[])
+{
+       DFE_Err rc;
+       Cppi_MonolithicDesc *ptrMonoDesc;
+       Cppi_HostDesc *ptrHostDesc;
+       Uint32 pkt, idx, idxd;
+    Uint32          *payloadPtr;
+    Uint32                     payloadLen;
+
+    Uint32 j, k, dstIdx, srcIdx, queCount, tempReal, tempImag;
 
+    queCount = Qmss_getQueueEntryCount(hPktDma->rxQCtrl[CB_CTL_CHL]);
        // read cb data
     for (pkt = 0; pkt < queCount; pkt ++)
     {
                if(hPktDma->ctrlDescType == Cppi_DescType_HOST)
                {
-//        ptrHostDesc = (Cppi_HostDesc *)QMSS_DESC_PTR((CTL_RX_Q + CB_CTL_CHL));
                        ptrHostDesc = (Cppi_HostDesc *)QMSS_DESC_PTR(Qmss_queuePop(hPktDma->rxQCtrl[CB_CTL_CHL]));
-
-//             temp = (Uint32 *)(tmp+MNAV_MONO_PACKET_SIZE); //skip pkt header
                        Cppi_getData (Cppi_DescType_HOST, (Cppi_Desc*)ptrHostDesc, (uint8_t**)&payloadPtr, &payloadLen);
-//        Cppi_getData (Cppi_DescType_MONOLITHIC, (Cppi_Desc*)ptrMonoDesc, (uint8_t**)&payloadPtr, &payloadLen);
                } else {
                        ptrMonoDesc = (Cppi_MonolithicDesc *)QMSS_DESC_PTR(Qmss_queuePop(hPktDma->rxQCtrl[CB_CTL_CHL]));
                        Cppi_getData (Cppi_DescType_MONOLITHIC, (Cppi_Desc*)ptrMonoDesc, (uint8_t**)&payloadPtr, &payloadLen);
@@ -789,18 +795,15 @@ int readCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, DFE_CbBufCfg *bufCfg
                }
         }
 
-//        qm_push_queue(CTL_RX_FDQ, 1, 0, tmp);
-//        Qmss_queuePushDesc(CTL_RX_FDQ, (uint32_t*)ptrHostDesc);
                if(hPktDma->ctrlDescType == Cppi_DescType_HOST)
                {
                        Qmss_queuePushDesc(hPktDma->rxFqCtrl[CB_CTL_CHL], (uint32_t*)ptrHostDesc);
                } else {
                        Qmss_queuePushDesc(hPktDma->rxFqCtrl[CB_CTL_CHL], (uint32_t*)ptrMonoDesc);
                }
-//        Qmss_queuePushDescSize(hPktDma->rxFqCtrl[CB_CTL_CHL], (uint32_t*)ptrHostDesc, 64);
     }
 
-       return((Uint32)rc);
+       return(0);
 }
 #endif
 
index b36f2069b512087d77858e4c85a63c9a227610cc..1b85a181144dbeba0d94feb35bdd494d22db7211 100644 (file)
@@ -93,7 +93,9 @@ void readSummerGain(DFE_Handle hDfe, Uint32 cfrId, Uint32 strId, int *summerGain
 void countBBTXPM(DFE_Handle hDfe, Uint32 pmId, Uint32 *pCt);
 int readBBTXPM_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, float *result, int NumQue);
 int readBBRXPM_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, float *result, int NumQue);
-int readCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, DFE_CbBufCfg *bufCfg, Uint32 flag_18bit,
+DFE_Err enableCB_DMA(DFE_Handle hDfe, DFE_CbBufCfg *bufCfg, DfeFl_CbStatus cbStatus[]);
+int readCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma);
+void resultCB_DMA(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, DFE_CbBufCfg *bufCfg, Uint32 flag_18bit,
            DfeFl_CbStatus cbStatus[],
            DFE_CbData cbData[]);
 
@@ -104,8 +106,11 @@ DFE_Err doTestBbPm(DFE_Handle hDfe, PktDmaConfigHandle hPktDma);
 DFE_Err updateBbPm(DFE_Handle hDfe);
 void resultTestBbPm(DFE_Handle hDfe, PktDmaConfigHandle hPktDma, uint32_t slotcount);
 DFE_Err disableCppDma(DFE_Handle hDfe);
-//DFE_Err doTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma);
-//DFE_Err resultTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma);
+DFE_Err doTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma);
+int readTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma);
+void resultTestCbDma(DFE_Handle hDfe, PktDmaConfigHandle hPktDma);
+DFE_Err closeTestCbDma(DFE_Handle hDfe);
+
 
 
 #endif // __DFETEST_H__