EDMA3 driver sample example made generic
[keystone-rtos/edma3_lld.git] / examples / edma3_driver / src / sample.h
1 /*
2  * bios6_edma3_drv_sample.h
3  *
4  * Header file for the Demo application for the EDMA3 Driver.
5  *
6  * Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
7  *
8  *
9  *  Redistribution and use in source and binary forms, with or without
10  *  modification, are permitted provided that the following conditions
11  *  are met:
12  *
13  *    Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  *
16  *    Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the
19  *    distribution.
20  *
21  *    Neither the name of Texas Instruments Incorporated nor the names of
22  *    its contributors may be used to endorse or promote products derived
23  *    from this software without specific prior written permission.
24  *
25  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26  *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27  *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28  *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29  *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30  *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31  *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32  *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33  *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36  *
37 */
39 #ifndef _SAMPLE_H_
40 #define _SAMPLE_H_
42 #include <stdio.h>
43 #include <xdc/std.h>
44 #include <ti/sysbios/knl/Task.h>
46 /* Include EDMA3 Driver */
47 #include <ti/sdo/edma3/drv/sample/bios6_edma3_drv_sample.h>
49 #ifdef __cplusplus
50 extern "C" {
51 #endif
53 /* MAX ACOUNT */
54 #define MAX_ACOUNT                                      (64u)
55 /* MAX BCOUNT */
56 #define MAX_BCOUNT                                      (1u)
57 /* MAX CCOUNT */
58 #define MAX_CCOUNT                                      (1u)
59 /**
60  * Buffers (src and dest) are needed for mem-2-mem data transfers.
61  * This define is for the MAXIMUM size and hence the maximum data
62  * which could be transferred using the sample test cases below.
63  */
64 #define MAX_BUFFER_SIZE                         (MAX_ACOUNT * MAX_BCOUNT * MAX_CCOUNT)
66 /* To enable/disable the cache .*/
67 #define EDMA3_ENABLE_DCACHE                 (1u)
69 /* OPT Field specific defines */
70 #define OPT_SYNCDIM_SHIFT                   (0x00000002u)
71 #define OPT_TCC_MASK                        (0x0003F000u)
72 #define OPT_TCC_SHIFT                       (0x0000000Cu)
73 #define OPT_ITCINTEN_SHIFT                  (0x00000015u)
74 #define OPT_TCINTEN_SHIFT                   (0x00000014u)
76 /**
77  * EDMA3 Driver Handle, which is used to call all the Driver APIs.
78  * It gets initialized during EDMA3 Initialization.
79  */
80 extern EDMA3_DRV_Handle hEdma[];
82 extern void callback1 (unsigned int tcc, EDMA3_RM_TccStatus status,
83                         void *appData);
85 extern void callback2 (unsigned int tcc, EDMA3_RM_TccStatus status,
86                         void *appData);
88 /* Flag variable to check transfer completion on channel 1 */
89 extern volatile short irqRaised1;
90 /* Flag variable to check transfer completion on channel 2 */
91 extern volatile short irqRaised2;
94 /**
95  *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.
96  *
97  *
98  *  \param  acnt        [IN]      Number of bytes in an array
99  *  \param  bcnt        [IN]      Number of arrays in a frame
100  *  \param  ccnt        [IN]      Number of frames in a block
101  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
102  *
103  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
104  */
105 EDMA3_DRV_Result edma3_test(
106                     EDMA3_DRV_Handle hEdma,
107                     unsigned int acnt,
108                     unsigned int bcnt,
109                     unsigned int ccnt,
110                     EDMA3_DRV_SyncType syncType);
114 /**
115  *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA
116  *              channels, linked to each other.
117  *
118  *  \param  acnt        [IN]      Number of bytes in an array
119  *  \param  bcnt        [IN]      Number of arrays in a frame
120  *  \param  ccnt        [IN]      Number of frames in a block
121  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
122  *
123  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
124  */
125 EDMA3_DRV_Result edma3_test_with_link(
126                     EDMA3_DRV_Handle hEdma,
127                     unsigned int acnt,
128                     unsigned int bcnt,
129                     unsigned int ccnt,
130                     EDMA3_DRV_SyncType syncType);
134 /**
135  *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel.
136  *
137  *
138  *  \param  acnt        [IN]      Number of bytes in an array
139  *  \param  bcnt        [IN]      Number of arrays in a frame
140  *  \param  ccnt        [IN]      Number of frames in a block
141  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
142  *
143  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
144  */
145 EDMA3_DRV_Result qdma_test(
146                     EDMA3_DRV_Handle hEdma,
147                     unsigned int acnt,
148                     unsigned int bcnt,
149                     unsigned int ccnt,
150                     EDMA3_DRV_SyncType syncType);
154 /**
155  *  \brief   EDMA3 misc test cases.
156  *              This test case will read/write to some CC registers.
157  *
158  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
159  */
160 EDMA3_DRV_Result edma3_misc_test(EDMA3_DRV_Handle hEdma);
163 /**
164  *  \brief   EDMA3 mem-to-mem data copy test case, using a QDMA channel,
165  *              linked to another LINK channel.
166  *
167  *  \param  acnt        [IN]      Number of bytes in an array
168  *  \param  bcnt        [IN]      Number of arrays in a frame
169  *  \param  ccnt        [IN]      Number of frames in a block
170  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
171  *
172  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
173  */
174 EDMA3_DRV_Result qdma_test_with_link(
175                     EDMA3_DRV_Handle hEdma,
176                     unsigned int acnt,
177                     unsigned int bcnt,
178                     unsigned int ccnt,
179                     EDMA3_DRV_SyncType syncType);
182 /**
183  *  \brief   EDMA3 mem-to-mem data copy test case, using two DMA channels,
184  *              chained to each other.
185  *
186  *  \param  acnt        [IN]      Number of bytes in an array
187  *  \param  bcnt        [IN]      Number of arrays in a frame
188  *  \param  ccnt        [IN]      Number of frames in a block
189  *  \param  syncType    [IN]      Synchronization type (A/AB Sync)
190  *
191  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
192  */
193 EDMA3_DRV_Result edma3_test_with_chaining(
194                     EDMA3_DRV_Handle hEdma,
195                                 unsigned int acnt,
196                                 unsigned int bcnt,
197                                 unsigned int ccnt,
198                                 EDMA3_DRV_SyncType syncType);
201 /**
202  *  \brief   EDMA3 mem-to-mem data copy test case, using a DMA channel.
203  *              This test case doesnot rely on the callback mechanism.
204  *              Instead, it Polls the IPR register to check the transfer
205  *              completion status.
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_poll_mode(
215                     EDMA3_DRV_Handle hEdma,
216                                 unsigned int acnt,
217                                 unsigned int bcnt,
218                                 unsigned int ccnt,
219                                 EDMA3_DRV_SyncType syncType);
222 /**
223  *  \brief   EDMA3 ping-pong based data copy test case, using a DMA and
224  *              a link channel.
225  *
226  *  \return  EDMA3_DRV_SOK or EDMA3_DRV Error Code
227  */
228 EDMA3_DRV_Result edma3_test_ping_pong_mode(EDMA3_DRV_Handle hEdma);
230 #ifdef __cplusplus
232 #endif /* extern "C" */
234 #endif  /* _SAMPLE_H_ */