Changing dos to unix format
[keystone-rtos/edma3_lld.git] / examples / edma3_driver / src / sample.h
1 /*******************************************************************************
2 **+--------------------------------------------------------------------------+**
3 **|                            ****                                          |**
4 **|                            ****                                          |**
5 **|                            ******o***                                    |**
6 **|                      ********_///_****                                   |**
7 **|                      ***** /_//_/ ****                                   |**
8 **|                       ** ** (__/ ****                                    |**
9 **|                           *********                                      |**
10 **|                            ****                                          |**
11 **|                            ***                                           |**
12 **|                                                                          |**
13 **|         Copyright (c) 1998-2006 Texas Instruments Incorporated           |**
14 **|                        ALL RIGHTS RESERVED                               |**
15 **|                                                                          |**
16 **| Permission is hereby granted to licensees of Texas Instruments           |**
17 **| Incorporated (TI) products to use this computer program for the sole     |**
18 **| purpose of implementing a licensee product based on TI products.         |**
19 **| No other rights to reproduce, use, or disseminate this computer          |**
20 **| program, whether in part or in whole, are granted.                       |**
21 **|                                                                          |**
22 **| TI makes no representation or warranties with respect to the             |**
23 **| performance of this computer program, and specifically disclaims         |**
24 **| any responsibility for any damages, special or consequential,            |**
25 **| connected with the use of this program.                                  |**
26 **|                                                                          |**
27 **+--------------------------------------------------------------------------+**
28 *******************************************************************************/
30 /** \file   bios6_edma3_drv_sample.h
32     \brief Header file for the Demo application for the EDMA3 Driver.
34     (C) Copyright 2006, Texas Instruments, Inc
36     \version    1.0   Anuj Aggarwal         - Created
38  */
40 #ifndef _SAMPLE_H_
41 #define _SAMPLE_H_
43 #include <stdio.h>
44 #include <xdc/std.h>
45 #include <ti/sysbios/knl/Task.h>
47 /* Include EDMA3 Driver */
48 #include <ti/sdo/edma3/drv/edma3_drv.h>
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
55 /* To include linking or chaining test case. */
56 #define QDMA_TEST_WITH_LINKING      (1u)
57 /* #undef QDMA_TEST_WITH_LINKING */
59 #define EDMA3_TEST_WITH_CHAINING    (1u)
60 /* #undef EDMA3_TEST_WITH_CHAINING */
62 /* To include Poll mode tests */
63 #define EDMA3_POLL_MODE_TEST        (1u)
64 /* #undef EDMA3_POLL_MODE_TEST */
66 /* To include ping-pong buffer tests */
67 #define EDMA3_PING_PONG_TEST        (1u)
68 /* #undef EDMA3_PING_PONG_TEST */
71 /**
72  * Buffers (src and dest) are needed for mem-2-mem data transfers.
73  * This define is for the MAXIMUM size and hence the maximum data
74  * which could be transferred using the sample test cases below.
75  */
76 #define MAX_BUFFER_SIZE                     (512u*32u*8u)
78 /**
79  * Cache line size on the underlying SoC. It needs to be modified
80  * for different cache line sizes, if the Cache is Enabled.
81  */
82 #define EDMA3_CACHE_LINE_SIZE_IN_BYTES      (128u)
84 /* To enable/disable the cache .*/
85 #define EDMA3_ENABLE_DCACHE                 (1u)
87 /* OPT Field specific defines */
88 #define OPT_SYNCDIM_SHIFT                   (0x00000002u)
89 #define OPT_TCC_MASK                        (0x0003F000u)
90 #define OPT_TCC_SHIFT                       (0x0000000Cu)
91 #define OPT_ITCINTEN_SHIFT                  (0x00000015u)
92 #define OPT_TCINTEN_SHIFT                   (0x00000014u)
95 /* Error returned in case of data mismatch */
96 #define EDMA3_DATA_MISMATCH_ERROR           (-1)
100 /**
101  * EDMA3 Driver Handle, which is used to call all the Driver APIs.
102  * It gets initialized during EDMA3 Initialization.
103  */
104 extern EDMA3_DRV_Handle hEdma;
107 extern void callback1 (unsigned int tcc, EDMA3_RM_TccStatus status,
108                         void *appData);
110 extern void callback2 (unsigned int tcc, EDMA3_RM_TccStatus status,
111                         void *appData);
113 /* Flag variable to check transfer completion on channel 1 */
114 extern volatile short irqRaised1;
115 /* Flag variable to check transfer completion on channel 2 */
116 extern volatile short irqRaised2;
119 /**
120  *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.
121  *
122  *
123  *  \param  acnt        [IN]      Number of bytes in an array
124  *  \param  bcnt        [IN]      Number of arrays in a frame
125  *  \param  ccnt        [IN]      Number of frames in a block
126  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
127  *
128  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
129  */
130 EDMA3_DRV_Result edma3_test(
131                     unsigned int acnt,
132                     unsigned int bcnt,
133                     unsigned int ccnt,
134                     EDMA3_DRV_SyncType syncType);
138 /**
139  *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA
140  *              channels, linked to each other.
141  *
142  *  \param  acnt        [IN]      Number of bytes in an array
143  *  \param  bcnt        [IN]      Number of arrays in a frame
144  *  \param  ccnt        [IN]      Number of frames in a block
145  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
146  *
147  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
148  */
149 EDMA3_DRV_Result edma3_test_with_link(
150                     unsigned int acnt,
151                     unsigned int bcnt,
152                     unsigned int ccnt,
153                     EDMA3_DRV_SyncType syncType);
157 /**
158  *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel.
159  *
160  *
161  *  \param  acnt        [IN]      Number of bytes in an array
162  *  \param  bcnt        [IN]      Number of arrays in a frame
163  *  \param  ccnt        [IN]      Number of frames in a block
164  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
165  *
166  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
167  */
168 EDMA3_DRV_Result qdma_test(
169                     unsigned int acnt,
170                     unsigned int bcnt,
171                     unsigned int ccnt,
172                     EDMA3_DRV_SyncType syncType);
176 /**
177  *  \brief   EDMA3 misc test cases.
178  *              This test case will read/write to some CC registers.
179  *
180  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
181  */
182 EDMA3_DRV_Result edma3_misc_test();
185 /**
186  *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel,
187  *              linked to another LINK channel.
188  *
189  *  \param  acnt        [IN]      Number of bytes in an array
190  *  \param  bcnt        [IN]      Number of arrays in a frame
191  *  \param  ccnt        [IN]      Number of frames in a block
192  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
193  *
194  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
195  */
196 EDMA3_DRV_Result qdma_test_with_link(
197                     unsigned int acnt,
198                     unsigned int bcnt,
199                     unsigned int ccnt,
200                     EDMA3_DRV_SyncType syncType);
203 /**
204  *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA channels,
205  *              chained to each other.
206  *
207  *  \param  acnt        [IN]      Number of bytes in an array
208  *  \param  bcnt        [IN]      Number of arrays in a frame
209  *  \param  ccnt        [IN]      Number of frames in a block
210  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
211  *
212  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
213  */
214 EDMA3_DRV_Result edma3_test_with_chaining(
215                                 unsigned int acnt,
216                                 unsigned int bcnt,
217                                 unsigned int ccnt,
218                                 EDMA3_DRV_SyncType syncType);
221 /**
222  *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.
223  *              This test case doesnot rely on the callback mechanism.
224  *              Instead, it Polls the IPR register to check the transfer
225  *              completion status.
226  *
227  *  \param  acnt        [IN]      Number of bytes in an array
228  *  \param  bcnt        [IN]      Number of arrays in a frame
229  *  \param  ccnt        [IN]      Number of frames in a block
230  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
231  *
232  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
233  */
234 EDMA3_DRV_Result edma3_test_poll_mode(
235                                 unsigned int acnt,
236                                 unsigned int bcnt,
237                                 unsigned int ccnt,
238                                 EDMA3_DRV_SyncType syncType);
241 /**
242  *  \brief   EDMA3 ping-pong based data copy test case, using a DMA and
243  *              a link channel.
244  *
245  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
246  */
247 EDMA3_DRV_Result edma3_test_ping_pong_mode();
250 #ifdef __cplusplus
252 #endif /* extern "C" */
254 #endif  /* _SAMPLE_H_ */