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