source: rtems/c/src/lib/libcpu/m68k/mcf548x/mcdma/MCD_tasksInit.c @ e2cf289

5
Last change on this file since e2cf289 was e2cf289, checked in by Chris Johns <chrisj@…>, on 01/04/18 at 07:53:45

bsp/mcf548x: Use public include path

Update #3254.

  • Property mode set to 100644
File size: 11.4 KB
Line 
1/*
2 * File:        MCD_tasksInit.c
3 * Purpose:     Functions for initializing variable tables of different
4 *              types of tasks.
5 *
6 * Notes:
7 */
8
9/*
10 * Do not edit!
11 */
12
13#include <mcf548x/MCD_dma.h>
14#include <mcf548x/MCD_tasksInit.h>
15
16extern dmaRegs *MCD_dmaBar;
17
18
19/*
20 * Task 0
21 */
22
23void  MCD_startDmaChainNoEu(int *currBD, short srcIncr, short destIncr, int xferSize, short xferSizeIncr, int *cSave, volatile TaskTableEntry *taskTable, int channel)
24{
25
26    MCD_SET_VAR(taskTable+channel, 2, (u32)currBD); /* var[2] */
27    MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
28    MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
29    MCD_SET_VAR(taskTable+channel, 11, (u32)xferSize);  /* var[11] */
30    MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
31    MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
32    MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
33    MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
34    MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
35    MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
36    MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
37    MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
38    MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
39    MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
40    MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);    /* var[10] */
41    MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000);    /* var[12] */
42    MCD_SET_VAR(taskTable+channel, 13, (u32)0x80000000);    /* var[13] */
43    MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000010);    /* var[14] */
44    MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004);    /* var[15] */
45    MCD_SET_VAR(taskTable+channel, 16, (u32)0x08000000);    /* var[16] */
46    MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
47    MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000);    /* inc[4] */
48    MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000001);    /* inc[5] */
49    MCD_SET_VAR(taskTable+channel, 30, (u32)0x40000000);    /* inc[6] */
50
51    /* Set the task's Enable bit in its Task Control Register */
52    MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
53}
54
55
56/*
57 * Task 1
58 */
59
60void  MCD_startDmaSingleNoEu(char *srcAddr, short srcIncr, char *destAddr, short destIncr, int dmaSize, short xferSizeIncr, int flags, int *currBD, int *cSave, volatile TaskTableEntry *taskTable, int channel)
61{
62
63    MCD_SET_VAR(taskTable+channel, 7, (u32)srcAddr);    /* var[7] */
64    MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
65    MCD_SET_VAR(taskTable+channel, 2, (u32)destAddr);   /* var[2] */
66    MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
67    MCD_SET_VAR(taskTable+channel, 3, (u32)dmaSize);    /* var[3] */
68    MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
69    MCD_SET_VAR(taskTable+channel, 5, (u32)flags);  /* var[5] */
70    MCD_SET_VAR(taskTable+channel, 1, (u32)currBD); /* var[1] */
71    MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
72    MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
73    MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
74    MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
75    MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000004); /* var[9] */
76    MCD_SET_VAR(taskTable+channel, 10, (u32)0x08000000);    /* var[10] */
77    MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
78    MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000001);    /* inc[4] */
79    MCD_SET_VAR(taskTable+channel, 29, (u32)0x40000000);    /* inc[5] */
80
81    /* Set the task's Enable bit in its Task Control Register */
82    MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
83}
84
85
86/*
87 * Task 2
88 */
89
90void  MCD_startDmaChainEu(int *currBD, short srcIncr, short destIncr, int xferSize, short xferSizeIncr, int *cSave, volatile TaskTableEntry *taskTable, int channel)
91{
92
93    MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
94    MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
95    MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
96    MCD_SET_VAR(taskTable+channel, 12, (u32)xferSize);  /* var[12] */
97    MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
98    MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
99    MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
100    MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
101    MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
102    MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
103    MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
104    MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
105    MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
106    MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
107    MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);    /* var[10] */
108    MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000);    /* var[11] */
109    MCD_SET_VAR(taskTable+channel, 13, (u32)0x00000000);    /* var[13] */
110    MCD_SET_VAR(taskTable+channel, 14, (u32)0x80000000);    /* var[14] */
111    MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000010);    /* var[15] */
112    MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000001);    /* var[16] */
113    MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000004);    /* var[17] */
114    MCD_SET_VAR(taskTable+channel, 18, (u32)0x08000000);    /* var[18] */
115    MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
116    MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000);    /* inc[4] */
117    MCD_SET_VAR(taskTable+channel, 29, (u32)0xc0000000);    /* inc[5] */
118    MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001);    /* inc[6] */
119    MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000);    /* inc[7] */
120
121    /* Set the task's Enable bit in its Task Control Register */
122    MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
123}
124
125
126/*
127 * Task 3
128 */
129
130void  MCD_startDmaSingleEu(char *srcAddr, short srcIncr, char *destAddr, short destIncr, int dmaSize, short xferSizeIncr, int flags, int *currBD, int *cSave, volatile TaskTableEntry *taskTable, int channel)
131{
132
133    MCD_SET_VAR(taskTable+channel, 8, (u32)srcAddr);    /* var[8] */
134    MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
135    MCD_SET_VAR(taskTable+channel, 3, (u32)destAddr);   /* var[3] */
136    MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
137    MCD_SET_VAR(taskTable+channel, 4, (u32)dmaSize);    /* var[4] */
138    MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
139    MCD_SET_VAR(taskTable+channel, 6, (u32)flags);  /* var[6] */
140    MCD_SET_VAR(taskTable+channel, 2, (u32)currBD); /* var[2] */
141    MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
142    MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
143    MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
144    MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
145    MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
146    MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000001);    /* var[10] */
147    MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000004);    /* var[11] */
148    MCD_SET_VAR(taskTable+channel, 12, (u32)0x08000000);    /* var[12] */
149    MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
150    MCD_SET_VAR(taskTable+channel, 28, (u32)0xc0000000);    /* inc[4] */
151    MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000);    /* inc[5] */
152    MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001);    /* inc[6] */
153    MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000);    /* inc[7] */
154
155    /* Set the task's Enable bit in its Task Control Register */
156    MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
157}
158
159
160/*
161 * Task 4
162 */
163
164void  MCD_startDmaENetRcv(char *bDBase, char *currBD, char *rcvFifoPtr, volatile TaskTableEntry *taskTable, int channel)
165{
166
167    MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase); /* var[0] */
168    MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
169    MCD_SET_VAR(taskTable+channel, 6, (u32)rcvFifoPtr); /* var[6] */
170    MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
171    MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
172    MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
173    MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
174    MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
175    MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
176    MCD_SET_VAR(taskTable+channel, 9, (u32)0x0000ffff); /* var[9] */
177    MCD_SET_VAR(taskTable+channel, 10, (u32)0x30000000);    /* var[10] */
178    MCD_SET_VAR(taskTable+channel, 11, (u32)0x0fffffff);    /* var[11] */
179    MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000008);    /* var[12] */
180    MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000);    /* inc[0] */
181    MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000);    /* inc[1] */
182    MCD_SET_VAR(taskTable+channel, 26, (u32)0x20000004);    /* inc[2] */
183    MCD_SET_VAR(taskTable+channel, 27, (u32)0x40000000);    /* inc[3] */
184
185    /* Set the task's Enable bit in its Task Control Register */
186    MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
187}
188
189
190/*
191 * Task 5
192 */
193
194void  MCD_startDmaENetXmit(char *bDBase, char *currBD, char *xmitFifoPtr, volatile TaskTableEntry *taskTable, int channel)
195{
196
197    MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase); /* var[0] */
198    MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
199    MCD_SET_VAR(taskTable+channel, 11, (u32)xmitFifoPtr);   /* var[11] */
200    MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
201    MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
202    MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
203    MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
204    MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
205    MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
206    MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
207    MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
208    MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);    /* var[10] */
209    MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000);    /* var[12] */
210    MCD_SET_VAR(taskTable+channel, 13, (u32)0x0000ffff);    /* var[13] */
211    MCD_SET_VAR(taskTable+channel, 14, (u32)0xffffffff);    /* var[14] */
212    MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004);    /* var[15] */
213    MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000008);    /* var[16] */
214    MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000);    /* inc[0] */
215    MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000);    /* inc[1] */
216    MCD_SET_VAR(taskTable+channel, 26, (u32)0x40000000);    /* inc[2] */
217    MCD_SET_VAR(taskTable+channel, 27, (u32)0xc000fffc);    /* inc[3] */
218    MCD_SET_VAR(taskTable+channel, 28, (u32)0xe0000004);    /* inc[4] */
219    MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000);    /* inc[5] */
220    MCD_SET_VAR(taskTable+channel, 30, (u32)0x4000ffff);    /* inc[6] */
221    MCD_SET_VAR(taskTable+channel, 31, (u32)0xe0000001);    /* inc[7] */
222
223    /* Set the task's Enable bit in its Task Control Register */
224    MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
225}
Note: See TracBrowser for help on using the repository browser.