475ce8a2b62057891c8b5129ed4f7fdbf425a194
[processor-sdk/pdk.git] / packages / ti / drv / udma / unit_test / udma_ut / src / udma_test.h
1 /*
2  *  Copyright (c) Texas Instruments Incorporated 2018
3  *
4  *  Redistribution and use in source and binary forms, with or without
5  *  modification, are permitted provided that the following conditions
6  *  are met:
7  *
8  *    Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  *
11  *    Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the
14  *    distribution.
15  *
16  *    Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
33 /**
34  *  \file udma_test.h
35  *
36  *  \brief This file contains all the structures, macros, enums
37  *  used by the UDMA test application.
38  *
39  */
41 #ifndef UDMA_TEST_H_
42 #define UDMA_TEST_H_
44 /* ========================================================================== */
45 /*                             Include Files                                  */
46 /* ========================================================================== */
48 #include <stdint.h>
49 #include <stdio.h>
50 #include <string.h>
52 #include <ti/drv/udma/udma.h>
54 #include <ti/osal/SemaphoreP.h>
55 #include <ti/osal/TaskP.h>
56 #include <ti/drv/uart/UART.h>
57 #include <ti/drv/uart/UART_stdio.h>
58 #include <ti/drv/fvid2/fvid2.h>
59 #include <ti/drv/udma/examples/udma_apputils/udma_apputils.h>
61 #include "utils_mem.h"
62 #include "utils_prf.h"
63 #if defined (SOC_AM65XX)
64 #include "soc/am65xx/udma_test_soc.h"
65 #else
66 #include "soc/j721e/udma_test_soc.h"
67 #endif
69 #ifdef __cplusplus
70 extern "C" {
71 #endif
73 /* ========================================================================== */
74 /*                           Macros & Typedefs                                */
75 /* ========================================================================== */
77 /** \brief Log enable for example application. */
78 #define UdmaUtTrace                     (GT_INFO1 | GT_TraceState_Enable)
80 /* UART read timeout in msec */
81 #define UDMA_TEST_UART_TIMEOUT_MSEC     (10000U)
83 /* Application name string used in print statements */
84 #define APP_NAME                        "UDMA_TEST"
86 /* Default values */
87 #define UDMA_TEST_USE_DEF               (0xFAFAU)
88 #define UDMA_TEST_DEF_LOOP_CNT          (100U)
89 #define UDMA_TEST_DEF_QDEPTH            (1U)
90 #define UDMA_TEST_PERF_LOOP_CNT         (10000U)
91 #define UDMA_TEST_PERF_QDEPTH           (1U)
93 #define UDMA_TEST_DEF_ICNT0             (1000U)
94 #define UDMA_TEST_DEF_DICNT0            (1000U)
96 #define UDMA_TEST_PERF_ICNT0            (10000U)
97 #define UDMA_TEST_PERF_DICNT0           (10000U)
99 #define UDMA_TEST_PRINT_BUFSIZE         (0x4000U)
101 #define UDMA_TEST_MAX_TASKS             (10U)
102 #define UDMA_TEST_MAX_CH                (15U)
103 #define UDMA_TEST_MAX_QDEPTH            (5U)
105 #define UDMA_TEST_MAX_ICNT              (4U)
106 #define UDMA_TEST_MAX_DIM               (3U)
108 /* Defined the following so that it is easy to understand a particular config */
109 #define USE_DEF_LP_CNT                  (UDMA_TEST_USE_DEF)
110 #define USE_DEF_QDEPTH                  (UDMA_TEST_USE_DEF)
111 #define DEF_HEAP_ID                     (UTILS_MEM_HEAP_ID_DDR)
112 #define TEST_ENABLE                     (TRUE)
113 #define TEST_DISABLE                    (FALSE)
114 #define PRF_ENABLE                      (TRUE)
115 #define PRF_DISABLE                     (FALSE)
116 #define PRINT_ENABLE                    (TRUE)
117 #define PRINT_DISABLE                   (FALSE)
118 #define TIMEST_ENABLE                   (TRUE)
119 #define TIMEST_DISABLE                  (FALSE)
120 #define DATA_CHECK_ENABLE               (TRUE)
121 #define DATA_CHECK_DISABLE              (FALSE)
122 #define PACING_NONE                     (0U)
123 #define DEF_PACING                      (20U)
125 #define UDMA_TEST_RF_SOC_AM65XX         ((uint64_t) 0x00000001U)
126 #define UDMA_TEST_RF_SOC_J721E          ((uint64_t) 0x00000002U)
127 #define UDMA_TEST_RF_SOC_J7200          ((uint64_t) 0x00000004U)
128 #define UDMA_TEST_RF_SOC_ALL            ((uint64_t) 0xFFFFFFFFU)
130 #define UDMA_TEST_RF_CORE_MPU1_0        ((uint64_t)(((uint64_t) 0x0001U) << 32U))
131 #define UDMA_TEST_RF_CORE_MCU1_0        ((uint64_t)(((uint64_t) 0x0002U) << 32U))
132 #define UDMA_TEST_RF_CORE_MCU1_1        ((uint64_t)(((uint64_t) 0x0004U) << 32U))
133 #define UDMA_TEST_RF_CORE_MCU2_0        ((uint64_t)(((uint64_t) 0x0008U) << 32U))
134 #define UDMA_TEST_RF_CORE_MCU2_1        ((uint64_t)(((uint64_t) 0x0010U) << 32U))
135 #define UDMA_TEST_RF_CORE_MCU3_0        ((uint64_t)(((uint64_t) 0x0020U) << 32U))
136 #define UDMA_TEST_RF_CORE_MCU3_1        ((uint64_t)(((uint64_t) 0x0040U) << 32U))
137 #define UDMA_TEST_RF_CORE_C7X_1         ((uint64_t)(((uint64_t) 0x0080U) << 32U))
138 #define UDMA_TEST_RF_CORE_C66X_1        ((uint64_t)(((uint64_t) 0x0100U) << 32U))
139 #define UDMA_TEST_RF_CORE_C66X_2        ((uint64_t)(((uint64_t) 0x0200U) << 32U))
140 #define UDMA_TEST_RF_CORE_ALL           ((uint64_t)(((uint64_t) 0xFFFFU) << 32U))
141 #define UDMA_TEST_RF_CORE_MCU_ALL       (UDMA_TEST_RF_CORE_MCU1_0 | UDMA_TEST_RF_CORE_MCU1_1 | \
142                                          UDMA_TEST_RF_CORE_MCU2_0 | UDMA_TEST_RF_CORE_MCU2_1 | \
143                                          UDMA_TEST_RF_CORE_MCU3_0 | UDMA_TEST_RF_CORE_MCU3_1)
145 /* For future when we have dynamic coverage testcases */
146 #define UDMA_TEST_RF_CFG_DEF            ((uint64_t)(((uint64_t) 0x00001U) << 48U))
147 #define UDMA_TEST_RF_CFG_DYN            ((uint64_t)(((uint64_t) 0x00002U) << 48U))
149 /**
150  *  \brief Test types - based on this the different application flow will be
151  *  determined.
152  */
153 typedef enum
155     UDMA_TT_BLK_CPY,
156     UDMA_TT_DRU_DIRECT,
157     UDMA_TT_DRU_INDIRECT,
158     UDMA_TT_PDMA_UART,
159     UDMA_TT_PDMA_OSPI,
160     UDMA_TT_PDMA_MCSPI,
161     UDMA_TT_PDMA_MCASP,
162     UDMA_TT_PDMA_CRC,
163     UDMA_TT_PDMA_ADC,
164     UDMA_TT_MISC,
165     UDMA_TT_CUSTOM
166 } UdmaTestType;
168 /**
169  *  \brief Testcase types.
170  */
171 typedef enum
173     /* Category */
174     UDMA_TCT_SANITY     = 0x01U,
175     UDMA_TCT_REGRESSION = 0x02U,
176     UDMA_TCT_FULL       = 0x04U,
177     /* Adequacy */
178     UDMA_TCT_FUNCTIONAL  = 0x08U,
179     UDMA_TCT_STRESS      = 0x10U,
180     UDMA_TCT_NEGATIVE    = 0x20U,
181     UDMA_TCT_PERFORMANCE = 0x40U,
182     UDMA_TCT_MISC        = 0x80U,
183     UDMA_TCT_API         = 0x100U,
184     /* Used for Test parser dont use in test case */
185     UDMA_TCT_ALL = 0x1FFU
186 } UdmaTestCaseType;
188 /**
189  *  \brief Event types.
190  */
191 typedef enum
193     UDMA_TEST_EVENT_NONE,
194     /**< No events are used - use direct dequeue API to poll for completion */
195     UDMA_TEST_EVENT_INTR,
196     /**< Events with interrupt callback - use sempahore post for completion */
197     UDMA_TEST_EVENT_POLLED,
198     /**< Events with polled mode at IA - use IA status poll for completion */
199 } UdmaTestEventMode;
201 /**
202  *  UDMA UT TX param IDs.
203  */
204 typedef enum
206     UDMA_TEST_TXCH_PRMID_DEF,
207     UDMA_TEST_TXCH_PRMID_DMA_PRIORITY_HIGH,
208     UDMA_TEST_TXCH_PRMID_INVALID,
209 } UdmaTestTxChPrmId;
211 /**
212  *  UDMA UT RX parameter IDs.
213  */
214 typedef enum
216     UDMA_TEST_RXCH_PRMID_DEF,
217     UDMA_TEST_RXCH_PRMID_DMA_PRIORITY_HIGH,
218     UDMA_TEST_RXCH_PRMID_INVALID,
219 } UdmaTestRxChPrmId;
221 /**
222  *  UDMA UT UTC parameter IDs.
223  */
224 typedef enum
226     UDMA_TEST_UTCCH_PRMID_DEF,
227     UDMA_TEST_UTCCH_PRMID_DMA_PRIORITY_HIGH,
228     UDMA_TEST_UTCCH_PRMID_INVALID,
229 } UdmaTestUtcChPrmId;
231 /**
232  *  UDMA UT PDMA parameter IDs.
233  */
234 typedef enum
236     UDMA_TEST_PDMACH_PRMID_DEF,
237     UDMA_TEST_PDMACH_PRMID_ES_16BITS,
238     UDMA_TEST_PDMACH_PRMID_INVALID,
239 } UdmaTestPdmaChPrmId;
241 /**
242  *  UDMA UT channel param IDs.
243  */
244 typedef enum
246     UDMA_TEST_CH_PRMID_DEF,
247     UDMA_TEST_CH_PRMID_INTR_DEF,
248     UDMA_TEST_CH_PRMID_TRIGGER_GLOBAL0,
249     UDMA_TEST_CH_PRMID_TRIGGER_GLOBAL0_INTR,
250     UDMA_TEST_CH_PRMID_EVENTSIZE_ICNT1,
251     UDMA_TEST_CH_PRMID_EVENTSIZE_ICNT2,
252     UDMA_TEST_CH_PRMID_EVENTSIZE_ICNT3,
253     UDMA_TEST_CH_PRMID_DRU_DEF,
254     UDMA_TEST_CH_PRMID_DRU_INTR_DEF,
255     UDMA_TEST_CH_PRMID_BLKCPY_HC_DEF,
256     UDMA_TEST_CH_PRMID_BLKCPY_HC_INTR_DEF,
257     UDMA_TEST_CH_PRMID_BLKCPY_UHC_DEF,
258     UDMA_TEST_CH_PRMID_BLKCPY_UHC_INTR_DEF,
259     UDMA_TEST_CH_PRMID_INVALID,
260 } UdmaTestChPrmId;
262 /**
263  *  UDMA UT ring param IDs.
264  */
265 typedef enum
267     UDMA_TEST_RING_PRMID_EVENT_NONE,
268     UDMA_TEST_RING_PRMID_EVENT_INTR,
269     UDMA_TEST_RING_PRMID_EVENT_POLLED,
270     UDMA_TEST_RING_PRMID_INVALID,
271 } UdmaTestRingPrmId;
273 /* ========================================================================== */
274 /*                         Structure Declarations                             */
275 /* ========================================================================== */
277 /* Forward declaration. */
278 typedef struct UdmaTestSystemCtrl_t UdmaTestSystemCtrl;
279 typedef struct UdmaTestParams_t     UdmaTestParams;
280 typedef struct UdmaTestTaskObj_t    UdmaTestTaskObj;
281 typedef struct UdmaTestObj_t        UdmaTestObj;
283 /** \brief Typedef for test case type function pointer */
284 typedef int32_t (*UdmaTestFxnPtr)(UdmaTestTaskObj *taskObj);
286 /**
287  *  \brief Test parameters for a TX channel.
288  */
289 typedef struct
291     UdmaTestTxChPrmId       txChPrmId;
292     /**< TX Channel parameter ID. */
293     Udma_ChTxPrms           txPrms;
294     /**< TX channel parameter */
295 } UdmaTestTxChPrm;
297 /**
298  *  \brief Test parameters for a RX channel.
299  */
300 typedef struct
302     UdmaTestRxChPrmId       rxChPrmId;
303     /**< RX Channel parameter ID. */
304     Udma_ChRxPrms           rxPrms;
305     /**< RX channel parameter */
306 } UdmaTestRxChPrm;
308 /**
309  *  \brief Test parameters for a UTC channel.
310  */
311 typedef struct
313     UdmaTestUtcChPrmId      utcChPrmId;
314     /**< UTC Channel parameter ID. */
315     Udma_ChUtcPrms          utcPrms;
316     /**< UTC channel parameter */
317 } UdmaTestUtcChPrm;
319 /**
320  *  \brief Test parameters for a PDMA channel.
321  */
322 typedef struct
324     UdmaTestPdmaChPrmId     pdmaChPrmId;
325     /**< PDMA Channel parameter ID. */
326     Udma_ChPdmaPrms         pdmaPrms;
327     /**< PDMA channel parameter */
328 } UdmaTestPdmaChPrm;
330 /**
331  *  \brief Test parameters for a channel.
332  */
333 typedef struct
335     UdmaTestChPrmId         chPrmId;
336     /**< Channel parameter ID. */
337     uint32_t                chType;
338     /**< UDMA channel type. */
339     uint32_t                utcId;
340     /**< UTC ID incase of DRU/external channel. */
341     uint32_t                eventMode;
342     /**< Use no event, event with interrupt or event with polled mode.
343      *   Refer #UdmaTestEventMode */
344     uint32_t                trigger;
345     /**< Global0 or Global 1 Trigger - refer \ref CSL_UdmapTrFlagsTrigger. */
346     uint32_t                eventSize;
347     /**< Refer \ref CSL_UdmapTrFlagsEventSize. */
348     uint32_t                triggerType;
349     /**< Refer \ref CSL_UdmapTrFlagsTriggerType. */
350     UdmaTestTxChPrmId       txPrmId;
351     /**< TX Channel parameter ID. */
352     UdmaTestRxChPrmId       rxPrmId;
353     /**< RX Channel parameter ID. */
354     UdmaTestUtcChPrmId      utcPrmId;
355     /**< UTC Channel parameter ID. */
356     UdmaTestPdmaChPrmId     pdmaPrmId;
357     /**< PDMA Channel parameter ID. */
358 } UdmaTestChPrm;
360 /**
361  *  \brief Test parameters for a ring.
362  */
363 typedef struct
365     UdmaTestRingPrmId       ringPrmId;
366     /**< Ring parameter ID. */
367     uint32_t                eventMode;
368     /**< Use no event, event with interrupt or event with polled mode.
369      *   Refer #UdmaTestEventMode */
370 } UdmaTestRingPrm;
372 /**
373  *  \brief Test case parameter structure.
374  */
375 struct UdmaTestParams_t
377     bool                    enableTest;
378     /**< Whether test case should be executed or not. */
379     uint32_t                tcId;
380     /**< Test case ID. */
381     char                   *tcName;
382     /**< Test case name. */
383     char                   *disableInfo;
384     /**< Reason string for disabling a test case. */
385     bool                    printEnable;
386     /**< Enable/disable print statements, used for stress testing. */
387     bool                    prfEnable;
388     /**< Enable performance prints. */
389     uint32_t                tcType;
390     /**< Type of testcase  - like BFT, stress etc... */
391     uint32_t                dcEnable;
392     /**< Enable/disable data check - used for performance. */
393     uint32_t                loopCnt;
394     /**< Loop count for test. */
396     uint32_t                numTasks;
397     /**< Number of tasks to test. */
398     uint32_t                testType[UDMA_TEST_MAX_TASKS];
399     /**< Type of test */
400     UdmaTestFxnPtr          testFxnPtr[UDMA_TEST_MAX_TASKS];
401     /**< Type of test case to run. */
402     uint32_t                pacingTime[UDMA_TEST_MAX_TASKS];
403     /**< Pacing Interval in ms. */
404     uint32_t                numCh[UDMA_TEST_MAX_TASKS];
405     /**< Number of channels per task to test. */
406     uint32_t                instId[UDMA_TEST_MAX_CH];
407     /**< NAVSS instance ID. */
408     UdmaTestChPrmId         chPrmId[UDMA_TEST_MAX_CH];
409     /**< Channel config IDs for all the tasks.
410      *   Task 0 channel configs will be first (0 to (numCh[0] - 1)),
411      *   (numCh[0] to (numCh[1] - 1)) and so on. */
412     uint32_t                qdepth[UDMA_TEST_MAX_CH];
413     /**< Queue depth. */
414     uint32_t                icnt[UDMA_TEST_MAX_CH][UDMA_TEST_MAX_ICNT];
415     /**< Source counts. */
416     uint32_t                dicnt[UDMA_TEST_MAX_CH][UDMA_TEST_MAX_ICNT];
417     /**< Destination counts. */
418     uint32_t                dim[UDMA_TEST_MAX_CH][UDMA_TEST_MAX_DIM];
419     /**< Source dims. */
420     uint32_t                ddim[UDMA_TEST_MAX_CH][UDMA_TEST_MAX_DIM];
421     /**< Destination dims. */
422     uint32_t                heapIdSrc[UDMA_TEST_MAX_CH];
423     /**< Heap ID to allocate source buffer. */
424     uint32_t                heapIdDest[UDMA_TEST_MAX_CH];
425     /**< Heap ID to allocate destination buffer. */
426     uint32_t                srcBufSize[UDMA_TEST_MAX_CH];
427     /**< Source buffer size to allocate. */
428     uint32_t                destBufSize[UDMA_TEST_MAX_CH];
429     /**< Destination buffer size to allocate. */
430     uint64_t                runFlag;
431     /**< Flag to indicate whether the test needs to be run on a particular
432      *   SOC, CORE and other configurations. */
433     UdmaTestRingPrmId       ringPrmId;
434     /**< Ring config ID. Applicable only for ring testcases */
436     /*
437      * Below variables are initialized in code and not in table!!
438      */
439     bool                    isRun;
440     /**< Flag to indicate whether the test case is run or not. */
441     int32_t                 testResult;
442     /**< Test result. */
443 };
445 /**
446  *  \brief Structure used for UDMA UT control parameters.
447  */
448 struct UdmaTestSystemCtrl_t
450     uint32_t    loopCnt;
451     /**< Default loop count. */
452     uint32_t    qdepth;
453     /**< Default queue depth for queue and dequeue operation. */
454     uint32_t    rtPrintEnable;
455     /**< Enables runtime remote prints like VENC underflow status etc. */
456 };
458 typedef struct UdmaTestChObj_t
460     int32_t                 chIdx;
462     struct Udma_ChObj       drvChObj;
463     struct Udma_EventObj    cqEventObj;
464     struct Udma_EventObj    tdCqEventObj;
465     struct Udma_EventObj    trEventObj;
467     Udma_ChHandle           chHandle;
468     Udma_EventHandle        cqEventHandle;
469     Udma_EventHandle        tdCqEventHandle;
470     Udma_EventHandle        trEventHandle;
472     Udma_EventPrms          trEventPrms;
474     Udma_DrvHandle          drvHandle;
475     uint32_t                instId;
476     SemaphoreP_Handle       transferDoneSem;
477     /**< Semaphore to indicate transfer completion */
479     uint32_t                queueCnt;
480     uint32_t                dequeueCnt;
482     uint8_t                 *fqRingMem;
483     uint8_t                 *cqRingMem;
484     uint8_t                 *tdCqRingMem;
485     uint8_t                 *trpdMem[UDMA_TEST_MAX_QDEPTH];
487     uint8_t                 *srcBuf;
488     uint8_t                 *destBuf[UDMA_TEST_MAX_QDEPTH];
490     const UdmaTestChPrm     *chPrms;
491     const Udma_ChTxPrms     *txPrms;
492     const Udma_ChRxPrms     *rxPrms;
493     const Udma_ChUtcPrms    *utcPrms;
494     const Udma_ChPdmaPrms   *pdmaPrms;
495     uint32_t                qdepth;
496     uint32_t                icnt[UDMA_TEST_MAX_ICNT];
497     uint32_t                dicnt[UDMA_TEST_MAX_ICNT];
498     uint32_t                dim[UDMA_TEST_MAX_DIM];
499     uint32_t                ddim[UDMA_TEST_MAX_DIM];
500     uint32_t                heapIdSrc;
501     uint32_t                heapIdDest;
502     uint32_t                srcBufSize;
503     uint32_t                destBufSize;
505     uint32_t                ringMemSize;
506     uint32_t                trpdSize;
507 } UdmaTestChObj;
509 /**
510  *  \brief Structure used for UDMA UT task object parameters.
511  */
512 struct UdmaTestTaskObj_t
514     UdmaTestParams         *testPrms;
515     /**< Pointer to test params for reference. */
516     uint32_t                testType;
517     UdmaTestFxnPtr          testFxnPtr;
518     uint32_t                pacingTime;
519     /**< Pacing Interval in ms. */
520     uint32_t                numCh;
521     UdmaTestChObj          *chObj[UDMA_TEST_MAX_CH];
522     uint32_t                traceMask;
523     int32_t                 testResult;
524     uint64_t                totalTransfer;
525     /**< Total bytes transferred */
526     uint32_t                durationMs;
527     /**< Time taken in ms */
528     uint64_t                mps;
529     /**< Mega bytes per second */
530     UdmaTestObj            *testObj;
531     uint32_t                taskId;
532     TaskP_Handle            taskHandle;
533     Utils_PrfTsHndl        *prfTsHandle;
534     char                    prfTsName[15];
535     uint32_t                loopCnt;
536     const UdmaTestRingPrm  *ringPrms;
537 };
539 /**
540  *  \brief Structure used for UDMA test object common for all the tasks.
541  */
542 struct UdmaTestObj_t
544     UdmaTestSystemCtrl  sysCtrl;
545     /**< System control information. */
546     UdmaTestParams     *testPrms;
547     /**< Pointer to test params for reference. */
548     uint32_t            skipCount;
549     /**< Number of test cases skipped because of platform/user settings. */
550     uint32_t            disableCount;
551     /**< Number of test cases disabled because of any bug etc. */
552     uint32_t            traceMask;
553     /**< Masks for the debug prints. */
554     uint64_t            runFlag;
555     /**< Current run flag for a SOC, CORE and other configurations. */
557     struct Udma_DrvObj  drvObj[UDMA_INST_ID_MAX];
559     SemaphoreP_Handle   taskCompleteSem;
560     SemaphoreP_Handle   lockSem;
562     UdmaTestTaskObj     taskObj[UDMA_TEST_MAX_TASKS];
563     UdmaTestChObj       chObjs[UDMA_TEST_MAX_CH];
564 };
566 /* ========================================================================== */
567 /*                          Function Declarations                             */
568 /* ========================================================================== */
570 /*
571  * Parser functions
572  */
573 int32_t udmaTestParser(void);
574 void udmaTestPrint(const char *str, ...);
575 void udmaDrvPrint(const char *str);
577 /*
578  * UDMA block copy test case functions
579  */
580 int32_t udmaTestBlkcpyTc(UdmaTestTaskObj *taskObj);
581 int32_t udmaTestBlkcpyPauseResumeTc(UdmaTestTaskObj *taskObj);
582 int32_t udmaTestBlkcpyChainingTc(UdmaTestTaskObj *taskObj);
583 /*
584  * UDMA ring test functions
585  */
586 int32_t udmaTestRingProxyTc(UdmaTestTaskObj *taskObj);
587 int32_t udmaTestRingFlushTc(UdmaTestTaskObj *taskObj);
588 int32_t udmaTestRingEventTc(UdmaTestTaskObj *taskObj);
589 int32_t udmaTestRingParamCheckTc(UdmaTestTaskObj *taskObj);
590 int32_t udmaTestRingUtilsMemSizeTc(UdmaTestTaskObj *taskObj);
591 int32_t udmaTestRingMemPtrTc(UdmaTestTaskObj *taskObj);
592 int32_t udmaTestRingAttachTc(UdmaTestTaskObj *taskObj);
593 int32_t udmaTestRingResetTc(UdmaTestTaskObj *taskObj);
594 int32_t udmaTestRingPrimeTc(UdmaTestTaskObj *taskObj);
595 /*
596  * UDMA ring monitor test functions
597  */
598 int32_t udmaTestRingMonPushPopTc(UdmaTestTaskObj *taskObj);
599 int32_t udmaTestRingMonLowThresholdTc(UdmaTestTaskObj *taskObj);
600 int32_t udmaTestRingMonHighThresholdTc(UdmaTestTaskObj *taskObj);
601 /*
602  * UDMA proxy test functions
603  */
604 int32_t udmaTestProxyPerformanceTc(UdmaTestTaskObj *taskObj);
605 /*
606  * UDMA flow test functions
607  */
608 int32_t udmaTestFlowAttachTc(UdmaTestTaskObj *taskObj);
609 int32_t udmaTestFlowAllocTc(UdmaTestTaskObj *taskObj);
610 /*
611  * UDMA event test functions
612  */
613 int32_t udmaTestEventOutOfRangeFlow(UdmaTestTaskObj *taskObj);
614 /*
615  * UDMA misc test functions
616  */
617 int32_t udmaTestPsilMacroTc(UdmaTestTaskObj *taskObj);
618 int32_t udmaTestOsalPrmsTc(UdmaTestTaskObj *taskObj);
619 int32_t udmaTestTrMakeTc(UdmaTestTaskObj *taskObj);
620 int32_t udmaTestStructSizeTc(UdmaTestTaskObj *taskObj);
621 /*
622  * UDMA bug test functions
623  */
624 int32_t udmaTestBugTcPDK_3863(UdmaTestTaskObj *taskObj);
625 int32_t udmaTestBugTcPDK_4654(UdmaTestTaskObj *taskObj);
627 /*
628  * UDMA Negative test case functions
629  */
631 /*
632  * UDMA SOC specific functions
633  */
634 int32_t udmaTestPrintPsilMacro(UdmaTestTaskObj *taskObj);
635 int32_t udmaTestPrintPdmaMacro(UdmaTestTaskObj *taskObj);
637 /*
638  * UDMA common functions
639  */
640 int32_t udmaTestInitDriver(UdmaTestObj *testObj);
641 int32_t udmaTestDeinitDriver(UdmaTestObj *testObj);
642 int32_t udmaTestInitVariables(const UdmaTestObj *testObj);
643 void udmaTestFreeVariables(const UdmaTestObj *testObj);
644 void udmaTestLogTestResult(const UdmaTestObj *testObj,
645                            int32_t            testResult,
646                            uint32_t           tcId,
647                            char              *tcInfo);
648 void udmaTestPrintTestResult(const UdmaTestObj *testObj,
649                              uint32_t           skipCount,
650                              uint32_t           disableCount);
651 void udmaTestResetTestResult(void);
652 void udmaTestCalcPerformance(UdmaTestTaskObj *taskObj, uint32_t durationMs);
653 void udmaTestCalcTotalPerformance(UdmaTestObj *testObj, uint32_t durationMs);
654 int32_t udmaTestCompareRingHwOccDriver(Udma_RingHandle ringHandle, uint32_t cnt);
656 char AppUtils_getChar(void);
657 int32_t AppUtils_getCharTimeout(char *ch, uint32_t msec);
658 int32_t AppUtils_getNum(void);
660 uint32_t AppUtils_getCurTimeInMsec(void);
661 uint32_t AppUtils_getElapsedTimeInMsec(uint32_t startTime);
663 /* ========================================================================== */
664 /*      Internal Function Declarations (Needed for other static inlines)      */
665 /* ========================================================================== */
667 /* None */
669 /* ========================================================================== */
670 /*                       Static Function Definitions                          */
671 /* ========================================================================== */
673 /* None */
675 #ifdef __cplusplus
677 #endif
679 #endif /* #ifndef UDMA_TEST_H_ */