]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/Common/drivers/LuminaryMicro/hw_udma.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / Common / drivers / LuminaryMicro / hw_udma.h
1 //*****************************************************************************\r
2 //\r
3 // hw_udma.h - Macros for use in accessing the UDMA registers.\r
4 //\r
5 // Copyright (c) 2007-2008 Luminary Micro, Inc.  All rights reserved.\r
6 // \r
7 // Software License Agreement\r
8 // \r
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and\r
10 // exclusively on LMI's microcontroller products.\r
11 // \r
12 // The software is owned by LMI and/or its suppliers, and is protected under\r
13 // applicable copyright laws.  All rights are reserved.  You may not combine\r
14 // this software with "viral" open-source software in order to form a larger\r
15 // program.  Any use in violation of the foregoing restrictions may subject\r
16 // the user to criminal sanctions under applicable laws, as well as to civil\r
17 // liability for the breach of the terms and conditions of this license.\r
18 // \r
19 // THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED\r
20 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF\r
21 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.\r
22 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR\r
23 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.\r
24 // \r
25 // This is part of revision 2523 of the Stellaris Peripheral Driver Library.\r
26 //\r
27 //*****************************************************************************\r
28 \r
29 #ifndef __HW_UDMA_H__\r
30 #define __HW_UDMA_H__\r
31 \r
32 //*****************************************************************************\r
33 //\r
34 // The following are defines for the Micro Direct Memory Access (uDMA) offsets.\r
35 //\r
36 //*****************************************************************************\r
37 #define UDMA_STAT               0x400FF000  // DMA Status\r
38 #define UDMA_CFG                0x400FF004  // DMA Configuration\r
39 #define UDMA_CTLBASE            0x400FF008  // DMA Channel Control Base Pointer\r
40 #define UDMA_ALTBASE            0x400FF00C  // DMA Alternate Channel Control\r
41                                             // Base Pointer\r
42 #define UDMA_WAITSTAT           0x400FF010  // DMA Channel Wait on Request\r
43                                             // Status\r
44 #define UDMA_SWREQ              0x400FF014  // DMA Channel Software Request\r
45 #define UDMA_USEBURSTSET        0x400FF018  // DMA Channel Useburst Set\r
46 #define UDMA_USEBURSTCLR        0x400FF01C  // DMA Channel Useburst Clear\r
47 #define UDMA_REQMASKSET         0x400FF020  // DMA Channel Request Mask Set\r
48 #define UDMA_REQMASKCLR         0x400FF024  // DMA Channel Request Mask Clear\r
49 #define UDMA_ENASET             0x400FF028  // DMA Channel Enable Set\r
50 #define UDMA_ENACLR             0x400FF02C  // DMA Channel Enable Clear\r
51 #define UDMA_ALTSET             0x400FF030  // DMA Channel Primary Alternate\r
52                                             // Set\r
53 #define UDMA_ALTCLR             0x400FF034  // DMA Channel Primary Alternate\r
54                                             // Clear\r
55 #define UDMA_PRIOSET            0x400FF038  // DMA Channel Priority Set\r
56 #define UDMA_PRIOCLR            0x400FF03C  // DMA Channel Priority Clear\r
57 #define UDMA_ERRCLR             0x400FF04C  // DMA Bus Error Clear\r
58 \r
59 //*****************************************************************************\r
60 //\r
61 // Micro Direct Memory Access (uDMA) offsets.\r
62 //\r
63 //*****************************************************************************\r
64 #define UDMA_O_SRCENDP          0x00000000  // DMA Channel Source Address End\r
65                                             // Pointer\r
66 #define UDMA_O_DSTENDP          0x00000004  // DMA Channel Destination Address\r
67                                             // End Pointer\r
68 #define UDMA_O_CHCTL            0x00000008  // DMA Channel Control Word\r
69 \r
70 //*****************************************************************************\r
71 //\r
72 // The following are defines for the bit fields in the UDMA_O_SRCENDP register.\r
73 //\r
74 //*****************************************************************************\r
75 #define UDMA_SRCENDP_ADDR_M     0xFFFFFFFF  // Source Address End Pointer.\r
76 #define UDMA_SRCENDP_ADDR_S     0\r
77 \r
78 //*****************************************************************************\r
79 //\r
80 // The following are defines for the bit fields in the UDMA_STAT register.\r
81 //\r
82 //*****************************************************************************\r
83 #define UDMA_STAT_DMACHANS_M    0x001F0000  // Available DMA Channels Minus 1.\r
84 #define UDMA_STAT_STATE_M       0x000000F0  // Control State Machine State.\r
85 #define UDMA_STAT_STATE_IDLE    0x00000000  // Idle\r
86 #define UDMA_STAT_STATE_RD_CTRL 0x00000010  // Reading channel controller data\r
87 #define UDMA_STAT_STATE_RD_SRCENDP \\r
88                                 0x00000020  // Reading source end pointer\r
89 #define UDMA_STAT_STATE_RD_DSTENDP \\r
90                                 0x00000030  // Reading destination end pointer\r
91 #define UDMA_STAT_STATE_RD_SRCDAT \\r
92                                 0x00000040  // Reading source data\r
93 #define UDMA_STAT_STATE_WR_DSTDAT \\r
94                                 0x00000050  // Writing destination data\r
95 #define UDMA_STAT_STATE_WAIT    0x00000060  // Waiting for DMA request to clear\r
96 #define UDMA_STAT_STATE_WR_CTRL 0x00000070  // Writing channel controller data\r
97 #define UDMA_STAT_STATE_STALL   0x00000080  // Stalled\r
98 #define UDMA_STAT_STATE_DONE    0x00000090  // Done\r
99 #define UDMA_STAT_STATE_UNDEF   0x000000A0  // Undefined\r
100 #define UDMA_STAT_MASTEN        0x00000001  // Master Enable.\r
101 #define UDMA_STAT_DMACHANS_S    16\r
102 \r
103 //*****************************************************************************\r
104 //\r
105 // The following are defines for the bit fields in the UDMA_O_DSTENDP register.\r
106 //\r
107 //*****************************************************************************\r
108 #define UDMA_DSTENDP_ADDR_M     0xFFFFFFFF  // Destination Address End Pointer.\r
109 #define UDMA_DSTENDP_ADDR_S     0\r
110 \r
111 //*****************************************************************************\r
112 //\r
113 // The following are defines for the bit fields in the UDMA_CFG register.\r
114 //\r
115 //*****************************************************************************\r
116 #define UDMA_CFG_MASTEN         0x00000001  // Controller Master Enable.\r
117 \r
118 //*****************************************************************************\r
119 //\r
120 // The following are defines for the bit fields in the UDMA_CTLBASE register.\r
121 //\r
122 //*****************************************************************************\r
123 #define UDMA_CTLBASE_ADDR_M     0xFFFFFC00  // Channel Control Base Address.\r
124 #define UDMA_CTLBASE_ADDR_S     10\r
125 \r
126 //*****************************************************************************\r
127 //\r
128 // The following are defines for the bit fields in the UDMA_O_CHCTL register.\r
129 //\r
130 //*****************************************************************************\r
131 #define UDMA_CHCTL_DSTINC_M     0xC0000000  // Destination Address Increment.\r
132 #define UDMA_CHCTL_DSTINC_8     0x00000000  // Byte\r
133 #define UDMA_CHCTL_DSTINC_16    0x40000000  // Half-word\r
134 #define UDMA_CHCTL_DSTINC_32    0x80000000  // Word\r
135 #define UDMA_CHCTL_DSTINC_NONE  0xC0000000  // No increment\r
136 #define UDMA_CHCTL_DSTSIZE_M    0x30000000  // Destination Data Size.\r
137 #define UDMA_CHCTL_DSTSIZE_8    0x00000000  // Byte\r
138 #define UDMA_CHCTL_DSTSIZE_16   0x10000000  // Half-word\r
139 #define UDMA_CHCTL_DSTSIZE_32   0x20000000  // Word\r
140 #define UDMA_CHCTL_SRCINC_M     0x0C000000  // Source Address Increment.\r
141 #define UDMA_CHCTL_SRCINC_8     0x00000000  // Byte\r
142 #define UDMA_CHCTL_SRCINC_16    0x04000000  // Half-word\r
143 #define UDMA_CHCTL_SRCINC_32    0x08000000  // Word\r
144 #define UDMA_CHCTL_SRCINC_NONE  0x0C000000  // No increment\r
145 #define UDMA_CHCTL_SRCSIZE_M    0x03000000  // Source Data Size.\r
146 #define UDMA_CHCTL_SRCSIZE_8    0x00000000  // Byte\r
147 #define UDMA_CHCTL_SRCSIZE_16   0x01000000  // Half-word\r
148 #define UDMA_CHCTL_SRCSIZE_32   0x02000000  // Word\r
149 #define UDMA_CHCTL_ARBSIZE_M    0x0003C000  // Arbitration Size.\r
150 #define UDMA_CHCTL_ARBSIZE_1    0x00000000  // 1 Transfer\r
151 #define UDMA_CHCTL_ARBSIZE_2    0x00004000  // 2 Transfers\r
152 #define UDMA_CHCTL_ARBSIZE_4    0x00008000  // 4 Transfers\r
153 #define UDMA_CHCTL_ARBSIZE_8    0x0000C000  // 8 Transfers\r
154 #define UDMA_CHCTL_ARBSIZE_16   0x00010000  // 16 Transfers\r
155 #define UDMA_CHCTL_ARBSIZE_32   0x00014000  // 32 Transfers\r
156 #define UDMA_CHCTL_ARBSIZE_64   0x00018000  // 64 Transfers\r
157 #define UDMA_CHCTL_ARBSIZE_128  0x0001C000  // 128 Transfers\r
158 #define UDMA_CHCTL_ARBSIZE_256  0x00020000  // 256 Transfers\r
159 #define UDMA_CHCTL_ARBSIZE_512  0x00024000  // 512 Transfers\r
160 #define UDMA_CHCTL_ARBSIZE_1024 0x00028000  // 1024 Transfers\r
161 #define UDMA_CHCTL_XFERSIZE_M   0x00003FF0  // Transfer Size (minus 1).\r
162 #define UDMA_CHCTL_NXTUSEBURST  0x00000008  // Next Useburst.\r
163 #define UDMA_CHCTL_XFERMODE_M   0x00000007  // DMA Transfer Mode.\r
164 #define UDMA_CHCTL_XFERMODE_STOP \\r
165                                 0x00000000  // Stop\r
166 #define UDMA_CHCTL_XFERMODE_BASIC \\r
167                                 0x00000001  // Basic\r
168 #define UDMA_CHCTL_XFERMODE_AUTO \\r
169                                 0x00000002  // Auto-Request\r
170 #define UDMA_CHCTL_XFERMODE_PINGPONG \\r
171                                 0x00000003  // Ping-Pong\r
172 #define UDMA_CHCTL_XFERMODE_MEM_SG \\r
173                                 0x00000004  // Memory Scatter-Gather\r
174 #define UDMA_CHCTL_XFERMODE_MEM_SGA \\r
175                                 0x00000005  // Alternate Memory Scatter-Gather\r
176 #define UDMA_CHCTL_XFERMODE_PER_SG \\r
177                                 0x00000006  // Peripheral Scatter-Gather\r
178 #define UDMA_CHCTL_XFERMODE_PER_SGA \\r
179                                 0x00000007  // Alternate Peripheral\r
180                                             // Scatter-Gather\r
181 #define UDMA_CHCTL_XFERSIZE_S   4\r
182 \r
183 //*****************************************************************************\r
184 //\r
185 // The following are defines for the bit fields in the UDMA_ALTBASE register.\r
186 //\r
187 //*****************************************************************************\r
188 #define UDMA_ALTBASE_ADDR_M     0xFFFFFFFF  // Alternate Channel Address\r
189                                             // Pointer.\r
190 #define UDMA_ALTBASE_ADDR_S     0\r
191 \r
192 //*****************************************************************************\r
193 //\r
194 // The following are defines for the bit fields in the UDMA_WAITSTAT register.\r
195 //\r
196 //*****************************************************************************\r
197 #define UDMA_WAITSTAT_WAITREQ_M 0xFFFFFFFF  // Channel [n] Wait Status.\r
198 #define UDMA_WAITSTAT_WAITREQ_S 0\r
199 \r
200 //*****************************************************************************\r
201 //\r
202 // The following are defines for the bit fields in the UDMA_SWREQ register.\r
203 //\r
204 //*****************************************************************************\r
205 #define UDMA_SWREQ_M            0xFFFFFFFF  // Channel [n] Software Request.\r
206 #define UDMA_SWREQ_S            0\r
207 \r
208 //*****************************************************************************\r
209 //\r
210 // The following are defines for the bit fields in the UDMA_USEBURSTSET\r
211 // register.\r
212 //\r
213 //*****************************************************************************\r
214 #define UDMA_USEBURSTSET_SET_M  0xFFFFFFFF  // Channel [n] Useburst Set.\r
215 #define UDMA_USEBURSTSET_SET__0 0x00000000  // No Effect\r
216 #define UDMA_USEBURSTSET_SET__1 0x00000001  // Burst Only\r
217 \r
218 //*****************************************************************************\r
219 //\r
220 // The following are defines for the bit fields in the UDMA_USEBURSTCLR\r
221 // register.\r
222 //\r
223 //*****************************************************************************\r
224 #define UDMA_USEBURSTCLR_CLR_M  0xFFFFFFFF  // Channel [n] Useburst Clear.\r
225 #define UDMA_USEBURSTCLR_CLR__0 0x00000000  // No Effect\r
226 #define UDMA_USEBURSTCLR_CLR__1 0x00000001  // Single and Burst\r
227 \r
228 //*****************************************************************************\r
229 //\r
230 // The following are defines for the bit fields in the UDMA_REQMASKSET\r
231 // register.\r
232 //\r
233 //*****************************************************************************\r
234 #define UDMA_REQMASKSET_SET_M   0xFFFFFFFF  // Channel [n] Request Mask Set.\r
235 #define UDMA_REQMASKSET_SET__0  0x00000000  // No Effect\r
236 #define UDMA_REQMASKSET_SET__1  0x00000001  // Masked\r
237 \r
238 //*****************************************************************************\r
239 //\r
240 // The following are defines for the bit fields in the UDMA_REQMASKCLR\r
241 // register.\r
242 //\r
243 //*****************************************************************************\r
244 #define UDMA_REQMASKCLR_CLR_M   0xFFFFFFFF  // Channel [n] Request Mask Clear.\r
245 #define UDMA_REQMASKCLR_CLR__0  0x00000000  // No Effect\r
246 #define UDMA_REQMASKCLR_CLR__1  0x00000001  // Clear Mask\r
247 \r
248 //*****************************************************************************\r
249 //\r
250 // The following are defines for the bit fields in the UDMA_ENASET register.\r
251 //\r
252 //*****************************************************************************\r
253 #define UDMA_ENASET_SET_M       0xFFFFFFFF  // Channel [n] Enable Set.\r
254 #define UDMA_ENASET_SET__0      0x00000000  // Disabled\r
255 #define UDMA_ENASET_SET__1      0x00000001  // Enabled\r
256 #define UDMA_ENASET_CHENSET_M   0xFFFFFFFF  // Channel [n] Enable Set.\r
257 #define UDMA_ENASET_CHENSET__0  0x00000000  // No Effect\r
258 #define UDMA_ENASET_CHENSET__1  0x00000001  // Enable\r
259 \r
260 //*****************************************************************************\r
261 //\r
262 // The following are defines for the bit fields in the UDMA_ENACLR register.\r
263 //\r
264 //*****************************************************************************\r
265 #define UDMA_ENACLR_CLR_M       0xFFFFFFFF  // Clear Channel [n] Enable.\r
266 #define UDMA_ENACLR_CLR__0      0x00000000  // No Effect\r
267 #define UDMA_ENACLR_CLR__1      0x00000001  // Disable\r
268 \r
269 //*****************************************************************************\r
270 //\r
271 // The following are defines for the bit fields in the UDMA_ALTSET register.\r
272 //\r
273 //*****************************************************************************\r
274 #define UDMA_ALTSET_SET_M       0xFFFFFFFF  // Channel [n] Alternate Set.\r
275 #define UDMA_ALTSET_SET__0      0x00000000  // No Effect\r
276 #define UDMA_ALTSET_SET__1      0x00000001  // Alternate\r
277 \r
278 //*****************************************************************************\r
279 //\r
280 // The following are defines for the bit fields in the UDMA_ALTCLR register.\r
281 //\r
282 //*****************************************************************************\r
283 #define UDMA_ALTCLR_CLR_M       0xFFFFFFFF  // Channel [n] Alternate Clear.\r
284 #define UDMA_ALTCLR_CLR__0      0x00000000  // No Effect\r
285 #define UDMA_ALTCLR_CLR__1      0x00000001  // Primary\r
286 \r
287 //*****************************************************************************\r
288 //\r
289 // The following are defines for the bit fields in the UDMA_PRIOSET register.\r
290 //\r
291 //*****************************************************************************\r
292 #define UDMA_PRIOSET_SET_M      0xFFFFFFFF  // Channel [n] Priority Set.\r
293 #define UDMA_PRIOSET_SET__0     0x00000000  // No Effect\r
294 #define UDMA_PRIOSET_SET__1     0x00000001  // High Priority\r
295 \r
296 //*****************************************************************************\r
297 //\r
298 // The following are defines for the bit fields in the UDMA_PRIOCLR register.\r
299 //\r
300 //*****************************************************************************\r
301 #define UDMA_PRIOCLR_CLR_M      0xFFFFFFFF  // Channel [n] Priority Clear.\r
302 #define UDMA_PRIOCLR_CLR__0     0x00000000  // No Effect\r
303 #define UDMA_PRIOCLR_CLR__1     0x00000001  // Default Priority\r
304 \r
305 //*****************************************************************************\r
306 //\r
307 // The following are defines for the bit fields in the UDMA_ERRCLR register.\r
308 //\r
309 //*****************************************************************************\r
310 #define UDMA_ERRCLR_ERRCLR      0x00000001  // DMA Bus Error Status.\r
311 \r
312 #endif // __HW_UDMA_H__\r