fixed build warning
[keystone-rtos/edma3_lld.git] / examples / edma3_driver / src / sample.h
old mode 100644 (file)
new mode 100755 (executable)
index 0da3f90..2816594
-/*******************************************************************************\r
-**+--------------------------------------------------------------------------+**\r
-**|                            ****                                          |**\r
-**|                            ****                                          |**\r
-**|                            ******o***                                    |**\r
-**|                      ********_///_****                                   |**\r
-**|                      ***** /_//_/ ****                                   |**\r
-**|                       ** ** (__/ ****                                    |**\r
-**|                           *********                                      |**\r
-**|                            ****                                          |**\r
-**|                            ***                                           |**\r
-**|                                                                          |**\r
-**|         Copyright (c) 1998-2006 Texas Instruments Incorporated           |**\r
-**|                        ALL RIGHTS RESERVED                               |**\r
-**|                                                                          |**\r
-**| Permission is hereby granted to licensees of Texas Instruments           |**\r
-**| Incorporated (TI) products to use this computer program for the sole     |**\r
-**| purpose of implementing a licensee product based on TI products.         |**\r
-**| No other rights to reproduce, use, or disseminate this computer          |**\r
-**| program, whether in part or in whole, are granted.                       |**\r
-**|                                                                          |**\r
-**| TI makes no representation or warranties with respect to the             |**\r
-**| performance of this computer program, and specifically disclaims         |**\r
-**| any responsibility for any damages, special or consequential,            |**\r
-**| connected with the use of this program.                                  |**\r
-**|                                                                          |**\r
-**+--------------------------------------------------------------------------+**\r
-*******************************************************************************/\r
-\r
-/** \file   bios6_edma3_drv_sample.h\r
-\r
-    \brief Header file for the Demo application for the EDMA3 Driver.\r
-\r
-    (C) Copyright 2006, Texas Instruments, Inc\r
-\r
-    \version    1.0   Anuj Aggarwal         - Created\r
-\r
- */\r
-\r
-#ifndef _SAMPLE_H_\r
-#define _SAMPLE_H_\r
-\r
-#include <stdio.h>\r
-#include <xdc/std.h>\r
-#include <ti/sysbios/knl/Task.h>\r
-\r
-/* Include EDMA3 Driver */\r
-#include <ti/sdo/edma3/drv/edma3_drv.h>\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-\r
-/* To include linking or chaining test case. */\r
-#define QDMA_TEST_WITH_LINKING      (1u)\r
-/* #undef QDMA_TEST_WITH_LINKING */\r
-\r
-#define EDMA3_TEST_WITH_CHAINING    (1u)\r
-/* #undef EDMA3_TEST_WITH_CHAINING */\r
-\r
-/* To include Poll mode tests */\r
-#define EDMA3_POLL_MODE_TEST        (1u)\r
-/* #undef EDMA3_POLL_MODE_TEST */\r
-\r
-/* To include ping-pong buffer tests */\r
-#define EDMA3_PING_PONG_TEST        (1u)\r
-/* #undef EDMA3_PING_PONG_TEST */\r
-\r
-\r
-/**\r
- * Buffers (src and dest) are needed for mem-2-mem data transfers.\r
- * This define is for the MAXIMUM size and hence the maximum data\r
- * which could be transferred using the sample test cases below.\r
- */\r
-#define MAX_BUFFER_SIZE                     (512u*32u*8u)\r
-\r
-/**\r
- * Cache line size on the underlying SoC. It needs to be modified\r
- * for different cache line sizes, if the Cache is Enabled.\r
- */\r
-#define EDMA3_CACHE_LINE_SIZE_IN_BYTES      (128u)\r
-\r
-/* To enable/disable the cache .*/\r
-#define EDMA3_ENABLE_DCACHE                 (1u)\r
-\r
-/* OPT Field specific defines */\r
-#define OPT_SYNCDIM_SHIFT                   (0x00000002u)\r
-#define OPT_TCC_MASK                        (0x0003F000u)\r
-#define OPT_TCC_SHIFT                       (0x0000000Cu)\r
-#define OPT_ITCINTEN_SHIFT                  (0x00000015u)\r
-#define OPT_TCINTEN_SHIFT                   (0x00000014u)\r
-\r
-\r
-/* Error returned in case of data mismatch */\r
-#define EDMA3_DATA_MISMATCH_ERROR           (-1)\r
-\r
-\r
-\r
-/**\r
- * EDMA3 Driver Handle, which is used to call all the Driver APIs.\r
- * It gets initialized during EDMA3 Initialization.\r
- */\r
-extern EDMA3_DRV_Handle hEdma;\r
-\r
-\r
-extern void callback1 (unsigned int tcc, EDMA3_RM_TccStatus status,\r
-                        void *appData);\r
-\r
-extern void callback2 (unsigned int tcc, EDMA3_RM_TccStatus status,\r
-                        void *appData);\r
-\r
-/* Flag variable to check transfer completion on channel 1 */\r
-extern volatile short irqRaised1;\r
-/* Flag variable to check transfer completion on channel 2 */\r
-extern volatile short irqRaised2;\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.\r
- *\r
- *\r
- *  \param  acnt        [IN]      Number of bytes in an array\r
- *  \param  bcnt        [IN]      Number of arrays in a frame\r
- *  \param  ccnt        [IN]      Number of frames in a block\r
- *  \param  syncType    [IN]      Synchronization type (A/AB Sync)\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result edma3_test(\r
-                    unsigned int acnt,\r
-                    unsigned int bcnt,\r
-                    unsigned int ccnt,\r
-                    EDMA3_DRV_SyncType syncType);\r
-\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA\r
- *              channels, linked to each other.\r
- *\r
- *  \param  acnt        [IN]      Number of bytes in an array\r
- *  \param  bcnt        [IN]      Number of arrays in a frame\r
- *  \param  ccnt        [IN]      Number of frames in a block\r
- *  \param  syncType    [IN]      Synchronization type (A/AB Sync)\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result edma3_test_with_link(\r
-                    unsigned int acnt,\r
-                    unsigned int bcnt,\r
-                    unsigned int ccnt,\r
-                    EDMA3_DRV_SyncType syncType);\r
-\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel.\r
- *\r
- *\r
- *  \param  acnt        [IN]      Number of bytes in an array\r
- *  \param  bcnt        [IN]      Number of arrays in a frame\r
- *  \param  ccnt        [IN]      Number of frames in a block\r
- *  \param  syncType    [IN]      Synchronization type (A/AB Sync)\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result qdma_test(\r
-                    unsigned int acnt,\r
-                    unsigned int bcnt,\r
-                    unsigned int ccnt,\r
-                    EDMA3_DRV_SyncType syncType);\r
-\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 misc test cases.\r
- *              This test case will read/write to some CC registers.\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result edma3_misc_test();\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel,\r
- *              linked to another LINK channel.\r
- *\r
- *  \param  acnt        [IN]      Number of bytes in an array\r
- *  \param  bcnt        [IN]      Number of arrays in a frame\r
- *  \param  ccnt        [IN]      Number of frames in a block\r
- *  \param  syncType    [IN]      Synchronization type (A/AB Sync)\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result qdma_test_with_link(\r
-                    unsigned int acnt,\r
-                    unsigned int bcnt,\r
-                    unsigned int ccnt,\r
-                    EDMA3_DRV_SyncType syncType);\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA channels,\r
- *              chained to each other.\r
- *\r
- *  \param  acnt        [IN]      Number of bytes in an array\r
- *  \param  bcnt        [IN]      Number of arrays in a frame\r
- *  \param  ccnt        [IN]      Number of frames in a block\r
- *  \param  syncType    [IN]      Synchronization type (A/AB Sync)\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result edma3_test_with_chaining(\r
-                                unsigned int acnt,\r
-                                unsigned int bcnt,\r
-                                unsigned int ccnt,\r
-                                EDMA3_DRV_SyncType syncType);\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.\r
- *              This test case doesnot rely on the callback mechanism.\r
- *              Instead, it Polls the IPR register to check the transfer\r
- *              completion status.\r
- *\r
- *  \param  acnt        [IN]      Number of bytes in an array\r
- *  \param  bcnt        [IN]      Number of arrays in a frame\r
- *  \param  ccnt        [IN]      Number of frames in a block\r
- *  \param  syncType    [IN]      Synchronization type (A/AB Sync)\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result edma3_test_poll_mode(\r
-                                unsigned int acnt,\r
-                                unsigned int bcnt,\r
-                                unsigned int ccnt,\r
-                                EDMA3_DRV_SyncType syncType);\r
-\r
-\r
-/**\r
- *  \brief   EDMA3 ping-pong based data copy test case, using a DMA and\r
- *              a link channel.\r
- *\r
- *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code\r
- */\r
-EDMA3_DRV_Result edma3_test_ping_pong_mode();\r
-\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif /* extern "C" */\r
-\r
-#endif  /* _SAMPLE_H_ */\r
-\r
+/*
+* bios6_edma3_drv_sample.h
+*
+* Header file for the Demo application for the EDMA3 Driver.
+*
+* Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
+*
+*
+*  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.
+*
+*/
+
+#ifndef _SAMPLE_H_
+#define _SAMPLE_H_
+
+#include <stdio.h>
+#include <xdc/std.h>
+#include <ti/sysbios/knl/Task.h>
+
+/* Include EDMA3 Driver */
+#include <ti/sdo/edma3/drv/sample/bios6_edma3_drv_sample.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+    /* MAX ACOUNT */
+#define MAX_ACOUNT                  (64u)
+    /* MAX BCOUNT */
+#define MAX_BCOUNT                  (1u)
+    /* MAX CCOUNT */
+#define MAX_CCOUNT                  (1u)
+    /**
+    * Buffers (src and dest) are needed for mem-2-mem data transfers.
+    * This define is for the MAXIMUM size and hence the maximum data
+    * which could be transferred using the sample test cases below.
+    */
+#define MAX_BUFFER_SIZE             (MAX_ACOUNT * MAX_BCOUNT * MAX_CCOUNT)
+
+#ifndef BUILD_TDA2XX_MPU
+    /* To enable/disable the cache .*/
+#define EDMA3_ENABLE_DCACHE                 (1u)
+#endif
+
+    /* OPT Field specific defines */
+#define OPT_SYNCDIM_SHIFT                   (0x00000002u)
+#define OPT_TCC_MASK                        (0x0003F000u)
+#define OPT_TCC_SHIFT                       (0x0000000Cu)
+#define OPT_ITCINTEN_SHIFT                  (0x00000015u)
+#define OPT_TCINTEN_SHIFT                   (0x00000014u)
+
+    /**
+    * EDMA3 Driver Handle, which is used to call all the Driver APIs.
+    * It gets initialized during EDMA3 Initialization.
+    */
+    extern EDMA3_DRV_Handle hEdma[];
+
+    extern void callback1 (uint32_t tcc, EDMA3_RM_TccStatus status,
+        void *appData);
+
+    extern void callback2 (uint32_t tcc, EDMA3_RM_TccStatus status,
+        void *appData);
+
+    extern signed char*  getGlobalAddr(signed char* addr);
+    /* Flag variable to check transfer completion on channel 1 */
+    extern volatile short irqRaised1;
+    /* Flag variable to check transfer completion on channel 2 */
+    extern volatile short irqRaised2;
+
+#define MAX_NUM_EDMA_INSTANCES  5
+
+    /* Define to verify the default RM config.
+    * Additional configuration required. Update the 
+    * gblCfgReqdArray[] to reflect the master/slave config.
+    * In the case of multiple instances default configuration
+    * may require more than one cores other than core 0 to be master. 
+    * #define EDMA3_DRV_USE_DEF_RM_CFG 
+    */
+
+#define GLOBAL_ADDR(addr) (getGlobalAddr(addr))
+
+    /**
+    *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.
+    *
+    *
+    *  \param  acnt        [IN]      Number of bytes in an array
+    *  \param  bcnt        [IN]      Number of arrays in a frame
+    *  \param  ccnt        [IN]      Number of frames in a block
+    *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result edma3_test(
+        EDMA3_DRV_Handle hEdma,
+        uint32_t acnt,
+        uint32_t bcnt,
+        uint32_t ccnt,
+        EDMA3_DRV_SyncType syncType);
+
+
+
+    /**
+    *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA
+    *              channels, linked to each other.
+    *
+    *  \param  acnt        [IN]      Number of bytes in an array
+    *  \param  bcnt        [IN]      Number of arrays in a frame
+    *  \param  ccnt        [IN]      Number of frames in a block
+    *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result edma3_test_with_link(
+        EDMA3_DRV_Handle hEdma,
+        uint32_t acnt,
+        uint32_t bcnt,
+        uint32_t ccnt,
+        EDMA3_DRV_SyncType syncType);
+
+
+
+    /**
+    *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel.
+    *
+    *
+    *  \param  acnt        [IN]      Number of bytes in an array
+    *  \param  bcnt        [IN]      Number of arrays in a frame
+    *  \param  ccnt        [IN]      Number of frames in a block
+    *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result qdma_test(
+        EDMA3_DRV_Handle hEdma,
+        uint32_t acnt,
+        uint32_t bcnt,
+        uint32_t ccnt,
+        EDMA3_DRV_SyncType syncType);
+
+
+
+    /**
+    *  \brief   EDMA3 misc test cases.
+    *              This test case will read/write to some CC registers.
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result edma3_misc_test(EDMA3_DRV_Handle hEdma);
+
+
+    /**
+    *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel,
+    *              linked to another LINK channel.
+    *
+    *  \param  acnt        [IN]      Number of bytes in an array
+    *  \param  bcnt        [IN]      Number of arrays in a frame
+    *  \param  ccnt        [IN]      Number of frames in a block
+    *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result qdma_test_with_link(
+        EDMA3_DRV_Handle hEdma,
+        uint32_t acnt,
+        uint32_t bcnt,
+        uint32_t ccnt,
+        EDMA3_DRV_SyncType syncType);
+
+
+    /**
+    *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA channels,
+    *              chained to each other.
+    *
+    *  \param  acnt        [IN]      Number of bytes in an array
+    *  \param  bcnt        [IN]      Number of arrays in a frame
+    *  \param  ccnt        [IN]      Number of frames in a block
+    *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result edma3_test_with_chaining(
+        EDMA3_DRV_Handle hEdma,
+        uint32_t acnt,
+        uint32_t bcnt,
+        uint32_t ccnt,
+        EDMA3_DRV_SyncType syncType);
+
+
+    /**
+    *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.
+    *              This test case doesnot rely on the callback mechanism.
+    *              Instead, it Polls the IPR register to check the transfer
+    *              completion status.
+    *
+    *  \param  acnt        [IN]      Number of bytes in an array
+    *  \param  bcnt        [IN]      Number of arrays in a frame
+    *  \param  ccnt        [IN]      Number of frames in a block
+    *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result edma3_test_poll_mode(
+        EDMA3_DRV_Handle hEdma,
+        uint32_t acnt,
+        uint32_t bcnt,
+        uint32_t ccnt,
+        EDMA3_DRV_SyncType syncType);
+
+
+    /**
+    *  \brief   EDMA3 ping-pong based data copy test case, using a DMA and
+    *              a link channel.
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result edma3_test_ping_pong_mode(EDMA3_DRV_Handle hEdma);
+
+    /**
+    *  \brief   EDMA3 mem-to-mem data copy test case with user requested paRAMId
+    *           using a DMA channel.
+    *           This test case doesnot rely on the callback mechanism.
+    *           Instead, it Polls the IPR register to check the transfer
+    *           completion status.
+    *
+    *  \param  edma3Instance [IN]    EDMA3 Instance number
+    *  \param  acnt        [IN]      Number of bytes in an array
+    *  \param  bcnt        [IN]      Number of arrays in a frame
+    *  \param  ccnt        [IN]      Number of frames in a block
+    *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
+    *
+    *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
+    */
+    EDMA3_DRV_Result edma3_test_user_req_paRAMId(
+                                        EDMA3_DRV_Handle hEdma,
+                                        uint32_t edmaInstance,
+                                        uint32_t acnt,
+                                        uint32_t bcnt,
+                                        uint32_t ccnt,
+                                        EDMA3_DRV_SyncType syncType);
+
+#ifdef __cplusplus
+}
+#endif /* extern "C" */
+
+#endif  /* _SAMPLE_H_ */