brcm-2.4: preinit: Renamed failsafe echo scriplet to reflect that it is brcm-specific
[openwrt.git] / target / linux / coldfire / patches / 051-m547x_8x_mcdma_1.0.patch
1 From 6c9df5dff79b6d09d1a31681067e7fbd85285f80 Mon Sep 17 00:00:00 2001
2 From: Kurt Mahan <kmahan@freescale.com>
3 Date: Wed, 30 Apr 2008 12:22:03 -0600
4 Subject: [PATCH] Update MultiChannel DMA to code version 1.0.
5
6 Changes since previous:
7 - Updated FEC RX task to work around bug where it would not update
8 the RX buffer descriptors correctly and adjusted size accordingly.
9 - Added flag MCD_TT_FLAGS_PI for use with DSPI on MCD547x/8x.
10 - Fixed cleanup of paused tasks in MCD_killDma.
11 - Cosmetic changes to cleanup MCD_dmaApi.c.
12
13 LTIBName: m547x-8x-mcdma-1.0
14 Signed-off-by: Kurt Mahan <kmahan@freescale.com>
15 ---
16 arch/m68k/coldfire/Makefile | 3 +-
17 arch/m68k/coldfire/dma.c | 532 ----
18 arch/m68k/coldfire/m547x_8x-dma.c | 516 ++++
19 drivers/dma/MCD_dma.h | 786 +++---
20 drivers/dma/MCD_dmaApi.c | 417 ++--
21 drivers/dma/MCD_progCheck.h | 45 +-
22 drivers/dma/MCD_tasks.c | 4917 +++++++++++++++++++------------------
23 drivers/dma/MCD_tasksInit.c | 402 ++--
24 drivers/dma/MCD_tasksInit.h | 49 +-
25 9 files changed, 3785 insertions(+), 3882 deletions(-)
26 delete mode 100644 arch/m68k/coldfire/dma.c
27 create mode 100644 arch/m68k/coldfire/m547x_8x-dma.c
28
29 --- a/arch/m68k/coldfire/Makefile
30 +++ b/arch/m68k/coldfire/Makefile
31 @@ -10,5 +10,4 @@ endif
32
33 obj-$(CONFIG_PCI) += pci.o mcf5445x-pci.o iomap.o
34 obj-$(CONFIG_M54455) += mcf5445x-devices.o
35 -
36 -obj-$(CONFIG_MCD_DMA) += dma.o
37 +obj-$(CONFIG_MCD_DMA) += m547x_8x-dma.o
38 --- a/arch/m68k/coldfire/dma.c
39 +++ /dev/null
40 @@ -1,532 +0,0 @@
41 -#include <linux/kernel.h>
42 -#include <linux/sched.h>
43 -#include <linux/mm.h>
44 -#include <linux/init.h>
45 -#include <linux/interrupt.h>
46 -#include <asm/io.h>
47 -#include <asm/irq.h>
48 -#include <asm/dma.h>
49 -#include <asm/coldfire.h>
50 -#include <asm/m5485sram.h>
51 -#include <asm/mcfsim.h>
52 -
53 -
54 -
55 -void dma_interrupt_handler(int irq, void *dev_id, struct pt_regs *regs);
56 -
57 -/*
58 - * This global keeps track of which initiators have been
59 - * used of the available assignments. Initiators 0-15 are
60 - * hardwired. Initiators 16-31 are multiplexed and controlled
61 - * via the Initiatior Mux Control Registe (IMCR). The
62 - * assigned requestor is stored with the associated initiator
63 - * number.
64 - */
65 -static int used_reqs[32] = {
66 - DMA_ALWAYS, DMA_DSPI_RX, DMA_DSPI_TX, DMA_DREQ0,
67 - DMA_PSC0_RX, DMA_PSC0_TX, DMA_USBEP0, DMA_USBEP1,
68 - DMA_USBEP2, DMA_USBEP3, DMA_PCI_TX, DMA_PCI_RX,
69 - DMA_PSC1_RX, DMA_PSC1_TX, DMA_I2C_RX, DMA_I2C_TX,
70 - 0, 0, 0, 0,
71 - 0, 0, 0, 0,
72 - 0, 0, 0, 0,
73 - 0, 0, 0, 0
74 -};
75 -
76 -/*
77 - * This global keeps track of which channels have been assigned
78 - * to tasks. This methology assumes that no single initiator
79 - * will be tied to more than one task/channel
80 - */
81 -static char used_channel[16] = {
82 - -1, -1, -1, -1, -1, -1, -1, -1,
83 - -1, -1, -1, -1, -1, -1, -1, -1
84 -};
85 -
86 -unsigned int connected_channel[16] = {
87 - 0, 0, 0, 0, 0, 0, 0, 0,
88 - 0, 0, 0, 0, 0, 0, 0, 0
89 -};
90 -
91 -/********************************************************************/
92 -/*
93 - * Attempt to enable the provided Initiator in the Initiator
94 - * Mux Control Register
95 - *
96 - * Parameters:
97 - * initiator Initiator identifier
98 - *
99 - * Return Value:
100 - * 1 if unable to make the assignment
101 - * 0 successful
102 - */
103 -int
104 -dma_set_initiator(int initiator)
105 -{
106 - switch (initiator) { /*
107 - * These initiators are always active
108 - */
109 - case DMA_ALWAYS:
110 - case DMA_DSPI_RX:
111 - case DMA_DSPI_TX:
112 - case DMA_DREQ0:
113 - case DMA_PSC0_RX:
114 - case DMA_PSC0_TX:
115 - case DMA_USBEP0:
116 - case DMA_USBEP1:
117 - case DMA_USBEP2:
118 - case DMA_USBEP3:
119 - case DMA_PCI_TX:
120 - case DMA_PCI_RX:
121 - case DMA_PSC1_RX:
122 - case DMA_PSC1_TX:
123 - case DMA_I2C_RX:
124 - case DMA_I2C_TX:
125 - break;
126 -
127 - case DMA_FEC0_RX:
128 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC16(3))
129 - | MCF_DMA_IMCR_SRC16_FEC0RX;
130 - used_reqs[16] = DMA_FEC0_RX;
131 - break;
132 -
133 - case DMA_FEC0_TX:
134 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC17(3))
135 - | MCF_DMA_IMCR_SRC17_FEC0TX;
136 - used_reqs[17] = DMA_FEC0_TX;
137 - break;
138 -
139 - case DMA_FEC1_RX:
140 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC20(3))
141 - | MCF_DMA_IMCR_SRC20_FEC1RX;
142 - used_reqs[20] = DMA_FEC1_RX;
143 - break;
144 -
145 - case DMA_FEC1_TX:
146 - if (used_reqs[21] == 0) {
147 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC21(3))
148 - | MCF_DMA_IMCR_SRC21_FEC1TX;
149 - used_reqs[21] = DMA_FEC1_TX;
150 - } else if (used_reqs[25] == 0) {
151 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC25(3))
152 - | MCF_DMA_IMCR_SRC25_FEC1TX;
153 - used_reqs[25] = DMA_FEC1_TX;
154 - } else if (used_reqs[31] == 0) {
155 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC31(3))
156 - | MCF_DMA_IMCR_SRC31_FEC1TX;
157 - used_reqs[31] = DMA_FEC1_TX;
158 - } else /* No empty slots */
159 - return 1;
160 - break;
161 -
162 - case DMA_DREQ1:
163 - if (used_reqs[29] == 0) {
164 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC29(3))
165 - | MCF_DMA_IMCR_SRC29_DREQ1;
166 - used_reqs[29] = DMA_DREQ1;
167 - } else if (used_reqs[21] == 0) {
168 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC21(3))
169 - | MCF_DMA_IMCR_SRC21_DREQ1;
170 - used_reqs[21] = DMA_DREQ1;
171 - } else /* No empty slots */
172 - return 1;
173 - break;
174 -
175 - case DMA_CTM0:
176 - if (used_reqs[24] == 0) {
177 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC24(3))
178 - | MCF_DMA_IMCR_SRC24_CTM0;
179 - used_reqs[24] = DMA_CTM0;
180 - } else /* No empty slots */
181 - return 1;
182 - break;
183 -
184 - case DMA_CTM1:
185 - if (used_reqs[25] == 0) {
186 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC25(3))
187 - | MCF_DMA_IMCR_SRC25_CTM1;
188 - used_reqs[25] = DMA_CTM1;
189 - } else /* No empty slots */
190 - return 1;
191 - break;
192 -
193 - case DMA_CTM2:
194 - if (used_reqs[26] == 0) {
195 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC26(3))
196 - | MCF_DMA_IMCR_SRC26_CTM2;
197 - used_reqs[26] = DMA_CTM2;
198 - } else /* No empty slots */
199 - return 1;
200 - break;
201 -
202 - case DMA_CTM3:
203 - if (used_reqs[27] == 0) {
204 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC27(3))
205 - | MCF_DMA_IMCR_SRC27_CTM3;
206 - used_reqs[27] = DMA_CTM3;
207 - } else /* No empty slots */
208 - return 1;
209 - break;
210 -
211 - case DMA_CTM4:
212 - if (used_reqs[28] == 0) {
213 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC28(3))
214 - | MCF_DMA_IMCR_SRC28_CTM4;
215 - used_reqs[28] = DMA_CTM4;
216 - } else /* No empty slots */
217 - return 1;
218 - break;
219 -
220 - case DMA_CTM5:
221 - if (used_reqs[29] == 0) {
222 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC29(3))
223 - | MCF_DMA_IMCR_SRC29_CTM5;
224 - used_reqs[29] = DMA_CTM5;
225 - } else /* No empty slots */
226 - return 1;
227 - break;
228 -
229 - case DMA_CTM6:
230 - if (used_reqs[30] == 0) {
231 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC30(3))
232 - | MCF_DMA_IMCR_SRC30_CTM6;
233 - used_reqs[30] = DMA_CTM6;
234 - } else /* No empty slots */
235 - return 1;
236 - break;
237 -
238 - case DMA_CTM7:
239 - if (used_reqs[31] == 0) {
240 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC31(3))
241 - | MCF_DMA_IMCR_SRC31_CTM7;
242 - used_reqs[31] = DMA_CTM7;
243 - } else /* No empty slots */
244 - return 1;
245 - break;
246 -
247 - case DMA_USBEP4:
248 - if (used_reqs[26] == 0) {
249 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC26(3))
250 - | MCF_DMA_IMCR_SRC26_USBEP4;
251 - used_reqs[26] = DMA_USBEP4;
252 - } else /* No empty slots */
253 - return 1;
254 - break;
255 -
256 - case DMA_USBEP5:
257 - if (used_reqs[27] == 0) {
258 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC27(3))
259 - | MCF_DMA_IMCR_SRC27_USBEP5;
260 - used_reqs[27] = DMA_USBEP5;
261 - } else /* No empty slots */
262 - return 1;
263 - break;
264 -
265 - case DMA_USBEP6:
266 - if (used_reqs[28] == 0) {
267 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC28(3))
268 - | MCF_DMA_IMCR_SRC28_USBEP6;
269 - used_reqs[28] = DMA_USBEP6;
270 - } else /* No empty slots */
271 - return 1;
272 - break;
273 -
274 - case DMA_PSC2_RX:
275 - if (used_reqs[28] == 0) {
276 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC28(3))
277 - | MCF_DMA_IMCR_SRC28_PSC2RX;
278 - used_reqs[28] = DMA_PSC2_RX;
279 - } else /* No empty slots */
280 - return 1;
281 - break;
282 -
283 - case DMA_PSC2_TX:
284 - if (used_reqs[29] == 0) {
285 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC29(3))
286 - | MCF_DMA_IMCR_SRC29_PSC2TX;
287 - used_reqs[29] = DMA_PSC2_TX;
288 - } else /* No empty slots */
289 - return 1;
290 - break;
291 -
292 - case DMA_PSC3_RX:
293 - if (used_reqs[30] == 0) {
294 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC30(3))
295 - | MCF_DMA_IMCR_SRC30_PSC3RX;
296 - used_reqs[30] = DMA_PSC3_RX;
297 - } else /* No empty slots */
298 - return 1;
299 - break;
300 -
301 - case DMA_PSC3_TX:
302 - if (used_reqs[31] == 0) {
303 - MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC31(3))
304 - | MCF_DMA_IMCR_SRC31_PSC3TX;
305 - used_reqs[31] = DMA_PSC3_TX;
306 - } else /* No empty slots */
307 - return 1;
308 - break;
309 -
310 - default:
311 - return 1;
312 - }
313 - return 0;
314 -}
315 -
316 -/********************************************************************/
317 -/*
318 - * Return the initiator number for the given requestor
319 - *
320 - * Parameters:
321 - * requestor Initiator/Requestor identifier
322 - *
323 - * Return Value:
324 - * The initiator number (0-31) if initiator has been assigned
325 - * 0 (always initiator) otherwise
326 - */
327 -unsigned int
328 -dma_get_initiator(int requestor)
329 -{
330 - u32 i;
331 -
332 - for (i = 0; i < sizeof (used_reqs); ++i) {
333 - if (used_reqs[i] == requestor)
334 - return i;
335 - }
336 - return 0;
337 -}
338 -
339 -/********************************************************************/
340 -/*
341 - * Remove the given initiator from the active list
342 - *
343 - * Parameters:
344 - * requestor Initiator/Requestor identifier
345 - */
346 -void
347 -dma_remove_initiator(int requestor)
348 -{
349 - u32 i;
350 -
351 - for (i = 0; i < sizeof (used_reqs); ++i) {
352 - if (used_reqs[i] == requestor) {
353 - used_reqs[i] = -1;
354 - break;
355 - }
356 - }
357 -}
358 -
359 -/********************************************************************/
360 -/*
361 - * Attempt to find an available channel for FEC and mark is as used
362 - *
363 - * Parameters:
364 - * requestor Initiator/Requestor identifier
365 - *
366 - * Return Value:
367 - * First available channel (from 0 to 5) or -1 if they are all occupied
368 - */
369 -int
370 -dma_set_channel_fec(int requestor)
371 -{
372 - u32 i, t;
373 -
374 -#ifdef CONFIG_FEC_548x_ENABLE_FEC2
375 - t = 4;
376 -#else
377 - t = 2;
378 -#endif
379 -
380 -
381 -
382 - for (i = 0; i < t ; ++i)
383 - if (used_channel[i] == -1) {
384 - used_channel[i] = requestor;
385 - return i;
386 - }
387 - /* All channels taken */
388 - return -1;
389 -}
390 -
391 -/********************************************************************/
392 -/*
393 - * Attempt to find an available channel and mark is as used
394 - *
395 - * Parameters:
396 - * requestor Initiator/Requestor identifier
397 - *
398 - * Return Value:
399 - * First available channel (from 6 to 15) or -1 if they are all occupied
400 - */
401 -int
402 -dma_set_channel(int requestor)
403 -{
404 - u32 i;
405 -#ifdef CONFIG_NET_FEC2
406 - i = 4;
407 -#else
408 - i = 2;
409 -#endif
410 -
411 - for (; i < 16; ++i)
412 - if (used_channel[i] == -1) {
413 - used_channel[i] = requestor;
414 - return i;
415 - }
416 -
417 - /* All channels taken */
418 - return -1;
419 -}
420 -
421 -/********************************************************************/
422 -/*
423 - * Return the channel being initiated by the given requestor
424 - *
425 - * Parameters:
426 - * requestor Initiator/Requestor identifier
427 - */
428 -int
429 -dma_get_channel(int requestor)
430 -{
431 - u32 i;
432 -
433 - for (i = 0; i < sizeof (used_channel); ++i) {
434 - if (used_channel[i] == requestor)
435 - return i;
436 - }
437 - return -1;
438 -}
439 -
440 -/********************************************************************/
441 -/*
442 - * Connects a channel with reference on your data
443 - *
444 - * Parameters:
445 - * channel channel number
446 - * reference addres of your data
447 - */
448 -int
449 -dma_connect(int channel, int address)
450 -{
451 - if ((channel < 16) && (channel >= 0))
452 - connected_channel[channel] = address;
453 - else
454 - return -1;
455 - return 0;
456 -}
457 -
458 -/********************************************************************/
459 -/*
460 - * Disconnects a channel with reference on your data
461 - *
462 - * Parameters:
463 - * channel channel number
464 -*/
465 -int
466 -dma_disconnect(int channel)
467 -{
468 - if ((channel < 16) && (channel >= 0))
469 - connected_channel[channel] = 0;
470 - else
471 - return -1;
472 - return 0;
473 -}
474 -
475 -/********************************************************************/
476 -/*
477 - * Remove the channel being initiated by the given requestor from
478 - * the active list
479 - *
480 - * Parameters:
481 - * requestor Initiator/Requestor identifier
482 - */
483 -void
484 -dma_remove_channel(int requestor)
485 -{
486 - u32 i;
487 -
488 - for (i = 0; i < sizeof (used_channel); ++i) {
489 - if (used_channel[i] == requestor) {
490 - used_channel[i] = -1;
491 - break;
492 - }
493 - }
494 -}
495 -
496 -/********************************************************************/
497 -/*
498 - * This is the catch-all interrupt handler for the mult-channel DMA
499 - */
500 -volatile u8 dma_iflag[16];
501 -u32 tx = 0;
502 -
503 -void
504 -dma_interrupt_handler(int irq, void *dev_id, struct pt_regs *regs)
505 -{
506 - u32 i, interrupts/*, mask, temp*/;
507 -
508 - /*
509 - * Determine which interrupt(s) triggered by AND'ing the
510 - * pending interrupts with those that aren't masked.
511 - */
512 -/* mask = MCF_DMA_DIMR;
513 - MCF_DMA_DIMR = 0xffffffff;
514 -*/
515 - interrupts = MCF_DMA_DIPR;
516 - MCF_DMA_DIPR |= interrupts;
517 -// temp = interrupts;
518 -
519 - //MCF_DMA_DIPR = interrupts;
520 - for (i = 0; i < 16; ++i, interrupts >>= 1)
521 - if (interrupts & 0x1)
522 - if (connected_channel[i] != 0)
523 - ((void (*)(void)) (connected_channel[i])) ();
524 -
525 -/* MCF_DMA_DIPR |= temp;
526 - MCF_DMA_DIMR = mask;*/
527 -}
528 -
529 -void
530 -dma_remove_channel_by_number(int channel)
531 -{
532 - if (channel < sizeof (used_channel) && channel >= 0)
533 - used_channel[channel] = -1;
534 -}
535 -
536 -int __devinit
537 -dma_init()
538 -{
539 - int result;
540 - char *dma_version_str;
541 -
542 - MCD_getVersion(&dma_version_str);
543 - printk("Initialize %s\n", dma_version_str);
544 -
545 - if (request_irq
546 - (64 + ISC_DMA,
547 - dma_interrupt_handler,
548 - IRQF_DISABLED,
549 - "MCD-DMA",
550 - NULL)) {
551 - printk("Cannot allocate the DMA IRQ(48)\n");
552 - return 1;
553 - }
554 -
555 - MCF_DMA_DIMR = 0;
556 - MCF_DMA_DIPR = 0xFFFFFFFF;
557 -
558 - MCF_ICR(ISC_DMA) = ILP_DMA;
559 -
560 - result = MCD_initDma((dmaRegs *) (MCF_MBAR + 0x8000),
561 - (void *) SYS_SRAM_DMA_START, MCD_RELOC_TASKS);
562 - if (result != MCD_OK) {
563 - printk("Cannot perform DMA initialization\n");
564 - free_irq(64 + ISC_DMA, NULL);
565 - return 1;
566 - }
567 -
568 - return 0;
569 -}
570 -
571 -device_initcall(dma_init);
572 -
573 --- /dev/null
574 +++ b/arch/m68k/coldfire/m547x_8x-dma.c
575 @@ -0,0 +1,516 @@
576 +/*
577 + * arch/m68k/coldfire/m547x_8x-dma.c
578 + *
579 + * Coldfire M547x/M548x DMA
580 + *
581 + * Copyright (c) 2008 Freescale Semiconductor, Inc.
582 + * Kurt Mahan <kmahan@freescale.com>
583 + *
584 + * This code is based on patches from the Freescale M547x_8x BSP
585 + * release mcf547x_8x-20070107-ltib.iso
586 + *
587 + * This program is free software; you can redistribute it and/or modify
588 + * it under the terms of the GNU General Public License as published by
589 + * the Free Software Foundation; either version 2 of the License, or
590 + * (at your option) any later version.
591 + *
592 + * This program is distributed in the hope that it will be useful,
593 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
594 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
595 + * GNU General Public License for more details.
596 + *
597 + * You should have received a copy of the GNU General Public License
598 + * along with this program; if not, write to the Free Software
599 + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
600 + */
601 +#include <linux/kernel.h>
602 +#include <linux/sched.h>
603 +#include <linux/mm.h>
604 +#include <linux/init.h>
605 +#include <linux/interrupt.h>
606 +#include <asm/io.h>
607 +#include <asm/irq.h>
608 +#include <asm/dma.h>
609 +#include <asm/coldfire.h>
610 +#include <asm/m5485sram.h>
611 +#include <asm/mcfsim.h>
612 +
613 +/*
614 + * This global keeps track of which initiators have been
615 + * used of the available assignments. Initiators 0-15 are
616 + * hardwired. Initiators 16-31 are multiplexed and controlled
617 + * via the Initiatior Mux Control Registe (IMCR). The
618 + * assigned requestor is stored with the associated initiator
619 + * number.
620 + */
621 +static int used_reqs[32] = {
622 + DMA_ALWAYS, DMA_DSPI_RX, DMA_DSPI_TX, DMA_DREQ0,
623 + DMA_PSC0_RX, DMA_PSC0_TX, DMA_USBEP0, DMA_USBEP1,
624 + DMA_USBEP2, DMA_USBEP3, DMA_PCI_TX, DMA_PCI_RX,
625 + DMA_PSC1_RX, DMA_PSC1_TX, DMA_I2C_RX, DMA_I2C_TX,
626 + 0, 0, 0, 0,
627 + 0, 0, 0, 0,
628 + 0, 0, 0, 0,
629 + 0, 0, 0, 0
630 +};
631 +
632 +/*
633 + * This global keeps track of which channels have been assigned
634 + * to tasks. This methology assumes that no single initiator
635 + * will be tied to more than one task/channel
636 + */
637 +static char used_channel[16] = {
638 + -1, -1, -1, -1, -1, -1, -1, -1,
639 + -1, -1, -1, -1, -1, -1, -1, -1
640 +};
641 +
642 +unsigned int connected_channel[16] = {
643 + 0, 0, 0, 0, 0, 0, 0, 0,
644 + 0, 0, 0, 0, 0, 0, 0, 0
645 +};
646 +
647 +/**
648 + * dma_set_initiator - enable initiator
649 + * @initiator: initiator identifier
650 + *
651 + * Returns 0 of successful, non-zero otherwise
652 + *
653 + * Attempt to enable the provided Initiator in the Initiator
654 + * Mux Control Register.
655 + */
656 +int dma_set_initiator(int initiator)
657 +{
658 + switch (initiator) {
659 + case DMA_ALWAYS:
660 + case DMA_DSPI_RX:
661 + case DMA_DSPI_TX:
662 + case DMA_DREQ0:
663 + case DMA_PSC0_RX:
664 + case DMA_PSC0_TX:
665 + case DMA_USBEP0:
666 + case DMA_USBEP1:
667 + case DMA_USBEP2:
668 + case DMA_USBEP3:
669 + case DMA_PCI_TX:
670 + case DMA_PCI_RX:
671 + case DMA_PSC1_RX:
672 + case DMA_PSC1_TX:
673 + case DMA_I2C_RX:
674 + case DMA_I2C_TX:
675 + /*
676 + * These initiators are always active
677 + */
678 + break;
679 +
680 + case DMA_FEC0_RX:
681 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC16(3))
682 + | MCF_DMA_IMCR_SRC16_FEC0RX;
683 + used_reqs[16] = DMA_FEC0_RX;
684 + break;
685 +
686 + case DMA_FEC0_TX:
687 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC17(3))
688 + | MCF_DMA_IMCR_SRC17_FEC0TX;
689 + used_reqs[17] = DMA_FEC0_TX;
690 + break;
691 +
692 + case DMA_FEC1_RX:
693 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC20(3))
694 + | MCF_DMA_IMCR_SRC20_FEC1RX;
695 + used_reqs[20] = DMA_FEC1_RX;
696 + break;
697 +
698 + case DMA_FEC1_TX:
699 + if (used_reqs[21] == 0) {
700 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC21(3))
701 + | MCF_DMA_IMCR_SRC21_FEC1TX;
702 + used_reqs[21] = DMA_FEC1_TX;
703 + } else if (used_reqs[25] == 0) {
704 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC25(3))
705 + | MCF_DMA_IMCR_SRC25_FEC1TX;
706 + used_reqs[25] = DMA_FEC1_TX;
707 + } else if (used_reqs[31] == 0) {
708 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC31(3))
709 + | MCF_DMA_IMCR_SRC31_FEC1TX;
710 + used_reqs[31] = DMA_FEC1_TX;
711 + } else /* No empty slots */
712 + return 1;
713 + break;
714 +
715 + case DMA_DREQ1:
716 + if (used_reqs[29] == 0) {
717 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC29(3))
718 + | MCF_DMA_IMCR_SRC29_DREQ1;
719 + used_reqs[29] = DMA_DREQ1;
720 + } else if (used_reqs[21] == 0) {
721 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC21(3))
722 + | MCF_DMA_IMCR_SRC21_DREQ1;
723 + used_reqs[21] = DMA_DREQ1;
724 + } else /* No empty slots */
725 + return 1;
726 + break;
727 +
728 + case DMA_CTM0:
729 + if (used_reqs[24] == 0) {
730 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC24(3))
731 + | MCF_DMA_IMCR_SRC24_CTM0;
732 + used_reqs[24] = DMA_CTM0;
733 + } else /* No empty slots */
734 + return 1;
735 + break;
736 +
737 + case DMA_CTM1:
738 + if (used_reqs[25] == 0) {
739 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC25(3))
740 + | MCF_DMA_IMCR_SRC25_CTM1;
741 + used_reqs[25] = DMA_CTM1;
742 + } else /* No empty slots */
743 + return 1;
744 + break;
745 +
746 + case DMA_CTM2:
747 + if (used_reqs[26] == 0) {
748 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC26(3))
749 + | MCF_DMA_IMCR_SRC26_CTM2;
750 + used_reqs[26] = DMA_CTM2;
751 + } else /* No empty slots */
752 + return 1;
753 + break;
754 +
755 + case DMA_CTM3:
756 + if (used_reqs[27] == 0) {
757 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC27(3))
758 + | MCF_DMA_IMCR_SRC27_CTM3;
759 + used_reqs[27] = DMA_CTM3;
760 + } else /* No empty slots */
761 + return 1;
762 + break;
763 +
764 + case DMA_CTM4:
765 + if (used_reqs[28] == 0) {
766 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC28(3))
767 + | MCF_DMA_IMCR_SRC28_CTM4;
768 + used_reqs[28] = DMA_CTM4;
769 + } else /* No empty slots */
770 + return 1;
771 + break;
772 +
773 + case DMA_CTM5:
774 + if (used_reqs[29] == 0) {
775 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC29(3))
776 + | MCF_DMA_IMCR_SRC29_CTM5;
777 + used_reqs[29] = DMA_CTM5;
778 + } else /* No empty slots */
779 + return 1;
780 + break;
781 +
782 + case DMA_CTM6:
783 + if (used_reqs[30] == 0) {
784 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC30(3))
785 + | MCF_DMA_IMCR_SRC30_CTM6;
786 + used_reqs[30] = DMA_CTM6;
787 + } else /* No empty slots */
788 + return 1;
789 + break;
790 +
791 + case DMA_CTM7:
792 + if (used_reqs[31] == 0) {
793 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC31(3))
794 + | MCF_DMA_IMCR_SRC31_CTM7;
795 + used_reqs[31] = DMA_CTM7;
796 + } else /* No empty slots */
797 + return 1;
798 + break;
799 +
800 + case DMA_USBEP4:
801 + if (used_reqs[26] == 0) {
802 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC26(3))
803 + | MCF_DMA_IMCR_SRC26_USBEP4;
804 + used_reqs[26] = DMA_USBEP4;
805 + } else /* No empty slots */
806 + return 1;
807 + break;
808 +
809 + case DMA_USBEP5:
810 + if (used_reqs[27] == 0) {
811 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC27(3))
812 + | MCF_DMA_IMCR_SRC27_USBEP5;
813 + used_reqs[27] = DMA_USBEP5;
814 + } else /* No empty slots */
815 + return 1;
816 + break;
817 +
818 + case DMA_USBEP6:
819 + if (used_reqs[28] == 0) {
820 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC28(3))
821 + | MCF_DMA_IMCR_SRC28_USBEP6;
822 + used_reqs[28] = DMA_USBEP6;
823 + } else /* No empty slots */
824 + return 1;
825 + break;
826 +
827 + case DMA_PSC2_RX:
828 + if (used_reqs[28] == 0) {
829 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC28(3))
830 + | MCF_DMA_IMCR_SRC28_PSC2RX;
831 + used_reqs[28] = DMA_PSC2_RX;
832 + } else /* No empty slots */
833 + return 1;
834 + break;
835 +
836 + case DMA_PSC2_TX:
837 + if (used_reqs[29] == 0) {
838 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC29(3))
839 + | MCF_DMA_IMCR_SRC29_PSC2TX;
840 + used_reqs[29] = DMA_PSC2_TX;
841 + } else /* No empty slots */
842 + return 1;
843 + break;
844 +
845 + case DMA_PSC3_RX:
846 + if (used_reqs[30] == 0) {
847 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC30(3))
848 + | MCF_DMA_IMCR_SRC30_PSC3RX;
849 + used_reqs[30] = DMA_PSC3_RX;
850 + } else /* No empty slots */
851 + return 1;
852 + break;
853 +
854 + case DMA_PSC3_TX:
855 + if (used_reqs[31] == 0) {
856 + MCF_DMA_IMCR = (MCF_DMA_IMCR & ~MCF_DMA_IMCR_SRC31(3))
857 + | MCF_DMA_IMCR_SRC31_PSC3TX;
858 + used_reqs[31] = DMA_PSC3_TX;
859 + } else /* No empty slots */
860 + return 1;
861 + break;
862 +
863 + default:
864 + return 1;
865 + }
866 + return 0;
867 +}
868 +
869 +/**
870 + * dma_get_initiator - get the initiator for the given requestor
871 + * @requestor: initiator identifier
872 + *
873 + * Returns initiator number (0-31) if assigned or just 0
874 + */
875 +unsigned int dma_get_initiator(int requestor)
876 +{
877 + u32 i;
878 +
879 + for (i = 0; i < sizeof(used_reqs); ++i) {
880 + if (used_reqs[i] == requestor)
881 + return i;
882 + }
883 + return 0;
884 +}
885 +
886 +/**
887 + * dma_remove_initiator - remove the given initiator from active list
888 + * @requestor: requestor to remove
889 + */
890 +void dma_remove_initiator(int requestor)
891 +{
892 + u32 i;
893 +
894 + for (i = 0; i < sizeof(used_reqs); ++i) {
895 + if (used_reqs[i] == requestor) {
896 + used_reqs[i] = -1;
897 + break;
898 + }
899 + }
900 +}
901 +
902 +/**
903 + * dma_set_channel_fec: find available channel for fec and mark
904 + * @requestor: initiator/requestor identifier
905 + *
906 + * Returns first avaialble channel (0-5) or -1 if all occupied
907 + */
908 +int dma_set_channel_fec(int requestor)
909 +{
910 + u32 i, t;
911 +
912 +#ifdef CONFIG_FEC_548x_ENABLE_FEC2
913 + t = 4;
914 +#else
915 + t = 2;
916 +#endif
917 +
918 + for (i = 0; i < t ; ++i) {
919 + if (used_channel[i] == -1) {
920 + used_channel[i] = requestor;
921 + return i;
922 + }
923 + }
924 + /* All channels taken */
925 + return -1;
926 +}
927 +
928 +/**
929 + * dma_set_channel - find an available channel and mark as used
930 + * @requestor: initiator/requestor identifier
931 + *
932 + * Returns first available channel (6-15) or -1 if all occupied
933 + */
934 +int dma_set_channel(int requestor)
935 +{
936 + u32 i;
937 +#ifdef CONFIG_NET_FEC2
938 + i = 4;
939 +#else
940 + i = 2;
941 +#endif
942 +
943 + for (; i < 16; ++i)
944 + if (used_channel[i] == -1) {
945 + used_channel[i] = requestor;
946 + return i;
947 + }
948 +
949 + /* All channels taken */
950 + return -1;
951 +}
952 +
953 +/**
954 + * dma_get_channel - get the channel being initiated by the requestor
955 + * @requestor: initiator/requestor identifier
956 + *
957 + * Returns Initiator for requestor or -1 if not found
958 + */
959 +int dma_get_channel(int requestor)
960 +{
961 + u32 i;
962 +
963 + for (i = 0; i < sizeof(used_channel); ++i) {
964 + if (used_channel[i] == requestor)
965 + return i;
966 + }
967 + return -1;
968 +}
969 +
970 +/**
971 + * dma_connect - connect a channel with reference on data
972 + * @channel: channel number
973 + * @address: reference address of data
974 + *
975 + * Returns 0 if success or -1 if invalid channel
976 + */
977 +int dma_connect(int channel, int address)
978 +{
979 + if ((channel < 16) && (channel >= 0)) {
980 + connected_channel[channel] = address;
981 + return 0;
982 + }
983 + return -1;
984 +}
985 +
986 +/**
987 + * dma_disconnect - disconnect a channel
988 + * @channel: channel number
989 + *
990 + * Returns 0 if success or -1 if invalid channel
991 + */
992 +int dma_disconnect(int channel)
993 +{
994 + if ((channel < 16) && (channel >= 0)) {
995 + connected_channel[channel] = 0;
996 + return 0;
997 + }
998 + return -1;
999 +}
1000 +
1001 +/**
1002 + * dma_remove_channel - remove channel from the active list
1003 + * @requestor: initiator/requestor identifier
1004 + */
1005 +void dma_remove_channel(int requestor)
1006 +{
1007 + u32 i;
1008 +
1009 + for (i = 0; i < sizeof(used_channel); ++i) {
1010 + if (used_channel[i] == requestor) {
1011 + used_channel[i] = -1;
1012 + break;
1013 + }
1014 + }
1015 +}
1016 +
1017 +/**
1018 + * dma_interrupt_handler - dma interrupt handler
1019 + * @irq: interrupt number
1020 + * @dev_id: data
1021 + *
1022 + * Returns IRQ_HANDLED
1023 + */
1024 +irqreturn_t dma_interrupt_handler(int irq, void *dev_id)
1025 +{
1026 + u32 i, interrupts;
1027 +
1028 + /*
1029 + * Determine which interrupt(s) triggered by AND'ing the
1030 + * pending interrupts with those that aren't masked.
1031 + */
1032 + interrupts = MCF_DMA_DIPR;
1033 + MCF_DMA_DIPR |= interrupts;
1034 +
1035 + for (i = 0; i < 16; ++i, interrupts >>= 1) {
1036 + if (interrupts & 0x1)
1037 + if (connected_channel[i] != 0)
1038 + ((void (*)(void)) (connected_channel[i])) ();
1039 + }
1040 +
1041 + return IRQ_HANDLED;
1042 +}
1043 +
1044 +/**
1045 + * dma_remove_channel_by_number - clear dma channel
1046 + * @channel: channel number to clear
1047 + */
1048 +void dma_remove_channel_by_number(int channel)
1049 +{
1050 + if ((channel < sizeof(used_channel)) && (channel >= 0))
1051 + used_channel[channel] = -1;
1052 +}
1053 +
1054 +/**
1055 + * dma_init - initialize the dma subsystem
1056 + *
1057 + * Returns 0 if success non-zero if failure
1058 + *
1059 + * Handles the DMA initialization during device setup.
1060 + */
1061 +int __devinit dma_init()
1062 +{
1063 + int result;
1064 + char *dma_version_str;
1065 +
1066 + MCD_getVersion(&dma_version_str);
1067 + printk(KERN_INFO "m547x_8x DMA: Initialize %s\n", dma_version_str);
1068 +
1069 + /* attempt to setup dma interrupt handler */
1070 + if (request_irq(64 + ISC_DMA, dma_interrupt_handler, IRQF_DISABLED,
1071 + "MCD-DMA", NULL)) {
1072 + printk(KERN_ERR "MCD-DMA: Cannot allocate the DMA IRQ(48)\n");
1073 + return 1;
1074 + }
1075 +
1076 + MCF_DMA_DIMR = 0;
1077 + MCF_DMA_DIPR = 0xFFFFFFFF;
1078 +
1079 + MCF_ICR(ISC_DMA) = ILP_DMA;
1080 +
1081 + result = MCD_initDma((dmaRegs *) (MCF_MBAR + 0x8000),
1082 + (void *) SYS_SRAM_DMA_START, MCD_RELOC_TASKS);
1083 + if (result != MCD_OK) {
1084 + printk(KERN_ERR "MCD-DMA: Cannot perform DMA initialization\n");
1085 + free_irq(64 + ISC_DMA, NULL);
1086 + return 1;
1087 + }
1088 +
1089 + return 0;
1090 +}
1091 +device_initcall(dma_init);
1092 --- a/drivers/dma/MCD_dma.h
1093 +++ b/drivers/dma/MCD_dma.h
1094 @@ -1,45 +1,27 @@
1095 -/*********************************************************************
1096 - *
1097 - * Copyright (C) 2004 Motorola, Inc.
1098 - * MOTOROLA, INC. All Rights Reserved.
1099 - * You are hereby granted a copyright license to use
1100 - * the SOFTWARE so long as this entire notice is
1101 - * retained without alteration in any modified and/or redistributed
1102 - * versions, and that such modified versions are clearly identified
1103 - * as such. No licenses are granted by implication, estoppel or
1104 - * otherwise under any patents or trademarks of Motorola, Inc. This
1105 - * software is provided on an "AS IS" basis and without warranty.
1106 +/*
1107 + * drivers/dma/MCD_dma.h
1108 *
1109 - * To the maximum extent permitted by applicable law, MOTOROLA
1110 - * DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
1111 - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
1112 - * PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
1113 - * SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
1114 - * ACCOMPANYING WRITTEN MATERIALS.
1115 + * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
1116 + * Kurt Mahan <kmahan@freescale.com>
1117 *
1118 - * To the maximum extent permitted by applicable law, IN NO EVENT
1119 - * SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
1120 - * WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
1121 - * INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
1122 - * LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
1123 + * This program is free software; you can redistribute it and/or
1124 + * modify it under the terms of the GNU General Public License as
1125 + * published by the Free Software Foundation; either version 2 of
1126 + * the License, or (at your option) any later version.
1127 *
1128 - * Motorola assumes no responsibility for the maintenance and support
1129 - * of this software
1130 - ********************************************************************/
1131 -
1132 -/*
1133 - * File: MCD_dma.h
1134 - * Purpose: Main header file for multi-channel DMA API.
1135 + * This program is distributed in the hope that it will be useful,
1136 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1137 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1138 + * GNU General Public License for more details.
1139 *
1140 - * Notes:
1141 - *
1142 - * Modifications:
1143 + * You should have received a copy of the GNU General Public License
1144 + * along with this program; if not, write to the Free Software
1145 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
1146 + * MA 02111-1307 USA
1147 */
1148 #ifndef _MCD_API_H
1149 #define _MCD_API_H
1150
1151 -#include <asm/types.h>
1152 -
1153 /*
1154 * Turn Execution Unit tasks ON (#define) or OFF (#undef)
1155 */
1156 @@ -79,26 +61,13 @@
1157 /*
1158 * Portability typedefs
1159 */
1160 - /*
1161 -#ifndef s32
1162 typedef int s32;
1163 -#endif
1164 -#ifndef u32
1165 typedef unsigned int u32;
1166 -#endif
1167 -#ifndef s16
1168 typedef short s16;
1169 -#endif
1170 -#ifndef u16
1171 typedef unsigned short u16;
1172 -#endif
1173 -#ifndef s8
1174 typedef char s8;
1175 -#endif
1176 -#ifndef u8
1177 typedef unsigned char u8;
1178 -#endif
1179 -*/
1180 +
1181 /*
1182 * These structures represent the internal registers of the
1183 * multi-channel DMA
1184 @@ -233,6 +202,7 @@ typedef volatile struct dmaRegs_s dmaReg
1185 #define MCD_TT_FLAGS_RL 0x00000001 /* Read line */
1186 #define MCD_TT_FLAGS_CW 0x00000002 /* Combine Writes */
1187 #define MCD_TT_FLAGS_SP 0x00000004 /* Speculative prefetch(XLB) MCF547x/548x ONLY */
1188 +#define MCD_TT_FLAGS_PI 0x00000040 /* Precise Increment */
1189 #define MCD_TT_FLAGS_MASK 0x000000ff
1190 #define MCD_TT_FLAGS_DEF (MCD_TT_FLAGS_RL | MCD_TT_FLAGS_CW)
1191
1192 --- a/drivers/dma/MCD_dmaApi.c
1193 +++ b/drivers/dma/MCD_dmaApi.c
1194 @@ -1,46 +1,26 @@
1195 -/*********************************************************************
1196 - *
1197 - * Copyright (C) 2004 Motorola, Inc.
1198 - * MOTOROLA, INC. All Rights Reserved.
1199 - * You are hereby granted a copyright license to use
1200 - * the SOFTWARE so long as this entire notice is
1201 - * retained without alteration in any modified and/or redistributed
1202 - * versions, and that such modified versions are clearly identified
1203 - * as such. No licenses are granted by implication, estoppel or
1204 - * otherwise under any patents or trademarks of Motorola, Inc. This
1205 - * software is provided on an "AS IS" basis and without warranty.
1206 - *
1207 - * To the maximum extent permitted by applicable law, MOTOROLA
1208 - * DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
1209 - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
1210 - * PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
1211 - * SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
1212 - * ACCOMPANYING WRITTEN MATERIALS.
1213 - *
1214 - * To the maximum extent permitted by applicable law, IN NO EVENT
1215 - * SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
1216 - * WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
1217 - * INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
1218 - * LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
1219 - *
1220 - * Motorola assumes no responsibility for the maintenance and support
1221 - * of this software
1222 - ********************************************************************/
1223 -
1224 /*
1225 - * File: MCD_dmaApi.c
1226 - * Purpose: Main C file for multi-channel DMA API.
1227 - *
1228 - * Notes:
1229 + * drivers/dma/MCD_dmaApi.c
1230 *
1231 + * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
1232 + * Kurt Mahan <kmahan@freescale.com>
1233 *
1234 - * Modifications:
1235 + * This program is free software; you can redistribute it and/or
1236 + * modify it under the terms of the GNU General Public License as
1237 + * published by the Free Software Foundation; either version 2 of
1238 + * the License, or (at your option) any later version.
1239 *
1240 + * This program is distributed in the hope that it will be useful,
1241 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1242 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1243 + * GNU General Public License for more details.
1244 *
1245 + * You should have received a copy of the GNU General Public License
1246 + * along with this program; if not, write to the Free Software
1247 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
1248 + * MA 02111-1307 USA
1249 */
1250 -#include <asm/types.h>
1251 -#include <asm/MCD_dma.h>
1252 -#include <asm/virtconvert.h>
1253 +
1254 +#include "MCD_dma.h"
1255 #include "MCD_tasksInit.h"
1256 #include "MCD_progCheck.h"
1257
1258 @@ -148,7 +128,6 @@ MCD_bufDesc *MCD_relocBuffDesc;
1259
1260 /*
1261 * Structure to remember which variant is on which channel
1262 - * TBD- need this?
1263 */
1264 typedef struct MCD_remVariants_struct MCD_remVariant;
1265 struct MCD_remVariants_struct
1266 @@ -164,6 +143,7 @@ struct MCD_remVariants_struct
1267 * Structure to remember the startDma parameters for each channel
1268 */
1269 MCD_remVariant MCD_remVariants;
1270 +
1271 /********************************************************************/
1272 /*
1273 * Function: MCD_initDma
1274 @@ -185,15 +165,14 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1275 int i;
1276 TaskTableEntry *entryPtr;
1277
1278 - /* setup the local pointer to register set */
1279 + /* Setup the local pointer to register set */
1280 MCD_dmaBar = dmaBarAddr;
1281
1282 - /* do we need to move/create a task table */
1283 + /* Do we need to move/create a task table */
1284 if ((flags & MCD_RELOC_TASKS) != 0)
1285 {
1286 int fixedSize;
1287 u32 *fixedPtr;
1288 - /*int *tablePtr = taskTableDest;TBD*/
1289 int varTabsOffset, funcDescTabsOffset, contextSavesOffset;
1290 int taskDescTabsOffset;
1291 int taskTableSize, varTabsSize, funcDescTabsSize, contextSavesSize;
1292 @@ -201,7 +180,7 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1293
1294 int i;
1295
1296 - /* check if physical address is aligned on 512 byte boundary */
1297 + /* Check if physical address is aligned on 512 byte boundary */
1298 if (((u32)taskTableDest & 0x000001ff) != 0)
1299 return(MCD_TABLE_UNALIGNED);
1300
1301 @@ -215,13 +194,12 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1302 * - copy over model task table with the the actual task descriptor
1303 * tables
1304 */
1305 -
1306 taskTableSize = NCHANNELS * sizeof(TaskTableEntry);
1307 - /* align variable tables to size */
1308 + /* Align variable tables to size */
1309 varTabsOffset = taskTableSize + (u32)taskTableDest;
1310 if ((varTabsOffset & (VAR_TAB_SIZE - 1)) != 0)
1311 varTabsOffset = (varTabsOffset + VAR_TAB_SIZE) & (~VAR_TAB_SIZE);
1312 - /* align function descriptor tables */
1313 + /* Align function descriptor tables */
1314 varTabsSize = NCHANNELS * VAR_TAB_SIZE;
1315 funcDescTabsOffset = varTabsOffset + varTabsSize;
1316
1317 @@ -235,13 +213,13 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1318 fixedSize = taskTableSize + varTabsSize + funcDescTabsSize +
1319 contextSavesSize;
1320
1321 - /* zero the thing out */
1322 + /* Zero the thing out */
1323 fixedPtr = (u32 *)taskTableDest;
1324 for (i = 0;i<(fixedSize/4);i++)
1325 fixedPtr[i] = 0;
1326
1327 entryPtr = (TaskTableEntry*)MCD_taskTable;
1328 - /* set up fixed pointers */
1329 + /* Set up fixed pointers */
1330 for (i = 0; i < NCHANNELS; i++)
1331 {
1332 entryPtr[i].varTab = (u32)varTabsOffset; /* update ptr to local value */
1333 @@ -253,25 +231,25 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1334 #endif
1335 contextSavesOffset += CONTEXT_SAVE_SIZE;
1336 }
1337 - /* copy over the function descriptor table */
1338 + /* Copy over the function descriptor table */
1339 for ( i = 0; i < FUNCDESC_TAB_NUM; i++)
1340 {
1341 MCD_memcpy((void*)(entryPtr[i].FDTandFlags & ~MCD_TT_FLAGS_MASK),
1342 (void*)MCD_funcDescTab0, FUNCDESC_TAB_SIZE);
1343 }
1344
1345 - /* copy model task table to where the context saves stuff leaves off*/
1346 + /* Copy model task table to where the context save stuff leaves off */
1347 MCD_modelTaskTable = (TaskTableEntry*)contextSavesOffset;
1348
1349 MCD_memcpy ((void*)MCD_modelTaskTable, (void*)MCD_modelTaskTableSrc,
1350 NUMOFVARIANTS * sizeof(TaskTableEntry));
1351
1352 - entryPtr = MCD_modelTaskTable; /* point to local version of
1353 - model task table */
1354 + /* Point to local version of model task table */
1355 + entryPtr = MCD_modelTaskTable;
1356 taskDescTabsOffset = (u32)MCD_modelTaskTable +
1357 (NUMOFVARIANTS * sizeof(TaskTableEntry));
1358
1359 - /* copy actual task code and update TDT ptrs in local model task table */
1360 + /* Copy actual task code and update TDT ptrs in local model task table */
1361 for (i = 0; i < NUMOFVARIANTS; i++)
1362 {
1363 taskDescTabSize = entryPtr[i].TDTend - entryPtr[i].TDTstart + 4;
1364 @@ -280,25 +258,29 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1365 taskDescTabsOffset += taskDescTabSize;
1366 entryPtr[i].TDTend = (u32)taskDescTabsOffset - 4;
1367 }
1368 -#ifdef MCD_INCLUDE_EU /* Tack single DMA BDs onto end of code so API controls
1369 - where they are since DMA might write to them */
1370 +#ifdef MCD_INCLUDE_EU
1371 + /*
1372 + * Tack single DMA BDs onto end of code so API controls where
1373 + * they are since DMA might write to them
1374 + */
1375 MCD_relocBuffDesc = (MCD_bufDesc*)(entryPtr[NUMOFVARIANTS - 1].TDTend + 4);
1376 -#else /* DMA does not touch them so they can be wherever and we don't need to
1377 - waste SRAM on them */
1378 +#else
1379 + /*
1380 + * DMA does not touch them so they can be wherever and we don't need to
1381 + * waste SRAM on them
1382 + */
1383 MCD_relocBuffDesc = MCD_singleBufDescs;
1384 #endif
1385 }
1386 else
1387 {
1388 - /* point the would-be relocated task tables and the
1389 - buffer descriptors to the ones the linker generated */
1390 -
1391 + /*
1392 + * Point the would-be relocated task tables and the buffer descriptors
1393 + * to the ones the linker generated
1394 + */
1395 if (((u32)MCD_realTaskTableSrc & 0x000001ff) != 0)
1396 return(MCD_TABLE_UNALIGNED);
1397
1398 - /* need to add code to make sure that every thing else is aligned properly TBD*/
1399 - /* this is problematic if we init more than once or after running tasks,
1400 - need to add variable to see if we have aleady init'd */
1401 entryPtr = MCD_realTaskTableSrc;
1402 for (i = 0; i < NCHANNELS; i++)
1403 {
1404 @@ -312,9 +294,7 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1405 MCD_relocBuffDesc = MCD_singleBufDescs;
1406 }
1407
1408 -
1409 - /* Make all channels as totally inactive, and remember them as such: */
1410 -
1411 + /* Make all channels inactive, and remember them as such: */
1412 MCD_dmaBar->taskbar = (u32) MCD_taskTable;
1413 for (i = 0; i < NCHANNELS; i++)
1414 {
1415 @@ -323,13 +303,12 @@ int MCD_initDma (dmaRegs *dmaBarAddr, vo
1416 }
1417
1418 /* Set up pausing mechanism to inactive state: */
1419 - MCD_dmaBar->debugComp1 = 0; /* no particular values yet for either comparator registers */
1420 + MCD_dmaBar->debugComp1 = 0;
1421 MCD_dmaBar->debugComp2 = 0;
1422 MCD_dmaBar->debugControl = DBG_CTL_DISABLE;
1423 MCD_dmaBar->debugStatus = DBG_KILL_ALL_STAT;
1424
1425 - /* enable or disable commbus prefetch, really need an ifdef or
1426 - something to keep from trying to set this in the 8220 */
1427 + /* Enable or disable commbus prefetch */
1428 if ((flags & MCD_COMM_PREFETCH_EN) != 0)
1429 MCD_dmaBar->ptdControl &= ~PTD_CTL_COMM_PREFETCH;
1430 else
1431 @@ -354,8 +333,7 @@ int MCD_dmaStatus (int channel)
1432
1433 tcrValue = MCD_dmaBar->taskControl[channel];
1434 if ((tcrValue & TASK_CTL_EN) == 0)
1435 - { /* nothing running */
1436 - /* if last reported with task enabled */
1437 + { /* Nothing running if last reported with task enabled */
1438 if ( MCD_chStatus[channel] == MCD_RUNNING
1439 || MCD_chStatus[channel] == MCD_IDLE)
1440 MCD_chStatus[channel] = MCD_DONE;
1441 @@ -367,13 +345,12 @@ int MCD_dmaStatus (int channel)
1442 || MCD_chStatus[channel] == MCD_IDLE)
1443 {
1444 MCD_dmaBar->ptdDebug = PTD_DBG_TSK_VLD_INIT;
1445 - /* This register is selected to know which initiator is
1446 - actually asserted. */
1447 + /* Determine which initiator is asserted. */
1448 if ((MCD_dmaBar->ptdDebug >> channel ) & 0x1 )
1449 MCD_chStatus[channel] = MCD_RUNNING;
1450 else
1451 MCD_chStatus[channel] = MCD_IDLE;
1452 - /* do not change the status if it is already paused. */
1453 + /* Do not change the status if it is already paused */
1454 }
1455 }
1456 return MCD_chStatus[channel];
1457 @@ -414,67 +391,86 @@ int MCD_startDma (
1458
1459 if((channel < 0) || (channel >= NCHANNELS))
1460 return(MCD_CHANNEL_INVALID);
1461 -
1462 - /* tbd - need to determine the proper response to a bad funcDesc when not
1463 - including EU functions, for now, assign a benign funcDesc, but maybe
1464 - should return an error */
1465 +
1466 #ifndef MCD_INCLUDE_EU
1467 funcDesc = MCD_FUNC_NOEU1;
1468 #endif
1469 -
1470 +
1471 #ifdef MCD_DEBUG
1472 printf("startDma:Setting up params\n");
1473 #endif
1474 - /* Set us up for task-wise priority. We don't technically need to do this on every start, but
1475 - since the register involved is in the same longword as other registers that users are in control
1476 - of, setting it more than once is probably preferable. That since the documentation doesn't seem
1477 - to be completely consistent about the nature of the PTD control register. */
1478 +
1479 + /* Enable task-wise priority */
1480 MCD_dmaBar->ptdControl |= (u16) 0x8000;
1481 -#if 1 /* Not sure what we need to keep here rtm TBD */
1482 +
1483 /* Calculate additional parameters to the regular DMA calls. */
1484 srcRsdIncr = srcIncr < 0 ? -1 : (srcIncr > 0 ? 1 : 0);
1485 destRsdIncr = destIncr < 0 ? -1 : (destIncr > 0 ? 1 : 0);
1486 -
1487 xferSizeIncr = (xferSize & 0xffff) | 0x20000000;
1488
1489 - /* Remember for each channel which variant is running. */
1490 + /* Remember which variant is running for each channel */
1491 MCD_remVariants.remSrcRsdIncr[channel] = srcRsdIncr;
1492 MCD_remVariants.remDestRsdIncr[channel] = destRsdIncr;
1493 MCD_remVariants.remDestIncr[channel] = destIncr;
1494 MCD_remVariants.remSrcIncr[channel] = srcIncr;
1495 MCD_remVariants.remXferSize[channel] = xferSize;
1496 -#endif
1497
1498 - cSave = (int*)(MCD_taskTable[channel].contextSaveSpace) + CSAVE_OFFSET + CURRBD;
1499 + cSave = (int*)(MCD_taskTable[channel].contextSaveSpace)
1500 + + CSAVE_OFFSET
1501 + + CURRBD;
1502
1503 -#ifdef MCD_INCLUDE_EU /* may move this to EU specific calls */
1504 +#ifdef MCD_INCLUDE_EU
1505 realFuncArray = (u32 *) (MCD_taskTable[channel].FDTandFlags & 0xffffff00);
1506 - /* Modify the LURC's normal and byte-residue-loop functions according to parameter. */
1507 - realFuncArray[(LURC*16)] = xferSize == 4 ?
1508 - funcDesc : xferSize == 2 ?
1509 - funcDesc & 0xfffff00f : funcDesc & 0xffff000f;
1510 - realFuncArray[(LURC*16+1)] = (funcDesc & MCD_BYTE_SWAP_KILLER) | MCD_NO_BYTE_SWAP_ATALL;
1511 -#endif
1512 - /* Write the initiator field in the TCR, and also set the initiator-hold
1513 - bit. Note that,due to a hardware quirk, this could collide with an
1514 - MDE access to the initiator-register file, so we have to verify that the write
1515 - reads back correctly. */
1516
1517 - MCD_dmaBar->taskControl[channel] =
1518 - (initiator << 8) | TASK_CTL_HIPRITSKEN | TASK_CTL_HLDINITNUM;
1519 + /*
1520 + * Modify the LURC's normal and byte-residue-loop functions
1521 + * according to parameter.
1522 + */
1523 + switch (xferSize)
1524 + {
1525 + case 4:
1526 + realFuncArray[(LURC*16)] = funcDesc;
1527 + break;
1528 + case 2:
1529 + realFuncArray[(LURC*16)] = funcDesc & 0xfffff00f;
1530 + break;
1531 + case 1:
1532 + default:
1533 + realFuncArray[(LURC*16)] = funcDesc & 0xffff000f;
1534 + break;
1535 + }
1536
1537 + realFuncArray[(LURC*16+1)] = 0
1538 + | (funcDesc & MCD_BYTE_SWAP_KILLER)
1539 + | MCD_NO_BYTE_SWAP_ATALL;
1540 +#endif
1541 +
1542 + /* Write the initiator field in the TCR and set the initiator-hold bit*/
1543 + MCD_dmaBar->taskControl[channel] = 0
1544 + | (initiator << 8)
1545 + | TASK_CTL_HIPRITSKEN
1546 + | TASK_CTL_HLDINITNUM;
1547 +
1548 + /*
1549 + * Current versions of the MPC8220 MCD have a hardware quirk that could
1550 + * cause the write to the TCR to collide with an MDE access to the
1551 + * initiator-register file, so we have to verify that the write occurred
1552 + * correctly by reading back the value. On MCF547x/8x devices and any
1553 + * future revisions of the MPC8220, this loop will not be entered.
1554 + */
1555 while(((MCD_dmaBar->taskControl[channel] & 0x1fff) !=
1556 ((initiator << 8) | TASK_CTL_HIPRITSKEN | TASK_CTL_HLDINITNUM)) &&
1557 (tcrCount < 1000))
1558 {
1559 tcrCount++;
1560 - /*MCD_dmaBar->ptd_tcr[channel] = (initiator << 8) | 0x0020;*/
1561 - MCD_dmaBar->taskControl[channel] =
1562 - (initiator << 8) | TASK_CTL_HIPRITSKEN | TASK_CTL_HLDINITNUM;
1563 + MCD_dmaBar->taskControl[channel] = 0
1564 + | (initiator << 8)
1565 + | TASK_CTL_HIPRITSKEN
1566 + | TASK_CTL_HLDINITNUM;
1567 }
1568
1569 MCD_dmaBar->priority[channel] = (u8)priority & PRIORITY_PRI_MASK;
1570 - /* should be albe to handle this stuff with only one write to ts reg - tbd */
1571 +
1572 if (channel < 8 && channel >= 0)
1573 {
1574 MCD_dmaBar->taskSize0 &= ~(0xf << (7-channel)*4);
1575 @@ -488,7 +484,7 @@ printf("startDma:Setting up params\n");
1576 MCD_dmaBar->taskSize1 |= (xferSize & 3) << ((15 - channel)*4);
1577 }
1578
1579 - /* setup task table flags/options which mostly control the line buffers */
1580 + /* Setup task table flags/options */
1581 MCD_taskTable[channel].FDTandFlags &= ~MCD_TT_FLAGS_MASK;
1582 MCD_taskTable[channel].FDTandFlags |= (MCD_TT_FLAGS_MASK & flags);
1583
1584 @@ -508,79 +504,86 @@ printf("startDma:Setting up params\n");
1585 }
1586 else if(flags & MCD_SINGLE_DMA)
1587 {
1588 - /* this buffer descriptor is used for storing off initial parameters for later
1589 - progress query calculation and for the DMA to write the resulting checksum
1590 - The DMA does not use this to determine how to operate, that info is passed
1591 - with the init routine*/
1592 + /*
1593 + * This buffer descriptor is used for storing off initial parameters
1594 + * for later progress query calculation and for the DMA to write the
1595 + * resulting checksum. The DMA does not use this to determine how to
1596 + * operate, that info is passed with the init routine
1597 + */
1598 MCD_relocBuffDesc[channel].srcAddr = srcAddr;
1599 MCD_relocBuffDesc[channel].destAddr = destAddr;
1600 - MCD_relocBuffDesc[channel].lastDestAddr = destAddr; /* definitely not its final value */
1601 + MCD_relocBuffDesc[channel].lastDestAddr = destAddr;
1602 MCD_relocBuffDesc[channel].dmaSize = dmaSize;
1603 MCD_relocBuffDesc[channel].flags = 0; /* not used */
1604 MCD_relocBuffDesc[channel].csumResult = 0; /* not used */
1605 MCD_relocBuffDesc[channel].next = 0; /* not used */
1606
1607 /* Initialize the progress-querying stuff to show no progress:*/
1608 - ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[SRCPTR + CSAVE_OFFSET] = (int)srcAddr;
1609 - ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DESTPTR + CSAVE_OFFSET] = (int)destAddr;
1610 - ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DCOUNT + CSAVE_OFFSET] = 0;
1611 - ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[CURRBD + CSAVE_OFFSET] =
1612 - (u32) &(MCD_relocBuffDesc[channel]);
1613 - /* tbd - need to keep the user from trying to call the EU routine
1614 - when MCD_INCLUDE_EU is not defined */
1615 + ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[SRCPTR + CSAVE_OFFSET]
1616 + = (int)srcAddr;
1617 + ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DESTPTR + CSAVE_OFFSET]
1618 + = (int)destAddr;
1619 + ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DCOUNT + CSAVE_OFFSET]
1620 + = 0;
1621 + ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[CURRBD + CSAVE_OFFSET]
1622 + = (u32) &(MCD_relocBuffDesc[channel]);
1623 +
1624 if( funcDesc == MCD_FUNC_NOEU1 || funcDesc == MCD_FUNC_NOEU2)
1625 {
1626 - /* TDTStart and TDTEnd */
1627 - MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_SINGLENOEU].TDTstart;
1628 - MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_SINGLENOEU].TDTend;
1629 - MCD_startDmaSingleNoEu(srcAddr, srcIncr, destAddr, destIncr, dmaSize, dmaSize,
1630 - xferSizeIncr, flags, (int *)&(MCD_relocBuffDesc[channel]), cSave,
1631 - MCD_taskTable, channel);
1632 + /* TDTStart and TDTEnd */
1633 + MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_SINGLENOEU].TDTstart;
1634 + MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_SINGLENOEU].TDTend;
1635 + MCD_startDmaSingleNoEu(srcAddr, srcIncr, destAddr, destIncr, dmaSize,
1636 + xferSizeIncr, flags, (int *)&(MCD_relocBuffDesc[channel]),
1637 + cSave, MCD_taskTable, channel);
1638 }
1639 else
1640 {
1641 - /* TDTStart and TDTEnd */
1642 - MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_SINGLEEU].TDTstart;
1643 - MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_SINGLEEU].TDTend;
1644 - MCD_startDmaSingleEu(srcAddr, srcIncr, destAddr, destIncr, dmaSize, dmaSize,
1645 - xferSizeIncr, flags, (int *)&(MCD_relocBuffDesc[channel]), cSave,
1646 - MCD_taskTable, channel);
1647 + /* TDTStart and TDTEnd */
1648 + MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_SINGLEEU].TDTstart;
1649 + MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_SINGLEEU].TDTend;
1650 + MCD_startDmaSingleEu(srcAddr, srcIncr, destAddr, destIncr, dmaSize,
1651 + xferSizeIncr, flags, (int *)&(MCD_relocBuffDesc[channel]),
1652 + cSave, MCD_taskTable, channel);
1653 }
1654 }
1655 - else
1656 - { /* chained DMAS */
1657 + else /* Chained DMA */
1658 + {
1659 /* Initialize the progress-querying stuff to show no progress:*/
1660 #if 1 /* (!defined(MCD_NEED_ADDR_TRANS)) */
1661 ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[SRCPTR + CSAVE_OFFSET]
1662 - = (int)((MCD_bufDesc*) phys_to_virt(srcAddr))->srcAddr;
1663 + = (int)((MCD_bufDesc*) srcAddr)->srcAddr;
1664 ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DESTPTR + CSAVE_OFFSET]
1665 - = (int)((MCD_bufDesc*) phys_to_virt(srcAddr))->destAddr;
1666 + = (int)((MCD_bufDesc*) srcAddr)->destAddr;
1667 #else /* if using address translation, need the virtual addr of the first buffdesc */
1668 ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[SRCPTR + CSAVE_OFFSET]
1669 = (int)((MCD_bufDesc*) srcAddrVirt)->srcAddr;
1670 ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DESTPTR + CSAVE_OFFSET]
1671 = (int)((MCD_bufDesc*) srcAddrVirt)->destAddr;
1672 #endif
1673 - ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DCOUNT + CSAVE_OFFSET] = 0;
1674 - ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[CURRBD + CSAVE_OFFSET] = (u32) srcAddr;
1675 + ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[DCOUNT + CSAVE_OFFSET]
1676 + = 0;
1677 + ((volatile int *)MCD_taskTable[channel].contextSaveSpace)[CURRBD + CSAVE_OFFSET]
1678 + = (u32) srcAddr;
1679
1680 if( funcDesc == MCD_FUNC_NOEU1 || funcDesc == MCD_FUNC_NOEU2)
1681 {
1682 - /*TDTStart and TDTEnd*/
1683 - MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_CHAINNOEU].TDTstart;
1684 - MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_CHAINNOEU].TDTend;
1685 - MCD_startDmaChainNoEu((int *)srcAddr, srcIncr, destIncr, xferSize,
1686 + /* TDTStart and TDTEnd */
1687 + MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_CHAINNOEU].TDTstart;
1688 + MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_CHAINNOEU].TDTend;
1689 + MCD_startDmaChainNoEu((int *)srcAddr, srcIncr, destIncr, xferSize,
1690 xferSizeIncr, cSave, MCD_taskTable, channel);
1691 }
1692 else
1693 {
1694 - /*TDTStart and TDTEnd*/
1695 - MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_CHAINEU].TDTstart;
1696 - MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_CHAINEU].TDTend;
1697 - MCD_startDmaChainEu((int *)srcAddr, srcIncr, destIncr, xferSize,
1698 + /* TDTStart and TDTEnd */
1699 + MCD_taskTable[channel].TDTstart = MCD_modelTaskTable[TASK_CHAINEU].TDTstart;
1700 + MCD_taskTable[channel].TDTend = MCD_modelTaskTable[TASK_CHAINEU].TDTend;
1701 + MCD_startDmaChainEu((int *)srcAddr, srcIncr, destIncr, xferSize,
1702 xferSizeIncr, cSave, MCD_taskTable, channel);
1703 }
1704 }
1705 +
1706 MCD_chStatus[channel] = MCD_IDLE;
1707 return(MCD_OK);
1708 }
1709 @@ -597,7 +600,7 @@ printf("startDma:Setting up params\n");
1710 * Notes:
1711 * MCD_XferProgrQuery() upon completing or after aborting a DMA, or
1712 * while the DMA is in progress, this function returns the first
1713 - * DMA-destination address not (or not yet) used in the DMA. When
1714 + * DMA-destination address not (or not yet) used in the DMA. When
1715 * encountering a non-ready buffer descriptor, the information for
1716 * the last completed descriptor is returned.
1717 *
1718 @@ -642,11 +645,13 @@ int MCD_XferProgrQuery (int channel, MCD
1719 prevRep.dmaSize = ((volatile int*) MCD_taskTable[channel].contextSaveSpace)[DCOUNT + CSAVE_OFFSET];
1720 prevRep.currBufDesc =
1721 (MCD_bufDesc*) ((volatile int*) MCD_taskTable[channel].contextSaveSpace)[CURRBD + CSAVE_OFFSET];
1722 +
1723 /* Repeatedly reread those values until they match previous values: */
1724 do {
1725 - /* Waste a little bit of time to ensure stability: */
1726 + /* Take a little bit of time to ensure stability: */
1727 for (i = 0; i < STABTIME; i++)
1728 - i += i >> 2; /* make sure this loop does something so that it doesn't get optimized out */
1729 + i += i >> 2; /* make sure this loop does something so that it
1730 + doesn't get optimized out */
1731 /* Check them again: */
1732 progRep->lastSrcAddr =
1733 (s8 *) ((volatile int*) MCD_taskTable[channel].contextSaveSpace)[SRCPTR + CSAVE_OFFSET];
1734 @@ -655,31 +660,33 @@ int MCD_XferProgrQuery (int channel, MCD
1735 progRep->dmaSize = ((volatile int*) MCD_taskTable[channel].contextSaveSpace)[DCOUNT + CSAVE_OFFSET];
1736 progRep->currBufDesc =
1737 (MCD_bufDesc*) ((volatile int*) MCD_taskTable[channel].contextSaveSpace)[CURRBD + CSAVE_OFFSET];
1738 - /* See if they match: */
1739 - if ( prevRep.lastSrcAddr != progRep->lastSrcAddr
1740 - || prevRep.lastDestAddr != progRep->lastDestAddr
1741 - || prevRep.dmaSize != progRep->dmaSize
1742 - || prevRep.currBufDesc != progRep->currBufDesc)
1743 - {
1744 - /* If they don't match, remember previous values and try again:*/
1745 - prevRep.lastSrcAddr = progRep->lastSrcAddr;
1746 - prevRep.lastDestAddr = progRep->lastDestAddr;
1747 - prevRep.dmaSize = progRep->dmaSize;
1748 - prevRep.currBufDesc = progRep->currBufDesc;
1749 - again = MCD_TRUE;
1750 - }
1751 - else
1752 +
1753 + /* See if they match: */
1754 + if ( prevRep.lastSrcAddr != progRep->lastSrcAddr
1755 + || prevRep.lastDestAddr != progRep->lastDestAddr
1756 + || prevRep.dmaSize != progRep->dmaSize
1757 + || prevRep.currBufDesc != progRep->currBufDesc)
1758 + {
1759 + /* If they don't match, remember previous values and try again:*/
1760 + prevRep.lastSrcAddr = progRep->lastSrcAddr;
1761 + prevRep.lastDestAddr = progRep->lastDestAddr;
1762 + prevRep.dmaSize = progRep->dmaSize;
1763 + prevRep.currBufDesc = progRep->currBufDesc;
1764 + again = MCD_TRUE;
1765 + }
1766 + else
1767 again = MCD_FALSE;
1768 } while (again == MCD_TRUE);
1769
1770
1771 - /* Update the dCount, srcAddr and destAddr */
1772 - /* To calculate dmaCount, we consider destination address. C
1773 - overs M1,P1,Z for destination */
1774 - switch(MCD_remVariants.remDestRsdIncr[channel]) {
1775 + /* Update dmaSize and lastDestAddr */
1776 + switch(MCD_remVariants.remDestRsdIncr[channel])
1777 + {
1778 case MINUS1:
1779 - subModVal = ((int)progRep->lastDestAddr) & ((MCD_remVariants.remXferSize[channel]) - 1);
1780 - addModVal = ((int)progRep->currBufDesc->destAddr) & ((MCD_remVariants.remXferSize[channel]) - 1);
1781 + subModVal = ((int)progRep->lastDestAddr)
1782 + & ((MCD_remVariants.remXferSize[channel]) - 1);
1783 + addModVal = ((int)progRep->currBufDesc->destAddr)
1784 + & ((MCD_remVariants.remXferSize[channel]) - 1);
1785 LWAlignedInitDestAddr = (progRep->currBufDesc->destAddr) - addModVal;
1786 LWAlignedCurrDestAddr = (progRep->lastDestAddr) - subModVal;
1787 destDiffBytes = LWAlignedInitDestAddr - LWAlignedCurrDestAddr;
1788 @@ -692,25 +699,28 @@ int MCD_XferProgrQuery (int channel, MCD
1789 progRep->lastDestAddr = progRep->currBufDesc->destAddr;
1790 break;
1791 case PLUS1:
1792 - /* This value has to be subtracted from the final calculated dCount. */
1793 - subModVal = ((int)progRep->currBufDesc->destAddr) & ((MCD_remVariants.remXferSize[channel]) - 1);
1794 + /* This value has to be subtracted from the final calculated dmaSize. */
1795 + subModVal = ((int)progRep->currBufDesc->destAddr)
1796 + & ((MCD_remVariants.remXferSize[channel]) - 1);
1797 /* These bytes are already in lastDestAddr. */
1798 - addModVal = ((int)progRep->lastDestAddr) & ((MCD_remVariants.remXferSize[channel]) - 1);
1799 + addModVal = ((int)progRep->lastDestAddr)
1800 + & ((MCD_remVariants.remXferSize[channel]) - 1);
1801 LWAlignedInitDestAddr = (progRep->currBufDesc->destAddr) - subModVal;
1802 LWAlignedCurrDestAddr = (progRep->lastDestAddr) - addModVal;
1803 destDiffBytes = (progRep->lastDestAddr - LWAlignedInitDestAddr);
1804 numIterations = ( LWAlignedCurrDestAddr - LWAlignedInitDestAddr)/MCD_remVariants.remDestIncr[channel];
1805 bytesNotXfered = numIterations *
1806 - ( MCD_remVariants.remDestIncr[channel]
1807 - - MCD_remVariants.remXferSize[channel]);
1808 - progRep->dmaSize = destDiffBytes - bytesNotXfered - subModVal;
1809 - break;
1810 + (MCD_remVariants.remDestIncr[channel]
1811 + - MCD_remVariants.remXferSize[channel]);
1812 + progRep->dmaSize = destDiffBytes - bytesNotXfered - subModVal;
1813 + break;
1814 default:
1815 - break;
1816 + break;
1817 }
1818
1819 /* This covers M1,P1,Z for source */
1820 - switch(MCD_remVariants.remSrcRsdIncr[channel]) {
1821 + switch(MCD_remVariants.remSrcRsdIncr[channel])
1822 + {
1823 case MINUS1:
1824 progRep->lastSrcAddr =
1825 progRep->currBufDesc->srcAddr +
1826 @@ -720,13 +730,14 @@ int MCD_XferProgrQuery (int channel, MCD
1827 case ZERO:
1828 progRep->lastSrcAddr = progRep->currBufDesc->srcAddr;
1829 break;
1830 - case PLUS1:
1831 + case PLUS1:
1832 progRep->lastSrcAddr =
1833 progRep->currBufDesc->srcAddr +
1834 ( MCD_remVariants.remSrcIncr[channel] *
1835 (progRep->dmaSize/MCD_remVariants.remXferSize[channel]));
1836 - break;
1837 - default: break;
1838 + break;
1839 + default:
1840 + break;
1841 }
1842
1843 return(MCD_OK);
1844 @@ -744,8 +755,10 @@ static void MCD_resmActions (int channel
1845 {
1846 MCD_dmaBar->debugControl = DBG_CTL_DISABLE;
1847 MCD_dmaBar->debugStatus = MCD_dmaBar->debugStatus;
1848 - MCD_dmaBar->ptdDebug = PTD_DBG_TSK_VLD_INIT; /* This register is selected to know
1849 - which initiator is actually asserted. */
1850 +
1851 + /* Determine which initiators are asserted */
1852 + MCD_dmaBar->ptdDebug = PTD_DBG_TSK_VLD_INIT;
1853 +
1854 if((MCD_dmaBar->ptdDebug >> channel ) & 0x1)
1855 MCD_chStatus[channel] = MCD_RUNNING;
1856 else
1857 @@ -767,27 +780,20 @@ static void MCD_resmActions (int channel
1858 */
1859 int MCD_killDma (int channel)
1860 {
1861 - /* MCD_XferProg progRep; */
1862 -
1863 if((channel < 0) || (channel >= NCHANNELS))
1864 return(MCD_CHANNEL_INVALID);
1865
1866 MCD_dmaBar->taskControl[channel] = 0x0;
1867 - MCD_resumeDma (channel);
1868 - /*
1869 - * This must be after the write to the TCR so that the task doesn't
1870 - * start up again momentarily, and before the status assignment so
1871 - * as to override whatever MCD_resumeDma() may do to the channel
1872 - * status.
1873 - */
1874 +
1875 + /* Clean up after a paused task */
1876 + if (MCD_chStatus[channel] == MCD_PAUSED)
1877 + {
1878 + MCD_dmaBar->debugControl = DBG_CTL_DISABLE;
1879 + MCD_dmaBar->debugStatus = MCD_dmaBar->debugStatus;
1880 + }
1881 +
1882 MCD_chStatus[channel] = MCD_HALTED;
1883
1884 - /*
1885 - * Update the current buffer descriptor's lastDestAddr field
1886 - *
1887 - * MCD_XferProgrQuery (channel, &progRep);
1888 - * progRep.currBufDesc->lastDestAddr = progRep.lastDestAddr;
1889 - */
1890 return(MCD_OK);
1891 }
1892 /************************ End of MCD_killDma() **********************/
1893 @@ -843,7 +849,7 @@ int MCD_continDma (int channel)
1894 * this means that bits 14 and 0 must enable debug functions before
1895 * bits 1 and 2, respectively, have any effect.
1896 *
1897 - * NOTE: It's extremely important to not pause more than one DMA channel
1898 + * NOTE: It's extremely important to not pause more than one DMA channel
1899 * at a time.
1900 ********************************************************************/
1901
1902 @@ -856,8 +862,6 @@ int MCD_continDma (int channel)
1903 */
1904 int MCD_pauseDma (int channel)
1905 {
1906 - /* MCD_XferProg progRep; */
1907 -
1908 if((channel < 0) || (channel >= NCHANNELS))
1909 return(MCD_CHANNEL_INVALID);
1910
1911 @@ -866,13 +870,6 @@ int MCD_pauseDma (int channel)
1912 MCD_dmaBar->debugComp1 = channel;
1913 MCD_dmaBar->debugControl = DBG_CTL_ENABLE | (1 << (channel + 16));
1914 MCD_chStatus[channel] = MCD_PAUSED;
1915 -
1916 - /*
1917 - * Update the current buffer descriptor's lastDestAddr field
1918 - *
1919 - * MCD_XferProgrQuery (channel, &progRep);
1920 - * progRep.currBufDesc->lastDestAddr = progRep.lastDestAddr;
1921 - */
1922 }
1923 return(MCD_OK);
1924 }
1925 @@ -929,9 +926,9 @@ int MCD_csumQuery (int channel, u32 *csu
1926 int MCD_getCodeSize(void)
1927 {
1928 #ifdef MCD_INCLUDE_EU
1929 - return(0x2b5c);
1930 + return(0x2b64);
1931 #else
1932 - return(0x173c);
1933 + return(0x1744);
1934 #endif
1935 }
1936 /********************** End of MCD_getCodeSize() ********************/
1937 @@ -943,9 +940,9 @@ int MCD_getCodeSize(void)
1938 * which points to the version string
1939 * Returns: Version number and version string (by reference)
1940 */
1941 -char MCD_versionString[] = "Multi-channel DMA API Alpha v0.3 (2004-04-26)";
1942 -#define MCD_REV_MAJOR 0x00
1943 -#define MCD_REV_MINOR 0x03
1944 +char MCD_versionString[] = "Multi-channel DMA API v1.0";
1945 +#define MCD_REV_MAJOR 0x01
1946 +#define MCD_REV_MINOR 0x00
1947
1948 int MCD_getVersion(char **longVersion)
1949 {
1950 --- a/drivers/dma/MCD_progCheck.h
1951 +++ b/drivers/dma/MCD_progCheck.h
1952 @@ -1,32 +1,27 @@
1953 -/*********************************************************************
1954 +/*
1955 + * drivers/dma/MCD_progCheck.h
1956 *
1957 - * Copyright (C) 2004 Motorola, Inc.
1958 - * MOTOROLA, INC. All Rights Reserved.
1959 - * You are hereby granted a copyright license to use
1960 - * the SOFTWARE so long as this entire notice is
1961 - * retained without alteration in any modified and/or redistributed
1962 - * versions, and that such modified versions are clearly identified
1963 - * as such. No licenses are granted by implication, estoppel or
1964 - * otherwise under any patents or trademarks of Motorola, Inc. This
1965 - * software is provided on an "AS IS" basis and without warranty.
1966 + * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
1967 + * Kurt Mahan <kmahan@freescale.com>
1968 *
1969 - * To the maximum extent permitted by applicable law, MOTOROLA
1970 - * DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
1971 - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
1972 - * PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
1973 - * SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
1974 - * ACCOMPANYING WRITTEN MATERIALS.
1975 + * This program is free software; you can redistribute it and/or
1976 + * modify it under the terms of the GNU General Public License as
1977 + * published by the Free Software Foundation; either version 2 of
1978 + * the License, or (at your option) any later version.
1979 *
1980 - * To the maximum extent permitted by applicable law, IN NO EVENT
1981 - * SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
1982 - * WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
1983 - * INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
1984 - * LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
1985 + * This program is distributed in the hope that it will be useful,
1986 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1987 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1988 + * GNU General Public License for more details.
1989 *
1990 - * Motorola assumes no responsibility for the maintenance and support
1991 - * of this software
1992 - ********************************************************************/
1993 - /* This file is autogenerated. Do not change */
1994 + * You should have received a copy of the GNU General Public License
1995 + * along with this program; if not, write to the Free Software
1996 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
1997 + * MA 02111-1307 USA
1998 + */
1999 +
2000 +/* This file is autogenerated. Do not change */
2001 +
2002 #define CURRBD 4
2003 #define DCOUNT 6
2004 #define DESTPTR 5
2005 --- a/drivers/dma/MCD_tasks.c
2006 +++ b/drivers/dma/MCD_tasks.c
2007 @@ -1,44 +1,26 @@
2008 -/*********************************************************************
2009 - *
2010 - * Copyright (C) 2004 Motorola, Inc.
2011 - * MOTOROLA, INC. All Rights Reserved.
2012 - * You are hereby granted a copyright license to use
2013 - * the SOFTWARE so long as this entire notice is
2014 - * retained without alteration in any modified and/or redistributed
2015 - * versions, and that such modified versions are clearly identified
2016 - * as such. No licenses are granted by implication, estoppel or
2017 - * otherwise under any patents or trademarks of Motorola, Inc. This
2018 - * software is provided on an "AS IS" basis and without warranty.
2019 - *
2020 - * To the maximum extent permitted by applicable law, MOTOROLA
2021 - * DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
2022 - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
2023 - * PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
2024 - * SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
2025 - * ACCOMPANYING WRITTEN MATERIALS.
2026 - *
2027 - * To the maximum extent permitted by applicable law, IN NO EVENT
2028 - * SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
2029 - * WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
2030 - * INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
2031 - * LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
2032 - *
2033 - * Motorola assumes no responsibility for the maintenance and support
2034 - * of this software
2035 - ********************************************************************/
2036 /*
2037 - * File: MCD_tasks.c
2038 - * Purpose: Contains task code and structures for Multi-channel DMA
2039 - *
2040 - * Notes:
2041 + * drivers/dma/MCD_tasks.c
2042 *
2043 + * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
2044 + * Kurt Mahan <kmahan@freescale.com>
2045 *
2046 - * Modifications:
2047 + * This program is free software; you can redistribute it and/or
2048 + * modify it under the terms of the GNU General Public License as
2049 + * published by the Free Software Foundation; either version 2 of
2050 + * the License, or (at your option) any later version.
2051 *
2052 + * This program is distributed in the hope that it will be useful,
2053 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
2054 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2055 + * GNU General Public License for more details.
2056 *
2057 + * You should have received a copy of the GNU General Public License
2058 + * along with this program; if not, write to the Free Software
2059 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2060 + * MA 02111-1307 USA
2061 */
2062
2063 -#include <asm/MCD_dma.h>
2064 +#include "MCD_dma.h"
2065
2066 u32 MCD_varTab0[];
2067 u32 MCD_varTab1[];
2068 @@ -922,13 +904,13 @@ u32 MCD_funcDescTab0[]=
2069 0x20400000, /* add(), EU# 3 */
2070 0x20500000, /* sub(), EU# 3 */
2071 0x205a0000, /* andNot(), EU# 3 */
2072 + 0x20a00000, /* shiftR(), EU# 3 */
2073 0x202fa000, /* andReadyBit(), EU# 3 */
2074 0x202f9000, /* andNotReadyBit(), EU# 3 */
2075 0x202ea000, /* andWrapBit(), EU# 3 */
2076 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2077 + 0x202da000, /* andLastBit(), EU# 3 */
2078 0x202e2000, /* andInterruptBit(), EU# 3 */
2079 - 0x202f2000, /* andLoopBit(), EU# 3 */
2080 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2081 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2082 };
2083
2084 #ifdef MCD_INCLUDE_EU
2085 @@ -991,13 +973,13 @@ u32 MCD_funcDescTab1[]=
2086 0x20400000, /* add(), EU# 3 */
2087 0x20500000, /* sub(), EU# 3 */
2088 0x205a0000, /* andNot(), EU# 3 */
2089 + 0x20a00000, /* shiftR(), EU# 3 */
2090 0x202fa000, /* andReadyBit(), EU# 3 */
2091 0x202f9000, /* andNotReadyBit(), EU# 3 */
2092 0x202ea000, /* andWrapBit(), EU# 3 */
2093 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2094 + 0x202da000, /* andLastBit(), EU# 3 */
2095 0x202e2000, /* andInterruptBit(), EU# 3 */
2096 - 0x202f2000, /* andLoopBit(), EU# 3 */
2097 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2098 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2099 };
2100
2101 u32 MCD_funcDescTab2[]=
2102 @@ -1059,13 +1041,13 @@ u32 MCD_funcDescTab2[]=
2103 0x20400000, /* add(), EU# 3 */
2104 0x20500000, /* sub(), EU# 3 */
2105 0x205a0000, /* andNot(), EU# 3 */
2106 + 0x20a00000, /* shiftR(), EU# 3 */
2107 0x202fa000, /* andReadyBit(), EU# 3 */
2108 0x202f9000, /* andNotReadyBit(), EU# 3 */
2109 0x202ea000, /* andWrapBit(), EU# 3 */
2110 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2111 + 0x202da000, /* andLastBit(), EU# 3 */
2112 0x202e2000, /* andInterruptBit(), EU# 3 */
2113 - 0x202f2000, /* andLoopBit(), EU# 3 */
2114 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2115 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2116 };
2117
2118 u32 MCD_funcDescTab3[]=
2119 @@ -1127,13 +1109,13 @@ u32 MCD_funcDescTab3[]=
2120 0x20400000, /* add(), EU# 3 */
2121 0x20500000, /* sub(), EU# 3 */
2122 0x205a0000, /* andNot(), EU# 3 */
2123 + 0x20a00000, /* shiftR(), EU# 3 */
2124 0x202fa000, /* andReadyBit(), EU# 3 */
2125 0x202f9000, /* andNotReadyBit(), EU# 3 */
2126 0x202ea000, /* andWrapBit(), EU# 3 */
2127 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2128 + 0x202da000, /* andLastBit(), EU# 3 */
2129 0x202e2000, /* andInterruptBit(), EU# 3 */
2130 - 0x202f2000, /* andLoopBit(), EU# 3 */
2131 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2132 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2133 };
2134
2135 u32 MCD_funcDescTab4[]=
2136 @@ -1195,13 +1177,13 @@ u32 MCD_funcDescTab4[]=
2137 0x20400000, /* add(), EU# 3 */
2138 0x20500000, /* sub(), EU# 3 */
2139 0x205a0000, /* andNot(), EU# 3 */
2140 + 0x20a00000, /* shiftR(), EU# 3 */
2141 0x202fa000, /* andReadyBit(), EU# 3 */
2142 0x202f9000, /* andNotReadyBit(), EU# 3 */
2143 0x202ea000, /* andWrapBit(), EU# 3 */
2144 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2145 + 0x202da000, /* andLastBit(), EU# 3 */
2146 0x202e2000, /* andInterruptBit(), EU# 3 */
2147 - 0x202f2000, /* andLoopBit(), EU# 3 */
2148 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2149 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2150 };
2151
2152 u32 MCD_funcDescTab5[]=
2153 @@ -1263,13 +1245,13 @@ u32 MCD_funcDescTab5[]=
2154 0x20400000, /* add(), EU# 3 */
2155 0x20500000, /* sub(), EU# 3 */
2156 0x205a0000, /* andNot(), EU# 3 */
2157 + 0x20a00000, /* shiftR(), EU# 3 */
2158 0x202fa000, /* andReadyBit(), EU# 3 */
2159 0x202f9000, /* andNotReadyBit(), EU# 3 */
2160 0x202ea000, /* andWrapBit(), EU# 3 */
2161 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2162 + 0x202da000, /* andLastBit(), EU# 3 */
2163 0x202e2000, /* andInterruptBit(), EU# 3 */
2164 - 0x202f2000, /* andLoopBit(), EU# 3 */
2165 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2166 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2167 };
2168
2169 u32 MCD_funcDescTab6[]=
2170 @@ -1331,13 +1313,13 @@ u32 MCD_funcDescTab6[]=
2171 0x20400000, /* add(), EU# 3 */
2172 0x20500000, /* sub(), EU# 3 */
2173 0x205a0000, /* andNot(), EU# 3 */
2174 + 0x20a00000, /* shiftR(), EU# 3 */
2175 0x202fa000, /* andReadyBit(), EU# 3 */
2176 0x202f9000, /* andNotReadyBit(), EU# 3 */
2177 0x202ea000, /* andWrapBit(), EU# 3 */
2178 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2179 + 0x202da000, /* andLastBit(), EU# 3 */
2180 0x202e2000, /* andInterruptBit(), EU# 3 */
2181 - 0x202f2000, /* andLoopBit(), EU# 3 */
2182 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2183 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2184 };
2185
2186 u32 MCD_funcDescTab7[]=
2187 @@ -1399,13 +1381,13 @@ u32 MCD_funcDescTab7[]=
2188 0x20400000, /* add(), EU# 3 */
2189 0x20500000, /* sub(), EU# 3 */
2190 0x205a0000, /* andNot(), EU# 3 */
2191 + 0x20a00000, /* shiftR(), EU# 3 */
2192 0x202fa000, /* andReadyBit(), EU# 3 */
2193 0x202f9000, /* andNotReadyBit(), EU# 3 */
2194 0x202ea000, /* andWrapBit(), EU# 3 */
2195 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2196 + 0x202da000, /* andLastBit(), EU# 3 */
2197 0x202e2000, /* andInterruptBit(), EU# 3 */
2198 - 0x202f2000, /* andLoopBit(), EU# 3 */
2199 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2200 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2201 };
2202
2203 u32 MCD_funcDescTab8[]=
2204 @@ -1467,13 +1449,13 @@ u32 MCD_funcDescTab8[]=
2205 0x20400000, /* add(), EU# 3 */
2206 0x20500000, /* sub(), EU# 3 */
2207 0x205a0000, /* andNot(), EU# 3 */
2208 + 0x20a00000, /* shiftR(), EU# 3 */
2209 0x202fa000, /* andReadyBit(), EU# 3 */
2210 0x202f9000, /* andNotReadyBit(), EU# 3 */
2211 0x202ea000, /* andWrapBit(), EU# 3 */
2212 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2213 + 0x202da000, /* andLastBit(), EU# 3 */
2214 0x202e2000, /* andInterruptBit(), EU# 3 */
2215 - 0x202f2000, /* andLoopBit(), EU# 3 */
2216 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2217 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2218 };
2219
2220 u32 MCD_funcDescTab9[]=
2221 @@ -1535,13 +1517,13 @@ u32 MCD_funcDescTab9[]=
2222 0x20400000, /* add(), EU# 3 */
2223 0x20500000, /* sub(), EU# 3 */
2224 0x205a0000, /* andNot(), EU# 3 */
2225 + 0x20a00000, /* shiftR(), EU# 3 */
2226 0x202fa000, /* andReadyBit(), EU# 3 */
2227 0x202f9000, /* andNotReadyBit(), EU# 3 */
2228 0x202ea000, /* andWrapBit(), EU# 3 */
2229 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2230 + 0x202da000, /* andLastBit(), EU# 3 */
2231 0x202e2000, /* andInterruptBit(), EU# 3 */
2232 - 0x202f2000, /* andLoopBit(), EU# 3 */
2233 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2234 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2235 };
2236
2237 u32 MCD_funcDescTab10[]=
2238 @@ -1603,13 +1585,13 @@ u32 MCD_funcDescTab10[]=
2239 0x20400000, /* add(), EU# 3 */
2240 0x20500000, /* sub(), EU# 3 */
2241 0x205a0000, /* andNot(), EU# 3 */
2242 + 0x20a00000, /* shiftR(), EU# 3 */
2243 0x202fa000, /* andReadyBit(), EU# 3 */
2244 0x202f9000, /* andNotReadyBit(), EU# 3 */
2245 0x202ea000, /* andWrapBit(), EU# 3 */
2246 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2247 + 0x202da000, /* andLastBit(), EU# 3 */
2248 0x202e2000, /* andInterruptBit(), EU# 3 */
2249 - 0x202f2000, /* andLoopBit(), EU# 3 */
2250 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2251 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2252 };
2253
2254 u32 MCD_funcDescTab11[]=
2255 @@ -1671,13 +1653,13 @@ u32 MCD_funcDescTab11[]=
2256 0x20400000, /* add(), EU# 3 */
2257 0x20500000, /* sub(), EU# 3 */
2258 0x205a0000, /* andNot(), EU# 3 */
2259 + 0x20a00000, /* shiftR(), EU# 3 */
2260 0x202fa000, /* andReadyBit(), EU# 3 */
2261 0x202f9000, /* andNotReadyBit(), EU# 3 */
2262 0x202ea000, /* andWrapBit(), EU# 3 */
2263 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2264 + 0x202da000, /* andLastBit(), EU# 3 */
2265 0x202e2000, /* andInterruptBit(), EU# 3 */
2266 - 0x202f2000, /* andLoopBit(), EU# 3 */
2267 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2268 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2269 };
2270
2271 u32 MCD_funcDescTab12[]=
2272 @@ -1739,13 +1721,13 @@ u32 MCD_funcDescTab12[]=
2273 0x20400000, /* add(), EU# 3 */
2274 0x20500000, /* sub(), EU# 3 */
2275 0x205a0000, /* andNot(), EU# 3 */
2276 + 0x20a00000, /* shiftR(), EU# 3 */
2277 0x202fa000, /* andReadyBit(), EU# 3 */
2278 0x202f9000, /* andNotReadyBit(), EU# 3 */
2279 0x202ea000, /* andWrapBit(), EU# 3 */
2280 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2281 + 0x202da000, /* andLastBit(), EU# 3 */
2282 0x202e2000, /* andInterruptBit(), EU# 3 */
2283 - 0x202f2000, /* andLoopBit(), EU# 3 */
2284 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2285 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2286 };
2287
2288 u32 MCD_funcDescTab13[]=
2289 @@ -1807,13 +1789,13 @@ u32 MCD_funcDescTab13[]=
2290 0x20400000, /* add(), EU# 3 */
2291 0x20500000, /* sub(), EU# 3 */
2292 0x205a0000, /* andNot(), EU# 3 */
2293 + 0x20a00000, /* shiftR(), EU# 3 */
2294 0x202fa000, /* andReadyBit(), EU# 3 */
2295 0x202f9000, /* andNotReadyBit(), EU# 3 */
2296 0x202ea000, /* andWrapBit(), EU# 3 */
2297 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2298 + 0x202da000, /* andLastBit(), EU# 3 */
2299 0x202e2000, /* andInterruptBit(), EU# 3 */
2300 - 0x202f2000, /* andLoopBit(), EU# 3 */
2301 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2302 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2303 };
2304
2305 u32 MCD_funcDescTab14[]=
2306 @@ -1875,13 +1857,13 @@ u32 MCD_funcDescTab14[]=
2307 0x20400000, /* add(), EU# 3 */
2308 0x20500000, /* sub(), EU# 3 */
2309 0x205a0000, /* andNot(), EU# 3 */
2310 + 0x20a00000, /* shiftR(), EU# 3 */
2311 0x202fa000, /* andReadyBit(), EU# 3 */
2312 0x202f9000, /* andNotReadyBit(), EU# 3 */
2313 0x202ea000, /* andWrapBit(), EU# 3 */
2314 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2315 + 0x202da000, /* andLastBit(), EU# 3 */
2316 0x202e2000, /* andInterruptBit(), EU# 3 */
2317 - 0x202f2000, /* andLoopBit(), EU# 3 */
2318 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2319 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2320 };
2321
2322 u32 MCD_funcDescTab15[]=
2323 @@ -1943,13 +1925,13 @@ u32 MCD_funcDescTab15[]=
2324 0x20400000, /* add(), EU# 3 */
2325 0x20500000, /* sub(), EU# 3 */
2326 0x205a0000, /* andNot(), EU# 3 */
2327 + 0x20a00000, /* shiftR(), EU# 3 */
2328 0x202fa000, /* andReadyBit(), EU# 3 */
2329 0x202f9000, /* andNotReadyBit(), EU# 3 */
2330 0x202ea000, /* andWrapBit(), EU# 3 */
2331 - 0x202da000, /* andEndFrameBit(), EU# 3 */
2332 + 0x202da000, /* andLastBit(), EU# 3 */
2333 0x202e2000, /* andInterruptBit(), EU# 3 */
2334 - 0x202f2000, /* andLoopBit(), EU# 3 */
2335 - 0x2020a000, /* andCrcRestartBit(), EU# 3 */
2336 + 0x202f2000, /* andCrcRestartBit(), EU# 3 */
2337 };
2338 #endif /*MCD_INCLUDE_EU*/
2339
2340 @@ -1970,7 +1952,6 @@ u32 MCD_contextSave13[128]; /* Task 13 c
2341 u32 MCD_contextSave14[128]; /* Task 14 context save space */
2342 u32 MCD_contextSave15[128]; /* Task 15 context save space */
2343
2344 -/* Task Descriptor Tables - the guts */
2345 u32 MCD_ChainNoEu_TDT[];
2346 u32 MCD_SingleNoEu_TDT[];
2347 #ifdef MCD_INCLUDE_EU
2348 @@ -1983,7 +1964,7 @@ u32 MCD_ENetXmit_TDT[];
2349 u32 MCD_modelTaskTableSrc[]=
2350 {
2351 (u32)MCD_ChainNoEu_TDT,
2352 - (u32)&((u8*)MCD_ChainNoEu_TDT)[0x00000178],
2353 + (u32)&((u8*)MCD_ChainNoEu_TDT)[0x0000016c],
2354 0x00000000,
2355 0x00000000,
2356 0x00000000,
2357 @@ -2000,7 +1981,7 @@ u32 MCD_modelTaskTableSrc[]=
2358 0x00000000,
2359 #ifdef MCD_INCLUDE_EU
2360 (u32)MCD_ChainEu_TDT,
2361 - (u32)&((u8*)MCD_ChainEu_TDT)[0x00000180],
2362 + (u32)&((u8*)MCD_ChainEu_TDT)[0x000001b4],
2363 0x00000000,
2364 0x00000000,
2365 0x00000000,
2366 @@ -2008,7 +1989,7 @@ u32 MCD_modelTaskTableSrc[]=
2367 0x00000000,
2368 0x00000000,
2369 (u32)MCD_SingleEu_TDT,
2370 - (u32)&((u8*)MCD_SingleEu_TDT)[0x000000dc],
2371 + (u32)&((u8*)MCD_SingleEu_TDT)[0x00000124],
2372 0x00000000,
2373 0x00000000,
2374 0x00000000,
2375 @@ -2017,7 +1998,7 @@ u32 MCD_modelTaskTableSrc[]=
2376 0x00000000,
2377 #endif
2378 (u32)MCD_ENetRcv_TDT,
2379 - (u32)&((u8*)MCD_ENetRcv_TDT)[0x0000009C],
2380 + (u32)&((u8*)MCD_ENetRcv_TDT)[0x000000a4],
2381 0x00000000,
2382 0x00000000,
2383 0x00000000,
2384 @@ -2033,420 +2014,452 @@ u32 MCD_modelTaskTableSrc[]=
2385 0x00000000,
2386 0x00000000,
2387 };
2388 -
2389 u32 MCD_ChainNoEu_TDT[]=
2390 {
2391 0x80004000, /* 0000(:370): LCDEXT: idx0 = 0x00000000; ; */
2392 0x8118801b, /* 0004(:370): LCD: idx1 = var2; idx1 once var0; idx1 += inc3 */
2393 - 0xb8ca0018, /* 0008(:371): LCD: idx2 = *(idx1 + var20); idx2 once var0; idx2 += inc3 */
2394 - 0x10004b10, /* 000C(:372): DRD1A: var18 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2395 - 0x7000000c, /* 0010(:373): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
2396 - 0x024cf89f, /* 0014(:373): DRD2B1: var9 = EU3(); EU3(idx2) */
2397 - 0x60000009, /* 0018(:374): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT init=0 WS=0 RS=0 */
2398 + 0xb8c60018, /* 0008(:371): LCD: idx2 = *(idx1 + var12); idx2 once var0; idx2 += inc3 */
2399 + 0x10002b10, /* 000C(:372): DRD1A: var10 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2400 + 0x7000000d, /* 0010(:373): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2401 + 0x018cf89f, /* 0014(:373): DRD2B1: var6 = EU3(); EU3(idx2) */
2402 + 0x6000000a, /* 0018(:374): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
2403 0x080cf89f, /* 001C(:374): DRD2B1: idx0 = EU3(); EU3(idx2) */
2404 0x000001f8, /* 0020(:0): NOP */
2405 - 0x98180524, /* 0024(:378): LCD: idx0 = idx0; idx0 != var20; idx0 += inc4 */
2406 + 0x98180364, /* 0024(:378): LCD: idx0 = idx0; idx0 == var13; idx0 += inc4 */
2407 0x8118801b, /* 0028(:380): LCD: idx1 = var2; idx1 once var0; idx1 += inc3 */
2408 - 0xf8ca001a, /* 002C(:381): LCDEXT: idx2 = *(idx1 + var20 + 8); idx2 once var0; idx2 += inc3 */
2409 - 0xb8ca601b, /* 0030(:382): LCD: idx3 = *(idx1 + var20 + 12); ; idx3 += inc3 */
2410 - 0x10004310, /* 0034(:384): DRD1A: var16 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2411 - 0x00001718, /* 0038(:385): DRD1A: var5 = idx3; FN=0 init=0 WS=0 RS=0 */
2412 - 0xb8ca001d, /* 003C(:387): LCD: idx2 = *(idx1 + var20 + 20); idx2 once var0; idx2 += inc3 */
2413 - 0x10001f10, /* 0040(:388): DRD1A: var7 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2414 + 0xf8c6001a, /* 002C(:381): LCDEXT: idx2 = *(idx1 + var12 + 8); idx2 once var0; idx2 += inc3 */
2415 + 0xb8c6601b, /* 0030(:382): LCD: idx3 = *(idx1 + var12 + 12); ; idx3 += inc3 */
2416 + 0x10002710, /* 0034(:384): DRD1A: var9 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2417 + 0x00000f18, /* 0038(:385): DRD1A: var3 = idx3; FN=0 init=0 WS=0 RS=0 */
2418 + 0xb8c6001d, /* 003C(:387): LCD: idx2 = *(idx1 + var12 + 20); idx2 once var0; idx2 += inc3 */
2419 + 0x10001310, /* 0040(:388): DRD1A: var4 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2420 0x60000007, /* 0044(:389): DRD2A: EU0=0 EU1=0 EU2=0 EU3=7 EXT init=0 WS=0 RS=0 */
2421 - 0x020cf893, /* 0048(:389): DRD2B1: var8 = EU3(); EU3(idx2,var19) */
2422 - 0x98ca001c, /* 004C(:391): LCD: idx2 = idx1 + var20 + 4; idx2 once var0; idx2 += inc3 */
2423 + 0x014cf88b, /* 0048(:389): DRD2B1: var5 = EU3(); EU3(idx2,var11) */
2424 + 0x98c6001c, /* 004C(:391): LCD: idx2 = idx1 + var12 + 4; idx2 once var0; idx2 += inc3 */
2425 0x00000710, /* 0050(:392): DRD1A: var1 = idx2; FN=0 init=0 WS=0 RS=0 */
2426 - 0x98ca8018, /* 0054(:393): LCD: idx2 = idx1 + var21; idx2 once var0; idx2 += inc3 */
2427 - 0x10002b10, /* 0058(:394): DRD1A: var10 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2428 - 0x0000c828, /* 005C(:395): DRD1A: *idx2 = var5; FN=0 init=0 WS=0 RS=0 */
2429 + 0x98c70018, /* 0054(:393): LCD: idx2 = idx1 + var14; idx2 once var0; idx2 += inc3 */
2430 + 0x10001f10, /* 0058(:394): DRD1A: var7 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2431 + 0x0000c818, /* 005C(:395): DRD1A: *idx2 = var3; FN=0 init=0 WS=0 RS=0 */
2432 0x000001f8, /* 0060(:0): NOP */
2433 - 0xc14ae018, /* 0064(:399): LCDEXT: idx1 = var2 + var21; ; idx1 += inc3 */
2434 - 0xc004a51d, /* 0068(:399): LCDEXT: idx2 = var0, idx3 = var9; idx3 == var20; idx2 += inc3, idx3 += inc5 */
2435 + 0xc1476018, /* 0064(:399): LCDEXT: idx1 = var2 + var14; ; idx1 += inc3 */
2436 + 0xc003231d, /* 0068(:399): LCDEXT: idx2 = var0, idx3 = var6; idx3 == var12; idx2 += inc3, idx3 += inc5 */
2437 0x811a601b, /* 006C(:400): LCD: idx4 = var2; ; idx4 += inc3 */
2438 - 0xc28a21c2, /* 0070(:403): LCDEXT: idx5 = var5, idx6 = var20; idx6 < var7; idx5 += inc0, idx6 += inc2 */
2439 - 0x881be009, /* 0074(:403): LCD: idx7 = var16; ; idx7 += inc1 */
2440 + 0xc1862102, /* 0070(:403): LCDEXT: idx5 = var3, idx6 = var12; idx6 < var4; idx5 += inc0, idx6 += inc2 */
2441 + 0x849be009, /* 0074(:403): LCD: idx7 = var9; ; idx7 += inc1 */
2442 0x03fed7b8, /* 0078(:406): DRD1A: *idx7; FN=0 init=31 WS=3 RS=3 */
2443 0xda9b001b, /* 007C(:408): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2444 0x9b9be01b, /* 0080(:408): LCD: idx7 = idx7; ; idx7 += inc3 */
2445 0x1000cb20, /* 0084(:409): DRD1A: *idx2 = idx4; FN=0 MORE init=0 WS=0 RS=0 */
2446 0x70000006, /* 0088(:410): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2447 - 0x088cf896, /* 008C(:410): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2448 + 0x088cf88f, /* 008C(:410): DRD2B1: idx2 = EU3(); EU3(idx2,var15) */
2449 0x1000cb28, /* 0090(:411): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2450 0x70000006, /* 0094(:412): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2451 - 0x088cf896, /* 0098(:412): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2452 + 0x088cf88f, /* 0098(:412): DRD2B1: idx2 = EU3(); EU3(idx2,var15) */
2453 0x1000cb30, /* 009C(:413): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2454 0x70000006, /* 00A0(:414): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2455 - 0x088cf896, /* 00A4(:414): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2456 + 0x088cf88f, /* 00A4(:414): DRD2B1: idx2 = EU3(); EU3(idx2,var15) */
2457 0x1000cb38, /* 00A8(:415): DRD1A: *idx2 = idx7; FN=0 MORE init=0 WS=0 RS=0 */
2458 0x0000c728, /* 00AC(:416): DRD1A: *idx1 = idx5; FN=0 init=0 WS=0 RS=0 */
2459 0x000001f8, /* 00B0(:0): NOP */
2460 - 0xc14ae018, /* 00B4(:420): LCDEXT: idx1 = var2 + var21; ; idx1 += inc3 */
2461 - 0xc004a5dd, /* 00B8(:420): LCDEXT: idx2 = var0, idx3 = var9; idx3 == var23; idx2 += inc3, idx3 += inc5 */
2462 + 0xc1476018, /* 00B4(:420): LCDEXT: idx1 = var2 + var14; ; idx1 += inc3 */
2463 + 0xc003241d, /* 00B8(:420): LCDEXT: idx2 = var0, idx3 = var6; idx3 == var16; idx2 += inc3, idx3 += inc5 */
2464 0x811a601b, /* 00BC(:421): LCD: idx4 = var2; ; idx4 += inc3 */
2465 0xda9b001b, /* 00C0(:424): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2466 0x9b9be01b, /* 00C4(:424): LCD: idx7 = idx7; ; idx7 += inc3 */
2467 0x0000d3a0, /* 00C8(:425): DRD1A: *idx4; FN=0 init=0 WS=0 RS=0 */
2468 - 0xc28a21c2, /* 00CC(:427): LCDEXT: idx5 = var5, idx6 = var20; idx6 < var7; idx5 += inc0, idx6 += inc2 */
2469 - 0x881be009, /* 00D0(:427): LCD: idx7 = var16; ; idx7 += inc1 */
2470 + 0xc1862102, /* 00CC(:427): LCDEXT: idx5 = var3, idx6 = var12; idx6 < var4; idx5 += inc0, idx6 += inc2 */
2471 + 0x849be009, /* 00D0(:427): LCD: idx7 = var9; ; idx7 += inc1 */
2472 0x0bfed7b8, /* 00D4(:430): DRD1A: *idx7; FN=0 TFD init=31 WS=3 RS=3 */
2473 0xda9b001b, /* 00D8(:432): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2474 0x9b9be01b, /* 00DC(:432): LCD: idx7 = idx7; ; idx7 += inc3 */
2475 0x1000cb20, /* 00E0(:433): DRD1A: *idx2 = idx4; FN=0 MORE init=0 WS=0 RS=0 */
2476 0x70000006, /* 00E4(:434): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2477 - 0x088cf896, /* 00E8(:434): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2478 + 0x088cf88f, /* 00E8(:434): DRD2B1: idx2 = EU3(); EU3(idx2,var15) */
2479 0x1000cb28, /* 00EC(:435): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2480 0x70000006, /* 00F0(:436): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2481 - 0x088cf896, /* 00F4(:436): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2482 + 0x088cf88f, /* 00F4(:436): DRD2B1: idx2 = EU3(); EU3(idx2,var15) */
2483 0x1000cb30, /* 00F8(:437): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2484 0x70000006, /* 00FC(:438): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2485 - 0x088cf896, /* 0100(:438): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2486 + 0x088cf88f, /* 0100(:438): DRD2B1: idx2 = EU3(); EU3(idx2,var15) */
2487 0x1000cb38, /* 0104(:439): DRD1A: *idx2 = idx7; FN=0 MORE init=0 WS=0 RS=0 */
2488 0x0000c728, /* 0108(:440): DRD1A: *idx1 = idx5; FN=0 init=0 WS=0 RS=0 */
2489 0x000001f8, /* 010C(:0): NOP */
2490 0x8118801b, /* 0110(:444): LCD: idx1 = var2; idx1 once var0; idx1 += inc3 */
2491 - 0x8a19001b, /* 0114(:446): LCD: idx2 = var20; idx2 once var0; idx2 += inc3 */
2492 - 0x6000000e, /* 0118(:447): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT init=0 WS=0 RS=0 */
2493 - 0x088cf49f, /* 011C(:447): DRD2B1: idx2 = EU3(); EU3(var18) */
2494 - 0xd9190536, /* 0120(:448): LCDEXT: idx2 = idx2; idx2 == var20; idx2 += inc6 */
2495 - 0x98ca0018, /* 0124(:448): LCD: idx3 = idx1 + var20; idx3 once var0; idx3 += inc3 */
2496 - 0x6000000a, /* 0128(:450): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
2497 - 0x0cccfcdf, /* 012C(:450): DRD2B1: *idx3 = EU3(); EU3(*idx3) */
2498 - 0x000001f8, /* 0130(:0): NOP */
2499 - 0xa14a001e, /* 0134(:453): LCD: idx1 = *(var2 + var20 + 24); idx1 once var0; idx1 += inc3 */
2500 - 0x10000b08, /* 0138(:454): DRD1A: var2 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
2501 - 0x10002c90, /* 013C(:455): DRD1A: var11 = var18; FN=0 MORE init=0 WS=0 RS=0 */
2502 - 0xb8ca0018, /* 0140(:456): LCD: idx2 = *(idx1 + var20); idx2 once var0; idx2 += inc3 */
2503 - 0x10004b10, /* 0144(:457): DRD1A: var18 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2504 - 0x70000009, /* 0148(:458): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT MORE init=0 WS=0 RS=0 */
2505 - 0x080cf89f, /* 014C(:458): DRD2B1: idx0 = EU3(); EU3(idx2) */
2506 - 0x6000000c, /* 0150(:459): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT init=0 WS=0 RS=0 */
2507 - 0x024cf89f, /* 0154(:459): DRD2B1: var9 = EU3(); EU3(idx2) */
2508 - 0x000001f8, /* 0158(:0): NOP */
2509 - 0x8a18801b, /* 015C(:465): LCD: idx1 = var20; idx1 once var0; idx1 += inc3 */
2510 - 0x7000000d, /* 0160(:466): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2511 - 0x084cf2df, /* 0164(:466): DRD2B1: idx1 = EU3(); EU3(var11) */
2512 - 0xd899053f, /* 0168(:467): LCDEXT: idx2 = idx1; idx2 > var20; idx2 += inc7 */
2513 - 0x8019801b, /* 016C(:467): LCD: idx3 = var0; idx3 once var0; idx3 += inc3 */
2514 - 0x040001f8, /* 0170(:468): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2515 - 0x000001f8, /* 0174(:0): NOP */
2516 - 0x000001f8, /* 0178(:0): NOP */
2517 + 0xd8c60018, /* 0114(:446): LCDEXT: idx2 = idx1 + var12; idx2 once var0; idx2 += inc3 */
2518 + 0x98c6601c, /* 0118(:446): LCD: idx3 = idx1 + var12 + 4; ; idx3 += inc3 */
2519 + 0x6000000b, /* 011C(:447): DRD2A: EU0=0 EU1=0 EU2=0 EU3=11 EXT init=0 WS=0 RS=0 */
2520 + 0x0c8cfc9f, /* 0120(:447): DRD2B1: *idx2 = EU3(); EU3(*idx2) */
2521 + 0x000001f8, /* 0124(:0): NOP */
2522 + 0xa146001e, /* 0128(:450): LCD: idx1 = *(var2 + var12 + 24); idx1 once var0; idx1 += inc3 */
2523 + 0x10000b08, /* 012C(:451): DRD1A: var2 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
2524 + 0x10002050, /* 0130(:452): DRD1A: var8 = var10; FN=0 MORE init=0 WS=0 RS=0 */
2525 + 0xb8c60018, /* 0134(:453): LCD: idx2 = *(idx1 + var12); idx2 once var0; idx2 += inc3 */
2526 + 0x10002b10, /* 0138(:454): DRD1A: var10 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2527 + 0x7000000a, /* 013C(:455): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT MORE init=0 WS=0 RS=0 */
2528 + 0x080cf89f, /* 0140(:455): DRD2B1: idx0 = EU3(); EU3(idx2) */
2529 + 0x6000000d, /* 0144(:456): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT init=0 WS=0 RS=0 */
2530 + 0x018cf89f, /* 0148(:456): DRD2B1: var6 = EU3(); EU3(idx2) */
2531 + 0x000001f8, /* 014C(:0): NOP */
2532 + 0x8618801b, /* 0150(:462): LCD: idx1 = var12; idx1 once var0; idx1 += inc3 */
2533 + 0x7000000e, /* 0154(:463): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT MORE init=0 WS=0 RS=0 */
2534 + 0x084cf21f, /* 0158(:463): DRD2B1: idx1 = EU3(); EU3(var8) */
2535 + 0xd8990336, /* 015C(:464): LCDEXT: idx2 = idx1; idx2 > var12; idx2 += inc6 */
2536 + 0x8019801b, /* 0160(:464): LCD: idx3 = var0; idx3 once var0; idx3 += inc3 */
2537 + 0x040001f8, /* 0164(:465): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2538 + 0x000001f8, /* 0168(:0): NOP */
2539 + 0x000001f8, /* 016C(:0): NOP */
2540 };
2541 u32 MCD_SingleNoEu_TDT[]=
2542 {
2543 - 0x8318001b, /* 0000(:646): LCD: idx0 = var6; idx0 once var0; idx0 += inc3 */
2544 - 0x7000000c, /* 0004(:647): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
2545 - 0x080cf81f, /* 0008(:647): DRD2B1: idx0 = EU3(); EU3(idx0) */
2546 - 0x8318801b, /* 000C(:648): LCD: idx1 = var6; idx1 once var0; idx1 += inc3 */
2547 - 0x6000000d, /* 0010(:649): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT init=0 WS=0 RS=0 */
2548 - 0x084cf85f, /* 0014(:649): DRD2B1: idx1 = EU3(); EU3(idx1) */
2549 + 0x8198001b, /* 0000(:657): LCD: idx0 = var3; idx0 once var0; idx0 += inc3 */
2550 + 0x7000000d, /* 0004(:658): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2551 + 0x080cf81f, /* 0008(:658): DRD2B1: idx0 = EU3(); EU3(idx0) */
2552 + 0x8198801b, /* 000C(:659): LCD: idx1 = var3; idx1 once var0; idx1 += inc3 */
2553 + 0x6000000e, /* 0010(:660): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT init=0 WS=0 RS=0 */
2554 + 0x084cf85f, /* 0014(:660): DRD2B1: idx1 = EU3(); EU3(idx1) */
2555 0x000001f8, /* 0018(:0): NOP */
2556 - 0x8498001b, /* 001C(:653): LCD: idx0 = var9; idx0 once var0; idx0 += inc3 */
2557 - 0x7000000c, /* 0020(:654): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
2558 - 0x020cf81f, /* 0024(:654): DRD2B1: var8 = EU3(); EU3(idx0) */
2559 - 0x6000000d, /* 0028(:655): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT init=0 WS=0 RS=0 */
2560 - 0x028cf81f, /* 002C(:655): DRD2B1: var10 = EU3(); EU3(idx0) */
2561 - 0xc404601b, /* 0030(:658): LCDEXT: idx0 = var8, idx1 = var8; ; idx0 += inc3, idx1 += inc3 */
2562 - 0xc00423dc, /* 0034(:658): LCDEXT: idx2 = var0, idx3 = var8; idx3 == var15; idx2 += inc3, idx3 += inc4 */
2563 - 0x809a601b, /* 0038(:659): LCD: idx4 = var1; ; idx4 += inc3 */
2564 - 0xc207a182, /* 003C(:662): LCDEXT: idx5 = var4, idx6 = var15; idx6 < var6; idx5 += inc0, idx6 += inc2 */
2565 - 0x869be009, /* 0040(:662): LCD: idx7 = var13; ; idx7 += inc1 */
2566 - 0x03fed7b8, /* 0044(:665): DRD1A: *idx7; FN=0 init=31 WS=3 RS=3 */
2567 - 0xda9b001b, /* 0048(:667): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2568 - 0x9b9be01b, /* 004C(:667): LCD: idx7 = idx7; ; idx7 += inc3 */
2569 - 0x70000006, /* 0050(:669): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2570 - 0x088cf890, /* 0054(:669): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2571 - 0x1000cb28, /* 0058(:670): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2572 - 0x70000006, /* 005C(:671): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2573 - 0x088cf890, /* 0060(:671): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2574 - 0x1000cb30, /* 0064(:672): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2575 - 0x70000006, /* 0068(:673): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2576 - 0x088cf890, /* 006C(:673): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2577 - 0x0000cb38, /* 0070(:674): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2578 + 0x8298001b, /* 001C(:664): LCD: idx0 = var5; idx0 once var0; idx0 += inc3 */
2579 + 0x7000000d, /* 0020(:665): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2580 + 0x010cf81f, /* 0024(:665): DRD2B1: var4 = EU3(); EU3(idx0) */
2581 + 0x6000000e, /* 0028(:666): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT init=0 WS=0 RS=0 */
2582 + 0x018cf81f, /* 002C(:666): DRD2B1: var6 = EU3(); EU3(idx0) */
2583 + 0xc202601b, /* 0030(:669): LCDEXT: idx0 = var4, idx1 = var4; ; idx0 += inc3, idx1 += inc3 */
2584 + 0xc002221c, /* 0034(:669): LCDEXT: idx2 = var0, idx3 = var4; idx3 == var8; idx2 += inc3, idx3 += inc4 */
2585 + 0x809a601b, /* 0038(:670): LCD: idx4 = var1; ; idx4 += inc3 */
2586 + 0xc10420c2, /* 003C(:673): LCDEXT: idx5 = var2, idx6 = var8; idx6 < var3; idx5 += inc0, idx6 += inc2 */
2587 + 0x839be009, /* 0040(:673): LCD: idx7 = var7; ; idx7 += inc1 */
2588 + 0x03fed7b8, /* 0044(:676): DRD1A: *idx7; FN=0 init=31 WS=3 RS=3 */
2589 + 0xda9b001b, /* 0048(:678): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2590 + 0x9b9be01b, /* 004C(:678): LCD: idx7 = idx7; ; idx7 += inc3 */
2591 + 0x70000006, /* 0050(:680): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2592 + 0x088cf889, /* 0054(:680): DRD2B1: idx2 = EU3(); EU3(idx2,var9) */
2593 + 0x1000cb28, /* 0058(:681): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2594 + 0x70000006, /* 005C(:682): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2595 + 0x088cf889, /* 0060(:682): DRD2B1: idx2 = EU3(); EU3(idx2,var9) */
2596 + 0x1000cb30, /* 0064(:683): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2597 + 0x70000006, /* 0068(:684): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2598 + 0x088cf889, /* 006C(:684): DRD2B1: idx2 = EU3(); EU3(idx2,var9) */
2599 + 0x0000cb38, /* 0070(:685): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2600 0x000001f8, /* 0074(:0): NOP */
2601 - 0xc404601b, /* 0078(:678): LCDEXT: idx0 = var8, idx1 = var8; ; idx0 += inc3, idx1 += inc3 */
2602 - 0xc004245c, /* 007C(:678): LCDEXT: idx2 = var0, idx3 = var8; idx3 == var17; idx2 += inc3, idx3 += inc4 */
2603 - 0x809a601b, /* 0080(:679): LCD: idx4 = var1; ; idx4 += inc3 */
2604 - 0xda9b001b, /* 0084(:682): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2605 - 0x9b9be01b, /* 0088(:682): LCD: idx7 = idx7; ; idx7 += inc3 */
2606 - 0x0000d3a0, /* 008C(:683): DRD1A: *idx4; FN=0 init=0 WS=0 RS=0 */
2607 - 0xc207a182, /* 0090(:685): LCDEXT: idx5 = var4, idx6 = var15; idx6 < var6; idx5 += inc0, idx6 += inc2 */
2608 - 0x869be009, /* 0094(:685): LCD: idx7 = var13; ; idx7 += inc1 */
2609 - 0x0bfed7b8, /* 0098(:688): DRD1A: *idx7; FN=0 TFD init=31 WS=3 RS=3 */
2610 - 0xda9b001b, /* 009C(:690): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2611 - 0x9b9be01b, /* 00A0(:690): LCD: idx7 = idx7; ; idx7 += inc3 */
2612 - 0x70000006, /* 00A4(:692): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2613 - 0x088cf890, /* 00A8(:692): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2614 - 0x1000cb28, /* 00AC(:693): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2615 - 0x70000006, /* 00B0(:694): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2616 - 0x088cf890, /* 00B4(:694): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2617 - 0x1000cb30, /* 00B8(:695): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2618 - 0x70000006, /* 00BC(:696): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2619 - 0x088cf890, /* 00C0(:696): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2620 - 0x0000cb38, /* 00C4(:697): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2621 + 0xc202601b, /* 0078(:689): LCDEXT: idx0 = var4, idx1 = var4; ; idx0 += inc3, idx1 += inc3 */
2622 + 0xc002229c, /* 007C(:689): LCDEXT: idx2 = var0, idx3 = var4; idx3 == var10; idx2 += inc3, idx3 += inc4 */
2623 + 0x809a601b, /* 0080(:690): LCD: idx4 = var1; ; idx4 += inc3 */
2624 + 0xda9b001b, /* 0084(:693): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2625 + 0x9b9be01b, /* 0088(:693): LCD: idx7 = idx7; ; idx7 += inc3 */
2626 + 0x0000d3a0, /* 008C(:694): DRD1A: *idx4; FN=0 init=0 WS=0 RS=0 */
2627 + 0xc10420c2, /* 0090(:696): LCDEXT: idx5 = var2, idx6 = var8; idx6 < var3; idx5 += inc0, idx6 += inc2 */
2628 + 0x839be009, /* 0094(:696): LCD: idx7 = var7; ; idx7 += inc1 */
2629 + 0x0bfed7b8, /* 0098(:699): DRD1A: *idx7; FN=0 TFD init=31 WS=3 RS=3 */
2630 + 0xda9b001b, /* 009C(:701): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2631 + 0x9b9be01b, /* 00A0(:701): LCD: idx7 = idx7; ; idx7 += inc3 */
2632 + 0x70000006, /* 00A4(:703): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2633 + 0x088cf889, /* 00A8(:703): DRD2B1: idx2 = EU3(); EU3(idx2,var9) */
2634 + 0x1000cb28, /* 00AC(:704): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2635 + 0x70000006, /* 00B0(:705): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2636 + 0x088cf889, /* 00B4(:705): DRD2B1: idx2 = EU3(); EU3(idx2,var9) */
2637 + 0x1000cb30, /* 00B8(:706): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2638 + 0x70000006, /* 00BC(:707): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2639 + 0x088cf889, /* 00C0(:707): DRD2B1: idx2 = EU3(); EU3(idx2,var9) */
2640 + 0x0000cb38, /* 00C4(:708): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2641 0x000001f8, /* 00C8(:0): NOP */
2642 - 0xc51803ed, /* 00CC(:701): LCDEXT: idx0 = var10; idx0 > var15; idx0 += inc5 */
2643 - 0x8018801b, /* 00D0(:701): LCD: idx1 = var0; idx1 once var0; idx1 += inc3 */
2644 - 0x040001f8, /* 00D4(:702): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2645 + 0xc318022d, /* 00CC(:712): LCDEXT: idx0 = var6; idx0 > var8; idx0 += inc5 */
2646 + 0x8018801b, /* 00D0(:712): LCD: idx1 = var0; idx1 once var0; idx1 += inc3 */
2647 + 0x040001f8, /* 00D4(:713): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2648 };
2649 #ifdef MCD_INCLUDE_EU
2650 u32 MCD_ChainEu_TDT[]=
2651 {
2652 - 0x80004000, /* 0000(:928): LCDEXT: idx0 = 0x00000000; ; */
2653 - 0x8118801b, /* 0004(:928): LCD: idx1 = var2; idx1 once var0; idx1 += inc3 */
2654 - 0xb8ca0018, /* 0008(:929): LCD: idx2 = *(idx1 + var20); idx2 once var0; idx2 += inc3 */
2655 - 0x10004b10, /* 000C(:930): DRD1A: var18 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2656 - 0x7000000c, /* 0010(:931): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
2657 - 0x024cf89f, /* 0014(:931): DRD2B1: var9 = EU3(); EU3(idx2) */
2658 - 0x60000009, /* 0018(:932): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT init=0 WS=0 RS=0 */
2659 - 0x080cf89f, /* 001C(:932): DRD2B1: idx0 = EU3(); EU3(idx2) */
2660 + 0x80004000, /* 0000(:947): LCDEXT: idx0 = 0x00000000; ; */
2661 + 0x8198801b, /* 0004(:947): LCD: idx1 = var3; idx1 once var0; idx1 += inc3 */
2662 + 0xb8c68018, /* 0008(:948): LCD: idx2 = *(idx1 + var13); idx2 once var0; idx2 += inc3 */
2663 + 0x10002f10, /* 000C(:949): DRD1A: var11 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2664 + 0x7000000d, /* 0010(:950): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2665 + 0x01ccf89f, /* 0014(:950): DRD2B1: var7 = EU3(); EU3(idx2) */
2666 + 0x6000000a, /* 0018(:951): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
2667 + 0x080cf89f, /* 001C(:951): DRD2B1: idx0 = EU3(); EU3(idx2) */
2668 0x000001f8, /* 0020(:0): NOP */
2669 - 0x98180524, /* 0024(:936): LCD: idx0 = idx0; idx0 != var20; idx0 += inc4 */
2670 - 0x8118801b, /* 0028(:938): LCD: idx1 = var2; idx1 once var0; idx1 += inc3 */
2671 - 0xf8ca001a, /* 002C(:939): LCDEXT: idx2 = *(idx1 + var20 + 8); idx2 once var0; idx2 += inc3 */
2672 - 0xb8ca601b, /* 0030(:940): LCD: idx3 = *(idx1 + var20 + 12); ; idx3 += inc3 */
2673 - 0x10004310, /* 0034(:942): DRD1A: var16 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2674 - 0x00001718, /* 0038(:943): DRD1A: var5 = idx3; FN=0 init=0 WS=0 RS=0 */
2675 - 0xb8ca001d, /* 003C(:945): LCD: idx2 = *(idx1 + var20 + 20); idx2 once var0; idx2 += inc3 */
2676 - 0x10001f10, /* 0040(:946): DRD1A: var7 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2677 - 0x60000007, /* 0044(:947): DRD2A: EU0=0 EU1=0 EU2=0 EU3=7 EXT init=0 WS=0 RS=0 */
2678 - 0x020cf893, /* 0048(:947): DRD2B1: var8 = EU3(); EU3(idx2,var19) */
2679 - 0x98ca001c, /* 004C(:949): LCD: idx2 = idx1 + var20 + 4; idx2 once var0; idx2 += inc3 */
2680 - 0x00000710, /* 0050(:950): DRD1A: var1 = idx2; FN=0 init=0 WS=0 RS=0 */
2681 - 0x98ca8018, /* 0054(:951): LCD: idx2 = idx1 + var21; idx2 once var0; idx2 += inc3 */
2682 - 0x10002b10, /* 0058(:952): DRD1A: var10 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2683 - 0x0000c828, /* 005C(:953): DRD1A: *idx2 = var5; FN=0 init=0 WS=0 RS=0 */
2684 + 0x981803a4, /* 0024(:955): LCD: idx0 = idx0; idx0 == var14; idx0 += inc4 */
2685 + 0x8198801b, /* 0028(:957): LCD: idx1 = var3; idx1 once var0; idx1 += inc3 */
2686 + 0xf8c6801a, /* 002C(:958): LCDEXT: idx2 = *(idx1 + var13 + 8); idx2 once var0; idx2 += inc3 */
2687 + 0xb8c6e01b, /* 0030(:959): LCD: idx3 = *(idx1 + var13 + 12); ; idx3 += inc3 */
2688 + 0x10002b10, /* 0034(:961): DRD1A: var10 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2689 + 0x00001318, /* 0038(:962): DRD1A: var4 = idx3; FN=0 init=0 WS=0 RS=0 */
2690 + 0xb8c6801d, /* 003C(:964): LCD: idx2 = *(idx1 + var13 + 20); idx2 once var0; idx2 += inc3 */
2691 + 0x10001710, /* 0040(:965): DRD1A: var5 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2692 + 0x60000007, /* 0044(:966): DRD2A: EU0=0 EU1=0 EU2=0 EU3=7 EXT init=0 WS=0 RS=0 */
2693 + 0x018cf88c, /* 0048(:966): DRD2B1: var6 = EU3(); EU3(idx2,var12) */
2694 + 0x98c6801c, /* 004C(:968): LCD: idx2 = idx1 + var13 + 4; idx2 once var0; idx2 += inc3 */
2695 + 0x00000b10, /* 0050(:969): DRD1A: var2 = idx2; FN=0 init=0 WS=0 RS=0 */
2696 + 0x98c78018, /* 0054(:970): LCD: idx2 = idx1 + var15; idx2 once var0; idx2 += inc3 */
2697 + 0x10002310, /* 0058(:971): DRD1A: var8 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2698 + 0x0000c820, /* 005C(:972): DRD1A: *idx2 = var4; FN=0 init=0 WS=0 RS=0 */
2699 0x000001f8, /* 0060(:0): NOP */
2700 - 0xc14ae018, /* 0064(:957): LCDEXT: idx1 = var2 + var21; ; idx1 += inc3 */
2701 - 0xc004a51d, /* 0068(:957): LCDEXT: idx2 = var0, idx3 = var9; idx3 == var20; idx2 += inc3, idx3 += inc5 */
2702 - 0x811a601b, /* 006C(:958): LCD: idx4 = var2; ; idx4 += inc3 */
2703 - 0xc28a21c2, /* 0070(:961): LCDEXT: idx5 = var5, idx6 = var20; idx6 < var7; idx5 += inc0, idx6 += inc2 */
2704 - 0x881be009, /* 0074(:961): LCD: idx7 = var16; ; idx7 += inc1 */
2705 - 0x63fe0000, /* 0078(:964): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 EXT init=31 WS=3 RS=3 */
2706 - 0x0d4cfddf, /* 007C(:964): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2707 - 0xda9b001b, /* 0080(:966): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2708 - 0x9b9be01b, /* 0084(:966): LCD: idx7 = idx7; ; idx7 += inc3 */
2709 - 0x1000cb20, /* 0088(:967): DRD1A: *idx2 = idx4; FN=0 MORE init=0 WS=0 RS=0 */
2710 - 0x70000006, /* 008C(:968): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2711 - 0x088cf896, /* 0090(:968): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2712 - 0x1000cb28, /* 0094(:969): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2713 - 0x70000006, /* 0098(:970): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2714 - 0x088cf896, /* 009C(:970): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2715 - 0x1000cb30, /* 00A0(:971): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2716 - 0x70000006, /* 00A4(:972): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2717 - 0x088cf896, /* 00A8(:972): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2718 - 0x1000cb38, /* 00AC(:973): DRD1A: *idx2 = idx7; FN=0 MORE init=0 WS=0 RS=0 */
2719 - 0x0000c728, /* 00B0(:974): DRD1A: *idx1 = idx5; FN=0 init=0 WS=0 RS=0 */
2720 - 0x000001f8, /* 00B4(:0): NOP */
2721 - 0xc14ae018, /* 00B8(:978): LCDEXT: idx1 = var2 + var21; ; idx1 += inc3 */
2722 - 0xc004a5dd, /* 00BC(:978): LCDEXT: idx2 = var0, idx3 = var9; idx3 == var23; idx2 += inc3, idx3 += inc5 */
2723 - 0x811a601b, /* 00C0(:979): LCD: idx4 = var2; ; idx4 += inc3 */
2724 - 0xda9b001b, /* 00C4(:982): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2725 - 0x9b9be01b, /* 00C8(:982): LCD: idx7 = idx7; ; idx7 += inc3 */
2726 - 0x0000d3a0, /* 00CC(:983): DRD1A: *idx4; FN=0 init=0 WS=0 RS=0 */
2727 - 0xc28a21c2, /* 00D0(:985): LCDEXT: idx5 = var5, idx6 = var20; idx6 < var7; idx5 += inc0, idx6 += inc2 */
2728 - 0x881be009, /* 00D4(:985): LCD: idx7 = var16; ; idx7 += inc1 */
2729 - 0x6bfe0000, /* 00D8(:988): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 TFD EXT init=31 WS=3 RS=3 */
2730 - 0x0d4cfddf, /* 00DC(:988): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2731 - 0xda9b001b, /* 00E0(:990): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2732 - 0x9b9be01b, /* 00E4(:990): LCD: idx7 = idx7; ; idx7 += inc3 */
2733 - 0x1000cb20, /* 00E8(:991): DRD1A: *idx2 = idx4; FN=0 MORE init=0 WS=0 RS=0 */
2734 - 0x70000006, /* 00EC(:992): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2735 - 0x088cf896, /* 00F0(:992): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2736 - 0x1000cb28, /* 00F4(:993): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2737 - 0x70000006, /* 00F8(:994): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2738 - 0x088cf896, /* 00FC(:994): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2739 - 0x1000cb30, /* 0100(:995): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2740 - 0x70000006, /* 0104(:996): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2741 - 0x088cf896, /* 0108(:996): DRD2B1: idx2 = EU3(); EU3(idx2,var22) */
2742 - 0x1000cb38, /* 010C(:997): DRD1A: *idx2 = idx7; FN=0 MORE init=0 WS=0 RS=0 */
2743 - 0x0000c728, /* 0110(:998): DRD1A: *idx1 = idx5; FN=0 init=0 WS=0 RS=0 */
2744 - 0x000001f8, /* 0114(:0): NOP */
2745 - 0x8118801b, /* 0118(:1002): LCD: idx1 = var2; idx1 once var0; idx1 += inc3 */
2746 - 0x8a19001b, /* 011C(:1004): LCD: idx2 = var20; idx2 once var0; idx2 += inc3 */
2747 - 0x6000000e, /* 0120(:1005): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT init=0 WS=0 RS=0 */
2748 - 0x088cf49f, /* 0124(:1005): DRD2B1: idx2 = EU3(); EU3(var18) */
2749 - 0xd9190536, /* 0128(:1006): LCDEXT: idx2 = idx2; idx2 == var20; idx2 += inc6 */
2750 - 0x98ca0018, /* 012C(:1006): LCD: idx3 = idx1 + var20; idx3 once var0; idx3 += inc3 */
2751 - 0x6000000a, /* 0130(:1008): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
2752 - 0x0cccfcdf, /* 0134(:1008): DRD2B1: *idx3 = EU3(); EU3(*idx3) */
2753 - 0x000001f8, /* 0138(:0): NOP */
2754 - 0xa14a001e, /* 013C(:1011): LCD: idx1 = *(var2 + var20 + 24); idx1 once var0; idx1 += inc3 */
2755 - 0x10000b08, /* 0140(:1012): DRD1A: var2 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
2756 - 0x10002c90, /* 0144(:1013): DRD1A: var11 = var18; FN=0 MORE init=0 WS=0 RS=0 */
2757 - 0xb8ca0018, /* 0148(:1014): LCD: idx2 = *(idx1 + var20); idx2 once var0; idx2 += inc3 */
2758 - 0x10004b10, /* 014C(:1015): DRD1A: var18 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2759 - 0x70000009, /* 0150(:1016): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT MORE init=0 WS=0 RS=0 */
2760 - 0x080cf89f, /* 0154(:1016): DRD2B1: idx0 = EU3(); EU3(idx2) */
2761 - 0x6000000c, /* 0158(:1017): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT init=0 WS=0 RS=0 */
2762 - 0x024cf89f, /* 015C(:1017): DRD2B1: var9 = EU3(); EU3(idx2) */
2763 - 0x000001f8, /* 0160(:0): NOP */
2764 - 0x8a18801b, /* 0164(:1023): LCD: idx1 = var20; idx1 once var0; idx1 += inc3 */
2765 - 0x7000000d, /* 0168(:1024): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2766 - 0x084cf2df, /* 016C(:1024): DRD2B1: idx1 = EU3(); EU3(var11) */
2767 - 0xd899053f, /* 0170(:1025): LCDEXT: idx2 = idx1; idx2 > var20; idx2 += inc7 */
2768 - 0x8019801b, /* 0174(:1025): LCD: idx3 = var0; idx3 once var0; idx3 += inc3 */
2769 - 0x040001f8, /* 0178(:1026): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2770 - 0x000001f8, /* 017C(:0): NOP */
2771 - 0x000001f8, /* 0180(:0): NOP */
2772 + 0x8698801b, /* 0064(:976): LCD: idx1 = var13; idx1 once var0; idx1 += inc3 */
2773 + 0x7000000f, /* 0068(:977): DRD2A: EU0=0 EU1=0 EU2=0 EU3=15 EXT MORE init=0 WS=0 RS=0 */
2774 + 0x084cf2df, /* 006C(:977): DRD2B1: idx1 = EU3(); EU3(var11) */
2775 + 0xd899042d, /* 0070(:978): LCDEXT: idx2 = idx1; idx2 >= var16; idx2 += inc5 */
2776 + 0x8019801b, /* 0074(:978): LCD: idx3 = var0; idx3 once var0; idx3 += inc3 */
2777 + 0x60000003, /* 0078(:979): DRD2A: EU0=0 EU1=0 EU2=0 EU3=3 EXT init=0 WS=0 RS=0 */
2778 + 0x2cd7c7df, /* 007C(:979): DRD2B2: EU3(var13) */
2779 + 0xd8990364, /* 0080(:980): LCDEXT: idx2 = idx1; idx2 == var13; idx2 += inc4 */
2780 + 0x8019801b, /* 0084(:980): LCD: idx3 = var0; idx3 once var0; idx3 += inc3 */
2781 + 0x60000003, /* 0088(:981): DRD2A: EU0=0 EU1=0 EU2=0 EU3=3 EXT init=0 WS=0 RS=0 */
2782 + 0x2c17c7df, /* 008C(:981): DRD2B2: EU3(var1) */
2783 + 0x000001f8, /* 0090(:0): NOP */
2784 + 0xc1c7e018, /* 0094(:984): LCDEXT: idx1 = var3 + var15; ; idx1 += inc3 */
2785 + 0xc003a35e, /* 0098(:984): LCDEXT: idx2 = var0, idx3 = var7; idx3 == var13; idx2 += inc3, idx3 += inc6 */
2786 + 0x819a601b, /* 009C(:985): LCD: idx4 = var3; ; idx4 += inc3 */
2787 + 0xc206a142, /* 00A0(:988): LCDEXT: idx5 = var4, idx6 = var13; idx6 < var5; idx5 += inc0, idx6 += inc2 */
2788 + 0x851be009, /* 00A4(:988): LCD: idx7 = var10; ; idx7 += inc1 */
2789 + 0x63fe0000, /* 00A8(:991): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 EXT init=31 WS=3 RS=3 */
2790 + 0x0d4cfddf, /* 00AC(:991): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2791 + 0xda9b001b, /* 00B0(:993): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2792 + 0x9b9be01b, /* 00B4(:993): LCD: idx7 = idx7; ; idx7 += inc3 */
2793 + 0x70000002, /* 00B8(:994): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
2794 + 0x004cf81f, /* 00BC(:994): DRD2B1: var1 = EU3(); EU3(idx0) */
2795 + 0x1000cb20, /* 00C0(:995): DRD1A: *idx2 = idx4; FN=0 MORE init=0 WS=0 RS=0 */
2796 + 0x70000006, /* 00C4(:996): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2797 + 0x088cf891, /* 00C8(:996): DRD2B1: idx2 = EU3(); EU3(idx2,var17) */
2798 + 0x1000cb28, /* 00CC(:997): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2799 + 0x70000006, /* 00D0(:998): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2800 + 0x088cf891, /* 00D4(:998): DRD2B1: idx2 = EU3(); EU3(idx2,var17) */
2801 + 0x1000cb30, /* 00D8(:999): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2802 + 0x70000006, /* 00DC(:1000): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2803 + 0x088cf891, /* 00E0(:1000): DRD2B1: idx2 = EU3(); EU3(idx2,var17) */
2804 + 0x1000cb38, /* 00E4(:1001): DRD1A: *idx2 = idx7; FN=0 MORE init=0 WS=0 RS=0 */
2805 + 0x0000c728, /* 00E8(:1002): DRD1A: *idx1 = idx5; FN=0 init=0 WS=0 RS=0 */
2806 + 0x000001f8, /* 00EC(:0): NOP */
2807 + 0xc1c7e018, /* 00F0(:1006): LCDEXT: idx1 = var3 + var15; ; idx1 += inc3 */
2808 + 0xc003a49e, /* 00F4(:1006): LCDEXT: idx2 = var0, idx3 = var7; idx3 == var18; idx2 += inc3, idx3 += inc6 */
2809 + 0x819a601b, /* 00F8(:1007): LCD: idx4 = var3; ; idx4 += inc3 */
2810 + 0xda9b001b, /* 00FC(:1010): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2811 + 0x9b9be01b, /* 0100(:1010): LCD: idx7 = idx7; ; idx7 += inc3 */
2812 + 0x0000d3a0, /* 0104(:1011): DRD1A: *idx4; FN=0 init=0 WS=0 RS=0 */
2813 + 0xc206a142, /* 0108(:1013): LCDEXT: idx5 = var4, idx6 = var13; idx6 < var5; idx5 += inc0, idx6 += inc2 */
2814 + 0x851be009, /* 010C(:1013): LCD: idx7 = var10; ; idx7 += inc1 */
2815 + 0x6bfe0000, /* 0110(:1016): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 TFD EXT init=31 WS=3 RS=3 */
2816 + 0x0d4cfddf, /* 0114(:1016): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2817 + 0xda9b001b, /* 0118(:1018): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2818 + 0x9b9be01b, /* 011C(:1018): LCD: idx7 = idx7; ; idx7 += inc3 */
2819 + 0x70000002, /* 0120(:1019): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
2820 + 0x004cf81f, /* 0124(:1019): DRD2B1: var1 = EU3(); EU3(idx0) */
2821 + 0x1000cb20, /* 0128(:1020): DRD1A: *idx2 = idx4; FN=0 MORE init=0 WS=0 RS=0 */
2822 + 0x70000006, /* 012C(:1021): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2823 + 0x088cf891, /* 0130(:1021): DRD2B1: idx2 = EU3(); EU3(idx2,var17) */
2824 + 0x1000cb28, /* 0134(:1022): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2825 + 0x70000006, /* 0138(:1023): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2826 + 0x088cf891, /* 013C(:1023): DRD2B1: idx2 = EU3(); EU3(idx2,var17) */
2827 + 0x1000cb30, /* 0140(:1024): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2828 + 0x70000006, /* 0144(:1025): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2829 + 0x088cf891, /* 0148(:1025): DRD2B1: idx2 = EU3(); EU3(idx2,var17) */
2830 + 0x1000cb38, /* 014C(:1026): DRD1A: *idx2 = idx7; FN=0 MORE init=0 WS=0 RS=0 */
2831 + 0x0000c728, /* 0150(:1027): DRD1A: *idx1 = idx5; FN=0 init=0 WS=0 RS=0 */
2832 + 0x000001f8, /* 0154(:0): NOP */
2833 + 0x8198801b, /* 0158(:1031): LCD: idx1 = var3; idx1 once var0; idx1 += inc3 */
2834 + 0xd8c68018, /* 015C(:1033): LCDEXT: idx2 = idx1 + var13; idx2 once var0; idx2 += inc3 */
2835 + 0x98c6e01c, /* 0160(:1033): LCD: idx3 = idx1 + var13 + 4; ; idx3 += inc3 */
2836 + 0x6000000b, /* 0164(:1034): DRD2A: EU0=0 EU1=0 EU2=0 EU3=11 EXT init=0 WS=0 RS=0 */
2837 + 0x0c8cfc9f, /* 0168(:1034): DRD2B1: *idx2 = EU3(); EU3(*idx2) */
2838 + 0x0000cc08, /* 016C(:1035): DRD1A: *idx3 = var1; FN=0 init=0 WS=0 RS=0 */
2839 + 0xa1c6801e, /* 0170(:1038): LCD: idx1 = *(var3 + var13 + 24); idx1 once var0; idx1 += inc3 */
2840 + 0x10000f08, /* 0174(:1039): DRD1A: var3 = idx1; FN=0 MORE init=0 WS=0 RS=0 */
2841 + 0x10002458, /* 0178(:1040): DRD1A: var9 = var11; FN=0 MORE init=0 WS=0 RS=0 */
2842 + 0xb8c68018, /* 017C(:1041): LCD: idx2 = *(idx1 + var13); idx2 once var0; idx2 += inc3 */
2843 + 0x10002f10, /* 0180(:1042): DRD1A: var11 = idx2; FN=0 MORE init=0 WS=0 RS=0 */
2844 + 0x7000000a, /* 0184(:1043): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT MORE init=0 WS=0 RS=0 */
2845 + 0x080cf89f, /* 0188(:1043): DRD2B1: idx0 = EU3(); EU3(idx2) */
2846 + 0x6000000d, /* 018C(:1044): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT init=0 WS=0 RS=0 */
2847 + 0x01ccf89f, /* 0190(:1044): DRD2B1: var7 = EU3(); EU3(idx2) */
2848 + 0x000001f8, /* 0194(:0): NOP */
2849 + 0x8698801b, /* 0198(:1050): LCD: idx1 = var13; idx1 once var0; idx1 += inc3 */
2850 + 0x7000000e, /* 019C(:1051): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT MORE init=0 WS=0 RS=0 */
2851 + 0x084cf25f, /* 01A0(:1051): DRD2B1: idx1 = EU3(); EU3(var9) */
2852 + 0xd899037f, /* 01A4(:1052): LCDEXT: idx2 = idx1; idx2 > var13; idx2 += inc7 */
2853 + 0x8019801b, /* 01A8(:1052): LCD: idx3 = var0; idx3 once var0; idx3 += inc3 */
2854 + 0x040001f8, /* 01AC(:1053): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2855 + 0x000001f8, /* 01B0(:0): NOP */
2856 + 0x000001f8, /* 01B4(:0): NOP */
2857 };
2858 u32 MCD_SingleEu_TDT[]=
2859 {
2860 - 0x8318001b, /* 0000(:1204): LCD: idx0 = var6; idx0 once var0; idx0 += inc3 */
2861 - 0x7000000c, /* 0004(:1205): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
2862 - 0x080cf81f, /* 0008(:1205): DRD2B1: idx0 = EU3(); EU3(idx0) */
2863 - 0x8318801b, /* 000C(:1206): LCD: idx1 = var6; idx1 once var0; idx1 += inc3 */
2864 - 0x6000000d, /* 0010(:1207): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT init=0 WS=0 RS=0 */
2865 - 0x084cf85f, /* 0014(:1207): DRD2B1: idx1 = EU3(); EU3(idx1) */
2866 + 0x8218001b, /* 0000(:1248): LCD: idx0 = var4; idx0 once var0; idx0 += inc3 */
2867 + 0x7000000d, /* 0004(:1249): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2868 + 0x080cf81f, /* 0008(:1249): DRD2B1: idx0 = EU3(); EU3(idx0) */
2869 + 0x8218801b, /* 000C(:1250): LCD: idx1 = var4; idx1 once var0; idx1 += inc3 */
2870 + 0x6000000e, /* 0010(:1251): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT init=0 WS=0 RS=0 */
2871 + 0x084cf85f, /* 0014(:1251): DRD2B1: idx1 = EU3(); EU3(idx1) */
2872 0x000001f8, /* 0018(:0): NOP */
2873 - 0x8498001b, /* 001C(:1211): LCD: idx0 = var9; idx0 once var0; idx0 += inc3 */
2874 - 0x7000000c, /* 0020(:1212): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
2875 - 0x020cf81f, /* 0024(:1212): DRD2B1: var8 = EU3(); EU3(idx0) */
2876 - 0x6000000d, /* 0028(:1213): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT init=0 WS=0 RS=0 */
2877 - 0x028cf81f, /* 002C(:1213): DRD2B1: var10 = EU3(); EU3(idx0) */
2878 - 0xc404601b, /* 0030(:1216): LCDEXT: idx0 = var8, idx1 = var8; ; idx0 += inc3, idx1 += inc3 */
2879 - 0xc00423dc, /* 0034(:1216): LCDEXT: idx2 = var0, idx3 = var8; idx3 == var15; idx2 += inc3, idx3 += inc4 */
2880 - 0x809a601b, /* 0038(:1217): LCD: idx4 = var1; ; idx4 += inc3 */
2881 - 0xc207a182, /* 003C(:1220): LCDEXT: idx5 = var4, idx6 = var15; idx6 < var6; idx5 += inc0, idx6 += inc2 */
2882 - 0x869be009, /* 0040(:1220): LCD: idx7 = var13; ; idx7 += inc1 */
2883 - 0x63fe0000, /* 0044(:1223): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 EXT init=31 WS=3 RS=3 */
2884 - 0x0d4cfddf, /* 0048(:1223): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2885 - 0xda9b001b, /* 004C(:1225): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2886 - 0x9b9be01b, /* 0050(:1225): LCD: idx7 = idx7; ; idx7 += inc3 */
2887 - 0x70000006, /* 0054(:1227): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2888 - 0x088cf890, /* 0058(:1227): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2889 - 0x1000cb28, /* 005C(:1228): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2890 - 0x70000006, /* 0060(:1229): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2891 - 0x088cf890, /* 0064(:1229): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2892 - 0x1000cb30, /* 0068(:1230): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2893 - 0x70000006, /* 006C(:1231): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2894 - 0x088cf890, /* 0070(:1231): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2895 - 0x0000cb38, /* 0074(:1232): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2896 - 0x000001f8, /* 0078(:0): NOP */
2897 - 0xc404601b, /* 007C(:1236): LCDEXT: idx0 = var8, idx1 = var8; ; idx0 += inc3, idx1 += inc3 */
2898 - 0xc004245c, /* 0080(:1236): LCDEXT: idx2 = var0, idx3 = var8; idx3 == var17; idx2 += inc3, idx3 += inc4 */
2899 - 0x809a601b, /* 0084(:1237): LCD: idx4 = var1; ; idx4 += inc3 */
2900 - 0xda9b001b, /* 0088(:1240): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2901 - 0x9b9be01b, /* 008C(:1240): LCD: idx7 = idx7; ; idx7 += inc3 */
2902 - 0x0000d3a0, /* 0090(:1241): DRD1A: *idx4; FN=0 init=0 WS=0 RS=0 */
2903 - 0xc207a182, /* 0094(:1243): LCDEXT: idx5 = var4, idx6 = var15; idx6 < var6; idx5 += inc0, idx6 += inc2 */
2904 - 0x869be009, /* 0098(:1243): LCD: idx7 = var13; ; idx7 += inc1 */
2905 - 0x6bfe0000, /* 009C(:1246): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 TFD EXT init=31 WS=3 RS=3 */
2906 - 0x0d4cfddf, /* 00A0(:1246): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2907 - 0xda9b001b, /* 00A4(:1248): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2908 - 0x9b9be01b, /* 00A8(:1248): LCD: idx7 = idx7; ; idx7 += inc3 */
2909 - 0x70000006, /* 00AC(:1250): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2910 - 0x088cf890, /* 00B0(:1250): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2911 - 0x1000cb28, /* 00B4(:1251): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2912 - 0x70000006, /* 00B8(:1252): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2913 - 0x088cf890, /* 00BC(:1252): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2914 - 0x1000cb30, /* 00C0(:1253): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2915 - 0x70000006, /* 00C4(:1254): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2916 - 0x088cf890, /* 00C8(:1254): DRD2B1: idx2 = EU3(); EU3(idx2,var16) */
2917 - 0x0000cb38, /* 00CC(:1255): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2918 - 0x000001f8, /* 00D0(:0): NOP */
2919 - 0xc51803ed, /* 00D4(:1259): LCDEXT: idx0 = var10; idx0 > var15; idx0 += inc5 */
2920 - 0x8018801b, /* 00D8(:1259): LCD: idx1 = var0; idx1 once var0; idx1 += inc3 */
2921 - 0x040001f8, /* 00DC(:1260): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2922 + 0x8318001b, /* 001C(:1255): LCD: idx0 = var6; idx0 once var0; idx0 += inc3 */
2923 + 0x7000000d, /* 0020(:1256): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
2924 + 0x014cf81f, /* 0024(:1256): DRD2B1: var5 = EU3(); EU3(idx0) */
2925 + 0x6000000e, /* 0028(:1257): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT init=0 WS=0 RS=0 */
2926 + 0x01ccf81f, /* 002C(:1257): DRD2B1: var7 = EU3(); EU3(idx0) */
2927 + 0x8498001b, /* 0030(:1260): LCD: idx0 = var9; idx0 once var0; idx0 += inc3 */
2928 + 0x7000000f, /* 0034(:1261): DRD2A: EU0=0 EU1=0 EU2=0 EU3=15 EXT MORE init=0 WS=0 RS=0 */
2929 + 0x080cf19f, /* 0038(:1261): DRD2B1: idx0 = EU3(); EU3(var6) */
2930 + 0xd81882a4, /* 003C(:1262): LCDEXT: idx1 = idx0; idx1 >= var10; idx1 += inc4 */
2931 + 0x8019001b, /* 0040(:1262): LCD: idx2 = var0; idx2 once var0; idx2 += inc3 */
2932 + 0x60000003, /* 0044(:1263): DRD2A: EU0=0 EU1=0 EU2=0 EU3=3 EXT init=0 WS=0 RS=0 */
2933 + 0x2c97c7df, /* 0048(:1263): DRD2B2: EU3(var9) */
2934 + 0xd818826d, /* 004C(:1264): LCDEXT: idx1 = idx0; idx1 == var9; idx1 += inc5 */
2935 + 0x8019001b, /* 0050(:1264): LCD: idx2 = var0; idx2 once var0; idx2 += inc3 */
2936 + 0x60000003, /* 0054(:1265): DRD2A: EU0=0 EU1=0 EU2=0 EU3=3 EXT init=0 WS=0 RS=0 */
2937 + 0x2c17c7df, /* 0058(:1265): DRD2B2: EU3(var1) */
2938 + 0x000001f8, /* 005C(:0): NOP */
2939 + 0xc282e01b, /* 0060(:1268): LCDEXT: idx0 = var5, idx1 = var5; ; idx0 += inc3, idx1 += inc3 */
2940 + 0xc002a25e, /* 0064(:1268): LCDEXT: idx2 = var0, idx3 = var5; idx3 == var9; idx2 += inc3, idx3 += inc6 */
2941 + 0x811a601b, /* 0068(:1269): LCD: idx4 = var2; ; idx4 += inc3 */
2942 + 0xc184a102, /* 006C(:1272): LCDEXT: idx5 = var3, idx6 = var9; idx6 < var4; idx5 += inc0, idx6 += inc2 */
2943 + 0x841be009, /* 0070(:1272): LCD: idx7 = var8; ; idx7 += inc1 */
2944 + 0x63fe0000, /* 0074(:1275): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 EXT init=31 WS=3 RS=3 */
2945 + 0x0d4cfddf, /* 0078(:1275): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2946 + 0xda9b001b, /* 007C(:1277): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2947 + 0x9b9be01b, /* 0080(:1277): LCD: idx7 = idx7; ; idx7 += inc3 */
2948 + 0x70000002, /* 0084(:1279): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
2949 + 0x004cf99f, /* 0088(:1279): DRD2B1: var1 = EU3(); EU3(idx6) */
2950 + 0x70000006, /* 008C(:1280): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2951 + 0x088cf88b, /* 0090(:1280): DRD2B1: idx2 = EU3(); EU3(idx2,var11) */
2952 + 0x1000cb28, /* 0094(:1281): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2953 + 0x70000006, /* 0098(:1282): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2954 + 0x088cf88b, /* 009C(:1282): DRD2B1: idx2 = EU3(); EU3(idx2,var11) */
2955 + 0x1000cb30, /* 00A0(:1283): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2956 + 0x70000006, /* 00A4(:1284): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2957 + 0x088cf88b, /* 00A8(:1284): DRD2B1: idx2 = EU3(); EU3(idx2,var11) */
2958 + 0x0000cb38, /* 00AC(:1285): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2959 + 0x000001f8, /* 00B0(:0): NOP */
2960 + 0xc282e01b, /* 00B4(:1289): LCDEXT: idx0 = var5, idx1 = var5; ; idx0 += inc3, idx1 += inc3 */
2961 + 0xc002a31e, /* 00B8(:1289): LCDEXT: idx2 = var0, idx3 = var5; idx3 == var12; idx2 += inc3, idx3 += inc6 */
2962 + 0x811a601b, /* 00BC(:1290): LCD: idx4 = var2; ; idx4 += inc3 */
2963 + 0xda9b001b, /* 00C0(:1293): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2964 + 0x9b9be01b, /* 00C4(:1293): LCD: idx7 = idx7; ; idx7 += inc3 */
2965 + 0x0000d3a0, /* 00C8(:1294): DRD1A: *idx4; FN=0 init=0 WS=0 RS=0 */
2966 + 0xc184a102, /* 00CC(:1296): LCDEXT: idx5 = var3, idx6 = var9; idx6 < var4; idx5 += inc0, idx6 += inc2 */
2967 + 0x841be009, /* 00D0(:1296): LCD: idx7 = var8; ; idx7 += inc1 */
2968 + 0x6bfe0000, /* 00D4(:1299): DRD2A: EU0=0 EU1=0 EU2=0 EU3=0 TFD EXT init=31 WS=3 RS=3 */
2969 + 0x0d4cfddf, /* 00D8(:1299): DRD2B1: *idx5 = EU3(); EU3(*idx7) */
2970 + 0xda9b001b, /* 00DC(:1301): LCDEXT: idx5 = idx5, idx6 = idx6; idx5 once var0; idx5 += inc3, idx6 += inc3 */
2971 + 0x9b9be01b, /* 00E0(:1301): LCD: idx7 = idx7; ; idx7 += inc3 */
2972 + 0x70000002, /* 00E4(:1303): DRD2A: EU0=0 EU1=0 EU2=0 EU3=2 EXT MORE init=0 WS=0 RS=0 */
2973 + 0x004cf99f, /* 00E8(:1303): DRD2B1: var1 = EU3(); EU3(idx6) */
2974 + 0x70000006, /* 00EC(:1304): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2975 + 0x088cf88b, /* 00F0(:1304): DRD2B1: idx2 = EU3(); EU3(idx2,var11) */
2976 + 0x1000cb28, /* 00F4(:1305): DRD1A: *idx2 = idx5; FN=0 MORE init=0 WS=0 RS=0 */
2977 + 0x70000006, /* 00F8(:1306): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2978 + 0x088cf88b, /* 00FC(:1306): DRD2B1: idx2 = EU3(); EU3(idx2,var11) */
2979 + 0x1000cb30, /* 0100(:1307): DRD1A: *idx2 = idx6; FN=0 MORE init=0 WS=0 RS=0 */
2980 + 0x70000006, /* 0104(:1308): DRD2A: EU0=0 EU1=0 EU2=0 EU3=6 EXT MORE init=0 WS=0 RS=0 */
2981 + 0x088cf88b, /* 0108(:1308): DRD2B1: idx2 = EU3(); EU3(idx2,var11) */
2982 + 0x0000cb38, /* 010C(:1309): DRD1A: *idx2 = idx7; FN=0 init=0 WS=0 RS=0 */
2983 + 0x000001f8, /* 0110(:0): NOP */
2984 + 0x8144801c, /* 0114(:1312): LCD: idx0 = var2 + var9 + 4; idx0 once var0; idx0 += inc3 */
2985 + 0x0000c008, /* 0118(:1313): DRD1A: *idx0 = var1; FN=0 init=0 WS=0 RS=0 */
2986 + 0xc398027f, /* 011C(:1315): LCDEXT: idx0 = var7; idx0 > var9; idx0 += inc7 */
2987 + 0x8018801b, /* 0120(:1315): LCD: idx1 = var0; idx1 once var0; idx1 += inc3 */
2988 + 0x040001f8, /* 0124(:1316): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
2989 };
2990 #endif
2991 u32 MCD_ENetRcv_TDT[]=
2992 {
2993 - 0x80004000, /* 0000(:1334): LCDEXT: idx0 = 0x00000000; ; */
2994 - 0x82188000, /* 0004(:1334): LCD: idx1 = var4; idx1 once var0; idx1 += inc0 */
2995 - 0x10000788, /* 0008(:1335): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
2996 - 0x60000009, /* 000C(:1336): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT init=0 WS=0 RS=0 */
2997 - 0x080cf05f, /* 0010(:1336): DRD2B1: idx0 = EU3(); EU3(var1) */
2998 - 0x98180249, /* 0014(:1339): LCD: idx0 = idx0; idx0 != var9; idx0 += inc1 */
2999 - 0x82448004, /* 0018(:1341): LCD: idx1 = var4 + var9 + 4; idx1 once var0; idx1 += inc0 */
3000 - 0x7000000d, /* 001C(:1342): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
3001 - 0x014cf05f, /* 0020(:1342): DRD2B1: var5 = EU3(); EU3(var1) */
3002 - 0x7000000b, /* 0024(:1343): DRD2A: EU0=0 EU1=0 EU2=0 EU3=11 EXT MORE init=0 WS=0 RS=0 */
3003 - 0x020cf05f, /* 0028(:1343): DRD2B1: var8 = EU3(); EU3(var1) */
3004 - 0x70000004, /* 002C(:1344): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT MORE init=0 WS=0 RS=0 */
3005 - 0x018cf04a, /* 0030(:1344): DRD2B1: var6 = EU3(); EU3(var1,var10) */
3006 - 0x70000004, /* 0034(:1345): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT MORE init=0 WS=0 RS=0 */
3007 - 0x004cf04b, /* 0038(:1345): DRD2B1: var1 = EU3(); EU3(var1,var11) */
3008 - 0x00000b88, /* 003C(:1348): DRD1A: var2 = *idx1; FN=0 init=0 WS=0 RS=0 */
3009 - 0xc4838190, /* 0040(:1351): LCDEXT: idx1 = var9, idx2 = var7; idx1 < var6; idx1 += inc2, idx2 += inc0 */
3010 - 0x8119e012, /* 0044(:1351): LCD: idx3 = var2; ; idx3 += inc2 */
3011 - 0x03e0cf90, /* 0048(:1354): DRD1A: *idx3 = *idx2; FN=0 init=31 WS=0 RS=0 */
3012 - 0x81188000, /* 004C(:1357): LCD: idx1 = var2; idx1 once var0; idx1 += inc0 */
3013 - 0x000ac788, /* 0050(:1358): DRD1A: *idx1 = *idx1; FN=0 init=0 WS=1 RS=1 */
3014 - 0xc4838000, /* 0054(:1360): LCDEXT: idx1 = var9, idx2 = var7; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3015 - 0x8219e000, /* 0058(:1360): LCD: idx3 = var4; ; idx3 += inc0 */
3016 - 0x70000004, /* 005C(:1368): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT MORE init=0 WS=0 RS=0 */
3017 - 0x084cfc8c, /* 0060(:1368): DRD2B1: idx1 = EU3(); EU3(*idx2,var12) */
3018 - 0x60000005, /* 0064(:1371): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
3019 - 0x0cccf841, /* 0068(:1371): DRD2B1: *idx3 = EU3(); EU3(idx1,var1) */
3020 - 0x82468000, /* 006C(:1377): LCD: idx1 = var4 + var13; idx1 once var0; idx1 += inc0 */
3021 - 0xc419025b, /* 0070(:1379): LCDEXT: idx2 = var8; idx2 > var9; idx2 += inc3 */
3022 - 0x80198000, /* 0074(:1379): LCD: idx3 = var0; idx3 once var0; idx3 += inc0 */
3023 - 0x00008400, /* 0078(:1380): DRD1A: idx1 = var0; FN=0 init=0 WS=0 RS=0 */
3024 - 0x00001308, /* 007C(:1381): DRD1A: var4 = idx1; FN=0 init=0 WS=0 RS=0 */
3025 - 0x82188000, /* 0080(:1384): LCD: idx1 = var4; idx1 once var0; idx1 += inc0 */
3026 - 0x10000788, /* 0084(:1385): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
3027 - 0x60000009, /* 0088(:1386): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT init=0 WS=0 RS=0 */
3028 - 0x080cf05f, /* 008C(:1386): DRD2B1: idx0 = EU3(); EU3(var1) */
3029 - 0xc2988249, /* 0090(:1389): LCDEXT: idx1 = var5; idx1 != var9; idx1 += inc1 */
3030 - 0x80190000, /* 0094(:1389): LCD: idx2 = var0; idx2 once var0; idx2 += inc0 */
3031 - 0x040001f8, /* 0098(:1390): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
3032 - 0x000001f8, /* 009C(:0): NOP */
3033 + 0x80004000, /* 0000(:1389): LCDEXT: idx0 = 0x00000000; ; */
3034 + 0x81988000, /* 0004(:1389): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3035 + 0x10000788, /* 0008(:1390): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
3036 + 0x6000000a, /* 000C(:1391): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
3037 + 0x080cf05f, /* 0010(:1391): DRD2B1: idx0 = EU3(); EU3(var1) */
3038 + 0x98180209, /* 0014(:1394): LCD: idx0 = idx0; idx0 != var8; idx0 += inc1 */
3039 + 0x81c40004, /* 0018(:1396): LCD: idx1 = var3 + var8 + 4; idx1 once var0; idx1 += inc0 */
3040 + 0x7000000e, /* 001C(:1397): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT MORE init=0 WS=0 RS=0 */
3041 + 0x010cf05f, /* 0020(:1397): DRD2B1: var4 = EU3(); EU3(var1) */
3042 + 0x7000000c, /* 0024(:1398): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
3043 + 0x01ccf05f, /* 0028(:1398): DRD2B1: var7 = EU3(); EU3(var1) */
3044 + 0x70000004, /* 002C(:1399): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT MORE init=0 WS=0 RS=0 */
3045 + 0x014cf049, /* 0030(:1399): DRD2B1: var5 = EU3(); EU3(var1,var9) */
3046 + 0x70000004, /* 0034(:1400): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT MORE init=0 WS=0 RS=0 */
3047 + 0x004cf04a, /* 0038(:1400): DRD2B1: var1 = EU3(); EU3(var1,var10) */
3048 + 0x00000b88, /* 003C(:1403): DRD1A: var2 = *idx1; FN=0 init=0 WS=0 RS=0 */
3049 + 0xc4030150, /* 0040(:1406): LCDEXT: idx1 = var8, idx2 = var6; idx1 < var5; idx1 += inc2, idx2 += inc0 */
3050 + 0x8119e012, /* 0044(:1406): LCD: idx3 = var2; ; idx3 += inc2 */
3051 + 0x03e0cf90, /* 0048(:1409): DRD1A: *idx3 = *idx2; FN=0 init=31 WS=0 RS=0 */
3052 + 0x81188000, /* 004C(:1412): LCD: idx1 = var2; idx1 once var0; idx1 += inc0 */
3053 + 0x000ac788, /* 0050(:1413): DRD1A: *idx1 = *idx1; FN=0 init=0 WS=1 RS=1 */
3054 + 0xc4030000, /* 0054(:1415): LCDEXT: idx1 = var8, idx2 = var6; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3055 + 0x8199e000, /* 0058(:1415): LCD: idx3 = var3; ; idx3 += inc0 */
3056 + 0x63e00004, /* 005C(:1418): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT init=31 WS=0 RS=0 */
3057 + 0x084cfc8b, /* 0060(:1418): DRD2B1: idx1 = EU3(); EU3(*idx2,var11) */
3058 + 0xd8990000, /* 0064(:1421): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3059 + 0x9999e000, /* 0068(:1421): LCD: idx3 = idx3; ; idx3 += inc0 */
3060 + 0x60000005, /* 006C(:1422): DRD2A: EU0=0 EU1=0 EU2=0 EU3=5 EXT init=0 WS=0 RS=0 */
3061 + 0x0cccf841, /* 0070(:1422): DRD2B1: *idx3 = EU3(); EU3(idx1,var1) */
3062 + 0x81c60000, /* 0074(:1427): LCD: idx1 = var3 + var12; idx1 once var0; idx1 += inc0 */
3063 + 0xc399021b, /* 0078(:1429): LCDEXT: idx2 = var7; idx2 > var8; idx2 += inc3 */
3064 + 0x80198000, /* 007C(:1429): LCD: idx3 = var0; idx3 once var0; idx3 += inc0 */
3065 + 0x00008400, /* 0080(:1430): DRD1A: idx1 = var0; FN=0 init=0 WS=0 RS=0 */
3066 + 0x00000f08, /* 0084(:1431): DRD1A: var3 = idx1; FN=0 init=0 WS=0 RS=0 */
3067 + 0x81988000, /* 0088(:1434): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3068 + 0x10000788, /* 008C(:1435): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
3069 + 0x6000000a, /* 0090(:1436): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
3070 + 0x080cf05f, /* 0094(:1436): DRD2B1: idx0 = EU3(); EU3(var1) */
3071 + 0xc2188209, /* 0098(:1439): LCDEXT: idx1 = var4; idx1 != var8; idx1 += inc1 */
3072 + 0x80190000, /* 009C(:1439): LCD: idx2 = var0; idx2 once var0; idx2 += inc0 */
3073 + 0x040001f8, /* 00A0(:1440): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
3074 + 0x000001f8, /* 00A4(:0): NOP */
3075 };
3076 u32 MCD_ENetXmit_TDT[]=
3077 {
3078 - 0x80004000, /* 0000(:1465): LCDEXT: idx0 = 0x00000000; ; */
3079 - 0x81988000, /* 0004(:1465): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3080 - 0x10000788, /* 0008(:1466): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
3081 - 0x60000009, /* 000C(:1467): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT init=0 WS=0 RS=0 */
3082 - 0x080cf05f, /* 0010(:1467): DRD2B1: idx0 = EU3(); EU3(var1) */
3083 - 0x98180309, /* 0014(:1470): LCD: idx0 = idx0; idx0 != var12; idx0 += inc1 */
3084 - 0x80004003, /* 0018(:1472): LCDEXT: idx1 = 0x00000003; ; */
3085 - 0x81c60004, /* 001C(:1472): LCD: idx2 = var3 + var12 + 4; idx2 once var0; idx2 += inc0 */
3086 - 0x7000000d, /* 0020(:1473): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
3087 - 0x014cf05f, /* 0024(:1473): DRD2B1: var5 = EU3(); EU3(var1) */
3088 - 0x7000000b, /* 0028(:1474): DRD2A: EU0=0 EU1=0 EU2=0 EU3=11 EXT MORE init=0 WS=0 RS=0 */
3089 - 0x028cf05f, /* 002C(:1474): DRD2B1: var10 = EU3(); EU3(var1) */
3090 - 0x7000000c, /* 0030(:1475): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
3091 - 0x018cf05f, /* 0034(:1475): DRD2B1: var6 = EU3(); EU3(var1) */
3092 - 0x70000004, /* 0038(:1476): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT MORE init=0 WS=0 RS=0 */
3093 - 0x01ccf04d, /* 003C(:1476): DRD2B1: var7 = EU3(); EU3(var1,var13) */
3094 - 0x10000b90, /* 0040(:1477): DRD1A: var2 = *idx2; FN=0 MORE init=0 WS=0 RS=0 */
3095 - 0x60000004, /* 0044(:1478): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT init=0 WS=0 RS=0 */
3096 - 0x020cf0a1, /* 0048(:1478): DRD2B1: var8 = EU3(); EU3(var2,idx1) */
3097 - 0xc3188312, /* 004C(:1481): LCDEXT: idx1 = var6; idx1 > var12; idx1 += inc2 */
3098 - 0x83c70000, /* 0050(:1481): LCD: idx2 = var7 + var14; idx2 once var0; idx2 += inc0 */
3099 - 0x00001f10, /* 0054(:1482): DRD1A: var7 = idx2; FN=0 init=0 WS=0 RS=0 */
3100 - 0xc583a3c3, /* 0058(:1484): LCDEXT: idx1 = var11, idx2 = var7; idx2 >= var15; idx1 += inc0, idx2 += inc3 */
3101 - 0x81042325, /* 005C(:1484): LCD: idx3 = var2, idx4 = var8; idx4 == var12; idx3 += inc4, idx4 += inc5 */
3102 - 0x03e0c798, /* 0060(:1489): DRD1A: *idx1 = *idx3; FN=0 init=31 WS=0 RS=0 */
3103 - 0xd8990000, /* 0064(:1492): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3104 - 0x9999e000, /* 0068(:1492): LCD: idx3 = idx3; ; idx3 += inc0 */
3105 - 0x000acf98, /* 006C(:1493): DRD1A: *idx3 = *idx3; FN=0 init=0 WS=1 RS=1 */
3106 - 0xd8992306, /* 0070(:1495): LCDEXT: idx1 = idx1, idx2 = idx2; idx2 > var12; idx1 += inc0, idx2 += inc6 */
3107 - 0x9999e03f, /* 0074(:1495): LCD: idx3 = idx3; ; idx3 += inc7 */
3108 - 0x03eac798, /* 0078(:1498): DRD1A: *idx1 = *idx3; FN=0 init=31 WS=1 RS=1 */
3109 - 0xd8990000, /* 007C(:1501): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3110 - 0x9999e000, /* 0080(:1501): LCD: idx3 = idx3; ; idx3 += inc0 */
3111 - 0x000acf98, /* 0084(:1502): DRD1A: *idx3 = *idx3; FN=0 init=0 WS=1 RS=1 */
3112 - 0xd8990000, /* 0088(:1504): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3113 - 0x99832302, /* 008C(:1504): LCD: idx3 = idx3, idx4 = var6; idx4 > var12; idx3 += inc0, idx4 += inc2 */
3114 - 0x0beac798, /* 0090(:1507): DRD1A: *idx1 = *idx3; FN=0 TFD init=31 WS=1 RS=1 */
3115 - 0x81988000, /* 0094(:1509): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3116 - 0x6000000a, /* 0098(:1510): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
3117 - 0x0c4cfc5f, /* 009C(:1510): DRD2B1: *idx1 = EU3(); EU3(*idx1) */
3118 - 0x81c80000, /* 00A0(:1512): LCD: idx1 = var3 + var16; idx1 once var0; idx1 += inc0 */
3119 - 0xc5190312, /* 00A4(:1514): LCDEXT: idx2 = var10; idx2 > var12; idx2 += inc2 */
3120 - 0x80198000, /* 00A8(:1514): LCD: idx3 = var0; idx3 once var0; idx3 += inc0 */
3121 - 0x00008400, /* 00AC(:1515): DRD1A: idx1 = var0; FN=0 init=0 WS=0 RS=0 */
3122 - 0x00000f08, /* 00B0(:1516): DRD1A: var3 = idx1; FN=0 init=0 WS=0 RS=0 */
3123 - 0x81988000, /* 00B4(:1519): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3124 - 0x10000788, /* 00B8(:1520): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
3125 - 0x60000009, /* 00BC(:1521): DRD2A: EU0=0 EU1=0 EU2=0 EU3=9 EXT init=0 WS=0 RS=0 */
3126 - 0x080cf05f, /* 00C0(:1521): DRD2B1: idx0 = EU3(); EU3(var1) */
3127 - 0xc2988309, /* 00C4(:1524): LCDEXT: idx1 = var5; idx1 != var12; idx1 += inc1 */
3128 - 0x80190000, /* 00C8(:1524): LCD: idx2 = var0; idx2 once var0; idx2 += inc0 */
3129 - 0x040001f8, /* 00CC(:1525): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
3130 + 0x80004000, /* 0000(:1515): LCDEXT: idx0 = 0x00000000; ; */
3131 + 0x81988000, /* 0004(:1515): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3132 + 0x10000788, /* 0008(:1516): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
3133 + 0x6000000a, /* 000C(:1517): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
3134 + 0x080cf05f, /* 0010(:1517): DRD2B1: idx0 = EU3(); EU3(var1) */
3135 + 0x98180309, /* 0014(:1520): LCD: idx0 = idx0; idx0 != var12; idx0 += inc1 */
3136 + 0x80004003, /* 0018(:1522): LCDEXT: idx1 = 0x00000003; ; */
3137 + 0x81c60004, /* 001C(:1522): LCD: idx2 = var3 + var12 + 4; idx2 once var0; idx2 += inc0 */
3138 + 0x7000000e, /* 0020(:1523): DRD2A: EU0=0 EU1=0 EU2=0 EU3=14 EXT MORE init=0 WS=0 RS=0 */
3139 + 0x014cf05f, /* 0024(:1523): DRD2B1: var5 = EU3(); EU3(var1) */
3140 + 0x7000000c, /* 0028(:1524): DRD2A: EU0=0 EU1=0 EU2=0 EU3=12 EXT MORE init=0 WS=0 RS=0 */
3141 + 0x028cf05f, /* 002C(:1524): DRD2B1: var10 = EU3(); EU3(var1) */
3142 + 0x7000000d, /* 0030(:1525): DRD2A: EU0=0 EU1=0 EU2=0 EU3=13 EXT MORE init=0 WS=0 RS=0 */
3143 + 0x018cf05f, /* 0034(:1525): DRD2B1: var6 = EU3(); EU3(var1) */
3144 + 0x70000004, /* 0038(:1526): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT MORE init=0 WS=0 RS=0 */
3145 + 0x01ccf04d, /* 003C(:1526): DRD2B1: var7 = EU3(); EU3(var1,var13) */
3146 + 0x10000b90, /* 0040(:1527): DRD1A: var2 = *idx2; FN=0 MORE init=0 WS=0 RS=0 */
3147 + 0x60000004, /* 0044(:1528): DRD2A: EU0=0 EU1=0 EU2=0 EU3=4 EXT init=0 WS=0 RS=0 */
3148 + 0x020cf0a1, /* 0048(:1528): DRD2B1: var8 = EU3(); EU3(var2,idx1) */
3149 + 0xc3188312, /* 004C(:1531): LCDEXT: idx1 = var6; idx1 > var12; idx1 += inc2 */
3150 + 0x83c70000, /* 0050(:1531): LCD: idx2 = var7 + var14; idx2 once var0; idx2 += inc0 */
3151 + 0x00001f10, /* 0054(:1532): DRD1A: var7 = idx2; FN=0 init=0 WS=0 RS=0 */
3152 + 0xc583a3c3, /* 0058(:1534): LCDEXT: idx1 = var11, idx2 = var7; idx2 >= var15; idx1 += inc0, idx2 += inc3 */
3153 + 0x81042325, /* 005C(:1534): LCD: idx3 = var2, idx4 = var8; idx4 == var12; idx3 += inc4, idx4 += inc5 */
3154 + 0x03e0c798, /* 0060(:1539): DRD1A: *idx1 = *idx3; FN=0 init=31 WS=0 RS=0 */
3155 + 0xd8990000, /* 0064(:1542): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3156 + 0x9999e000, /* 0068(:1542): LCD: idx3 = idx3; ; idx3 += inc0 */
3157 + 0x000acf98, /* 006C(:1543): DRD1A: *idx3 = *idx3; FN=0 init=0 WS=1 RS=1 */
3158 + 0xd8992306, /* 0070(:1545): LCDEXT: idx1 = idx1, idx2 = idx2; idx2 > var12; idx1 += inc0, idx2 += inc6 */
3159 + 0x9999e03f, /* 0074(:1545): LCD: idx3 = idx3; ; idx3 += inc7 */
3160 + 0x03eac798, /* 0078(:1548): DRD1A: *idx1 = *idx3; FN=0 init=31 WS=1 RS=1 */
3161 + 0xd8990000, /* 007C(:1551): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3162 + 0x9999e000, /* 0080(:1551): LCD: idx3 = idx3; ; idx3 += inc0 */
3163 + 0x000acf98, /* 0084(:1552): DRD1A: *idx3 = *idx3; FN=0 init=0 WS=1 RS=1 */
3164 + 0xd8990000, /* 0088(:1554): LCDEXT: idx1 = idx1, idx2 = idx2; idx1 once var0; idx1 += inc0, idx2 += inc0 */
3165 + 0x99832302, /* 008C(:1554): LCD: idx3 = idx3, idx4 = var6; idx4 > var12; idx3 += inc0, idx4 += inc2 */
3166 + 0x0beac798, /* 0090(:1557): DRD1A: *idx1 = *idx3; FN=0 TFD init=31 WS=1 RS=1 */
3167 + 0x81988000, /* 0094(:1559): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3168 + 0x6000000b, /* 0098(:1560): DRD2A: EU0=0 EU1=0 EU2=0 EU3=11 EXT init=0 WS=0 RS=0 */
3169 + 0x0c4cfc5f, /* 009C(:1560): DRD2B1: *idx1 = EU3(); EU3(*idx1) */
3170 + 0x81c80000, /* 00A0(:1562): LCD: idx1 = var3 + var16; idx1 once var0; idx1 += inc0 */
3171 + 0xc5190312, /* 00A4(:1564): LCDEXT: idx2 = var10; idx2 > var12; idx2 += inc2 */
3172 + 0x80198000, /* 00A8(:1564): LCD: idx3 = var0; idx3 once var0; idx3 += inc0 */
3173 + 0x00008400, /* 00AC(:1565): DRD1A: idx1 = var0; FN=0 init=0 WS=0 RS=0 */
3174 + 0x00000f08, /* 00B0(:1566): DRD1A: var3 = idx1; FN=0 init=0 WS=0 RS=0 */
3175 + 0x81988000, /* 00B4(:1569): LCD: idx1 = var3; idx1 once var0; idx1 += inc0 */
3176 + 0x10000788, /* 00B8(:1570): DRD1A: var1 = *idx1; FN=0 MORE init=0 WS=0 RS=0 */
3177 + 0x6000000a, /* 00BC(:1571): DRD2A: EU0=0 EU1=0 EU2=0 EU3=10 EXT init=0 WS=0 RS=0 */
3178 + 0x080cf05f, /* 00C0(:1571): DRD2B1: idx0 = EU3(); EU3(var1) */
3179 + 0xc2988309, /* 00C4(:1574): LCDEXT: idx1 = var5; idx1 != var12; idx1 += inc1 */
3180 + 0x80190000, /* 00C8(:1574): LCD: idx2 = var0; idx2 once var0; idx2 += inc0 */
3181 + 0x040001f8, /* 00CC(:1575): DRD1A: FN=0 INT init=0 WS=0 RS=0 */
3182 0x000001f8, /* 00D0(:0): NOP */
3183 };
3184
3185 +#ifdef MCD_INCLUDE_EU
3186 +MCD_bufDesc MCD_singleBufDescs[NCHANNELS];
3187 +#endif
3188 --- a/drivers/dma/MCD_tasksInit.c
3189 +++ b/drivers/dma/MCD_tasksInit.c
3190 @@ -1,51 +1,34 @@
3191 -/*********************************************************************
3192 - *
3193 - * Copyright (C) 2004 Motorola, Inc.
3194 - * MOTOROLA, INC. All Rights Reserved.
3195 - * You are hereby granted a copyright license to use
3196 - * the SOFTWARE so long as this entire notice is
3197 - * retained without alteration in any modified and/or redistributed
3198 - * versions, and that such modified versions are clearly identified
3199 - * as such. No licenses are granted by implication, estoppel or
3200 - * otherwise under any patents or trademarks of Motorola, Inc. This
3201 - * software is provided on an "AS IS" basis and without warranty.
3202 - *
3203 - * To the maximum extent permitted by applicable law, MOTOROLA
3204 - * DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
3205 - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
3206 - * PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
3207 - * SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
3208 - * ACCOMPANYING WRITTEN MATERIALS.
3209 - *
3210 - * To the maximum extent permitted by applicable law, IN NO EVENT
3211 - * SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
3212 - * WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
3213 - * INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
3214 - * LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
3215 - *
3216 - * Motorola assumes no responsibility for the maintenance and support
3217 - * of this software
3218 - ********************************************************************/
3219 /*
3220 - * Do not edit!
3221 - */
3222 - /*
3223 - * File: MCD_tasksInit.c
3224 - * Purpose: Function for initialize variable tables of different
3225 - * types of tasks.
3226 + * drivers/dma/MCD_tasksInit.c
3227 *
3228 - * Notes:
3229 + * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
3230 + * Kurt Mahan <kmahan@freescale.com>
3231 *
3232 + * This program is free software; you can redistribute it and/or
3233 + * modify it under the terms of the GNU General Public License as
3234 + * published by the Free Software Foundation; either version 2 of
3235 + * the License, or (at your option) any later version.
3236 *
3237 - * Modifications:
3238 - *
3239 + * This program is distributed in the hope that it will be useful,
3240 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3241 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3242 + * GNU General Public License for more details.
3243 *
3244 - */
3245 + * You should have received a copy of the GNU General Public License
3246 + * along with this program; if not, write to the Free Software
3247 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
3248 + * MA 02111-1307 USA
3249 + */
3250
3251 -#include <asm/MCD_dma.h>
3252 +/*
3253 + * Autogenerated - Do not edit!
3254 + */
3255 +
3256 +#include "MCD_dma.h"
3257
3258 extern dmaRegs *MCD_dmaBar;
3259
3260 +
3261 /*
3262 * Task 0
3263 */
3264 @@ -53,232 +36,203 @@ extern dmaRegs *MCD_dmaBar;
3265 void MCD_startDmaChainNoEu(int *currBD, short srcIncr, short destIncr, int xferSize, short xferSizeIncr, int *cSave, volatile TaskTableEntry *taskTable, int channel)
3266 {
3267
3268 - MCD_SET_VAR(taskTable+channel, 2, (u32)currBD); /* var[2] */
3269 - MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3270 - MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3271 - MCD_SET_VAR(taskTable+channel, 19, (u32)xferSize); /* var[19] */
3272 - MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3273 - MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3274 - MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3275 - MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
3276 - MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3277 - MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3278 - MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3279 - MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3280 - MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3281 - MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3282 - MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3283 - MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000); /* var[11] */
3284 - MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000); /* var[12] */
3285 - MCD_SET_VAR(taskTable+channel, 13, (u32)0x00000000); /* var[13] */
3286 - MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000000); /* var[14] */
3287 - MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000000); /* var[15] */
3288 - MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000000); /* var[16] */
3289 - MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000000); /* var[17] */
3290 - MCD_SET_VAR(taskTable+channel, 18, (u32)0x00000000); /* var[18] */
3291 - MCD_SET_VAR(taskTable+channel, 20, (u32)0x00000000); /* var[20] */
3292 - MCD_SET_VAR(taskTable+channel, 21, (u32)0x00000010); /* var[21] */
3293 - MCD_SET_VAR(taskTable+channel, 22, (u32)0x00000004); /* var[22] */
3294 - MCD_SET_VAR(taskTable+channel, 23, (u32)0x00000080); /* var[23] */
3295 - MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3296 - MCD_SET_VAR(taskTable+channel, 28, (u32)0x60000000); /* inc[4] */
3297 - MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000001); /* inc[5] */
3298 - MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000000); /* inc[6] */
3299 - MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000); /* inc[7] */
3300 + MCD_SET_VAR(taskTable+channel, 2, (u32)currBD); /* var[2] */
3301 + MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3302 + MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3303 + MCD_SET_VAR(taskTable+channel, 11, (u32)xferSize); /* var[11] */
3304 + MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3305 + MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3306 + MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3307 + MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
3308 + MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3309 + MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3310 + MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3311 + MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3312 + MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3313 + MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3314 + MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3315 + MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000); /* var[12] */
3316 + MCD_SET_VAR(taskTable+channel, 13, (u32)0x80000000); /* var[13] */
3317 + MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000010); /* var[14] */
3318 + MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004); /* var[15] */
3319 + MCD_SET_VAR(taskTable+channel, 16, (u32)0x08000000); /* var[16] */
3320 + MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3321 + MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000); /* inc[4] */
3322 + MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000001); /* inc[5] */
3323 + MCD_SET_VAR(taskTable+channel, 30, (u32)0x40000000); /* inc[6] */
3324
3325 /* Set the task's Enable bit in its Task Control Register */
3326 - MCD_dmaBar->taskControl[channel] |= (u16)0x8000; /* add a MACRO HERE TBD*/
3327 -
3328 -
3329 + MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
3330 }
3331
3332
3333 /*
3334 * Task 1
3335 */
3336 -
3337 -void MCD_startDmaSingleNoEu(char *srcAddr, short srcIncr, char *destAddr, short destIncr, int dmaSize, int dmaSizeMXferSize, short xferSizeIncr, int flags, int *currBD, int *cSave, volatile TaskTableEntry *taskTable, int channel)
3338 +
3339 +void 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)
3340 {
3341 -
3342 - MCD_SET_VAR(taskTable+channel, 13, (u32)srcAddr); /* var[13] */
3343 - MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3344 - MCD_SET_VAR(taskTable+channel, 4, (u32)destAddr); /* var[4] */
3345 - MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3346 - MCD_SET_VAR(taskTable+channel, 6, (u32)dmaSize); /* var[6] */
3347 - MCD_SET_VAR(taskTable+channel, 7, (u32)dmaSizeMXferSize); /* var[7] */
3348 - MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3349 - MCD_SET_VAR(taskTable+channel, 9, (u32)flags); /* var[9] */
3350 - MCD_SET_VAR(taskTable+channel, 1, (u32)currBD); /* var[1] */
3351 - MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3352 - MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
3353 - MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
3354 - MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3355 - MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3356 - MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3357 - MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000); /* var[11] */
3358 - MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000); /* var[12] */
3359 - MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000000); /* var[14] */
3360 - MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000000); /* var[15] */
3361 - MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000004); /* var[16] */
3362 - MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000080); /* var[17] */
3363 - MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3364 - MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000001); /* inc[4] */
3365 - MCD_SET_VAR(taskTable+channel, 29, (u32)0x40000000); /* inc[5] */
3366
3367 + MCD_SET_VAR(taskTable+channel, 7, (u32)srcAddr); /* var[7] */
3368 + MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3369 + MCD_SET_VAR(taskTable+channel, 2, (u32)destAddr); /* var[2] */
3370 + MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3371 + MCD_SET_VAR(taskTable+channel, 3, (u32)dmaSize); /* var[3] */
3372 + MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3373 + MCD_SET_VAR(taskTable+channel, 5, (u32)flags); /* var[5] */
3374 + MCD_SET_VAR(taskTable+channel, 1, (u32)currBD); /* var[1] */
3375 + MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3376 + MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3377 + MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3378 + MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3379 + MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000004); /* var[9] */
3380 + MCD_SET_VAR(taskTable+channel, 10, (u32)0x08000000); /* var[10] */
3381 + MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3382 + MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000001); /* inc[4] */
3383 + MCD_SET_VAR(taskTable+channel, 29, (u32)0x40000000); /* inc[5] */
3384
3385 - /* enable the task */
3386 - MCD_dmaBar->taskControl[channel] |= (u16)0x8000; /* add a MACRO HERE TBD*/
3387 + /* Set the task's Enable bit in its Task Control Register */
3388 + MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
3389 }
3390
3391
3392 /*
3393 * Task 2
3394 */
3395 -
3396 +
3397 void MCD_startDmaChainEu(int *currBD, short srcIncr, short destIncr, int xferSize, short xferSizeIncr, int *cSave, volatile TaskTableEntry *taskTable, int channel)
3398 {
3399 -
3400 - MCD_SET_VAR(taskTable+channel, 2, (u32)currBD); /* var[2] */
3401 - MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3402 - MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3403 - MCD_SET_VAR(taskTable+channel, 19, (u32)xferSize); /* var[19] */
3404 - MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3405 - MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3406 - MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3407 - MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
3408 - MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3409 - MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3410 - MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3411 - MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3412 - MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3413 - MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3414 - MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3415 - MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000); /* var[11] */
3416 - MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000); /* var[12] */
3417 - MCD_SET_VAR(taskTable+channel, 13, (u32)0x00000000); /* var[13] */
3418 - MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000000); /* var[14] */
3419 - MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000000); /* var[15] */
3420 - MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000000); /* var[16] */
3421 - MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000000); /* var[17] */
3422 - MCD_SET_VAR(taskTable+channel, 18, (u32)0x00000000); /* var[18] */
3423 - MCD_SET_VAR(taskTable+channel, 20, (u32)0x00000000); /* var[20] */
3424 - MCD_SET_VAR(taskTable+channel, 21, (u32)0x00000010); /* var[21] */
3425 - MCD_SET_VAR(taskTable+channel, 22, (u32)0x00000004); /* var[22] */
3426 - MCD_SET_VAR(taskTable+channel, 23, (u32)0x00000080); /* var[23] */
3427 - MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3428 - MCD_SET_VAR(taskTable+channel, 28, (u32)0x60000000); /* inc[4] */
3429 - MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000001); /* inc[5] */
3430 - MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000000); /* inc[6] */
3431 - MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000); /* inc[7] */
3432
3433 - /*enable the task*/
3434 - MCD_dmaBar->taskControl[channel] |= (u16)0x8000; /* add a MACRO HERE TBD*/
3435 + MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
3436 + MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3437 + MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3438 + MCD_SET_VAR(taskTable+channel, 12, (u32)xferSize); /* var[12] */
3439 + MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3440 + MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3441 + MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3442 + MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
3443 + MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3444 + MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3445 + MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3446 + MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3447 + MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3448 + MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3449 + MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3450 + MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000); /* var[11] */
3451 + MCD_SET_VAR(taskTable+channel, 13, (u32)0x00000000); /* var[13] */
3452 + MCD_SET_VAR(taskTable+channel, 14, (u32)0x80000000); /* var[14] */
3453 + MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000010); /* var[15] */
3454 + MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000001); /* var[16] */
3455 + MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000004); /* var[17] */
3456 + MCD_SET_VAR(taskTable+channel, 18, (u32)0x08000000); /* var[18] */
3457 + MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3458 + MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000); /* inc[4] */
3459 + MCD_SET_VAR(taskTable+channel, 29, (u32)0xc0000000); /* inc[5] */
3460 + MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001); /* inc[6] */
3461 + MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000); /* inc[7] */
3462 +
3463 + /* Set the task's Enable bit in its Task Control Register */
3464 + MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
3465 }
3466
3467
3468 /*
3469 * Task 3
3470 */
3471 -
3472 -void MCD_startDmaSingleEu(char *srcAddr, short srcIncr, char *destAddr, short destIncr, int dmaSize, int dmaSizeMXferSize, short xferSizeIncr, int flags, int *currBD, int *cSave, volatile TaskTableEntry *taskTable, int channel)
3473 +
3474 +void 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)
3475 {
3476 -
3477 - MCD_SET_VAR(taskTable+channel, 13, (u32)srcAddr); /* var[13] */
3478 - MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3479 - MCD_SET_VAR(taskTable+channel, 4, (u32)destAddr); /* var[4] */
3480 - MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3481 - MCD_SET_VAR(taskTable+channel, 6, (u32)dmaSize); /* var[6] */
3482 - MCD_SET_VAR(taskTable+channel, 7, (u32)dmaSizeMXferSize); /* var[7] */
3483 - MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3484 - MCD_SET_VAR(taskTable+channel, 9, (u32)flags); /* var[9] */
3485 - MCD_SET_VAR(taskTable+channel, 1, (u32)currBD); /* var[1] */
3486 - MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3487 - MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
3488 - MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
3489 - MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3490 - MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3491 - MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3492 - MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000); /* var[11] */
3493 - MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000); /* var[12] */
3494 - MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000000); /* var[14] */
3495 - MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000000); /* var[15] */
3496 - MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000004); /* var[16] */
3497 - MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000080); /* var[17] */
3498 - MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3499 - MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000001); /* inc[4] */
3500 - MCD_SET_VAR(taskTable+channel, 29, (u32)0x40000000); /* inc[5] */
3501
3502 - /*enable the task*/
3503 - MCD_dmaBar->taskControl[channel] |= (u16)0x8000; /* add a MACRO HERE TBD*/
3504 + MCD_SET_VAR(taskTable+channel, 8, (u32)srcAddr); /* var[8] */
3505 + MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr)); /* inc[1] */
3506 + MCD_SET_VAR(taskTable+channel, 3, (u32)destAddr); /* var[3] */
3507 + MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr)); /* inc[0] */
3508 + MCD_SET_VAR(taskTable+channel, 4, (u32)dmaSize); /* var[4] */
3509 + MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr)); /* inc[2] */
3510 + MCD_SET_VAR(taskTable+channel, 6, (u32)flags); /* var[6] */
3511 + MCD_SET_VAR(taskTable+channel, 2, (u32)currBD); /* var[2] */
3512 + MCD_SET_VAR(taskTable+channel, 0, (u32)cSave); /* var[0] */
3513 + MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3514 + MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3515 + MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3516 + MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3517 + MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000001); /* var[10] */
3518 + MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000004); /* var[11] */
3519 + MCD_SET_VAR(taskTable+channel, 12, (u32)0x08000000); /* var[12] */
3520 + MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000); /* inc[3] */
3521 + MCD_SET_VAR(taskTable+channel, 28, (u32)0xc0000000); /* inc[4] */
3522 + MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000); /* inc[5] */
3523 + MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001); /* inc[6] */
3524 + MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000); /* inc[7] */
3525
3526 + /* Set the task's Enable bit in its Task Control Register */
3527 + MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
3528 }
3529
3530
3531 /*
3532 * Task 4
3533 */
3534 -
3535 +
3536 void MCD_startDmaENetRcv(char *bDBase, char *currBD, char *rcvFifoPtr, volatile TaskTableEntry *taskTable, int channel)
3537 {
3538 -
3539 - MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase); /* var[0] */
3540 - MCD_SET_VAR(taskTable+channel, 4, (u32)currBD); /* var[4] */
3541 - MCD_SET_VAR(taskTable+channel, 7, (u32)rcvFifoPtr); /* var[7] */
3542 - MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3543 - MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
3544 - MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
3545 - MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3546 - MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3547 - MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3548 - MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3549 - MCD_SET_VAR(taskTable+channel, 10, (u32)0x0000ffff); /* var[10] */
3550 - MCD_SET_VAR(taskTable+channel, 11, (u32)0x30000000); /* var[11] */
3551 - MCD_SET_VAR(taskTable+channel, 12, (u32)0x0fffffff); /* var[12] */
3552 - MCD_SET_VAR(taskTable+channel, 13, (u32)0x00000008); /* var[13] */
3553 - MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000); /* inc[0] */
3554 - MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000); /* inc[1] */
3555 - MCD_SET_VAR(taskTable+channel, 26, (u32)0x20000004); /* inc[2] */
3556 - MCD_SET_VAR(taskTable+channel, 27, (u32)0x40000000); /* inc[3] */
3557 - /*enable the task*/
3558 - MCD_dmaBar->taskControl[channel] |= (u16)0x8000; /* add a MACRO HERE TBD*/
3559
3560 + MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase); /* var[0] */
3561 + MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
3562 + MCD_SET_VAR(taskTable+channel, 6, (u32)rcvFifoPtr); /* var[6] */
3563 + MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3564 + MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
3565 + MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3566 + MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3567 + MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3568 + MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3569 + MCD_SET_VAR(taskTable+channel, 9, (u32)0x0000ffff); /* var[9] */
3570 + MCD_SET_VAR(taskTable+channel, 10, (u32)0x30000000); /* var[10] */
3571 + MCD_SET_VAR(taskTable+channel, 11, (u32)0x0fffffff); /* var[11] */
3572 + MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000008); /* var[12] */
3573 + MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000); /* inc[0] */
3574 + MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000); /* inc[1] */
3575 + MCD_SET_VAR(taskTable+channel, 26, (u32)0x20000004); /* inc[2] */
3576 + MCD_SET_VAR(taskTable+channel, 27, (u32)0x40000000); /* inc[3] */
3577 +
3578 + /* Set the task's Enable bit in its Task Control Register */
3579 + MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
3580 }
3581
3582
3583 /*
3584 * Task 5
3585 */
3586 -
3587 +
3588 void MCD_startDmaENetXmit(char *bDBase, char *currBD, char *xmitFifoPtr, volatile TaskTableEntry *taskTable, int channel)
3589 {
3590 -
3591 - MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase); /* var[0] */
3592 - MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
3593 - MCD_SET_VAR(taskTable+channel, 11, (u32)xmitFifoPtr); /* var[11] */
3594 - MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3595 - MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
3596 - MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3597 - MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3598 - MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3599 - MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3600 - MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3601 - MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3602 - MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3603 - MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000); /* var[12] */
3604 - MCD_SET_VAR(taskTable+channel, 13, (u32)0x0000ffff); /* var[13] */
3605 - MCD_SET_VAR(taskTable+channel, 14, (u32)0xffffffff); /* var[14] */
3606 - MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004); /* var[15] */
3607 - MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000008); /* var[16] */
3608 - MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000); /* inc[0] */
3609 - MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000); /* inc[1] */
3610 - MCD_SET_VAR(taskTable+channel, 26, (u32)0x40000000); /* inc[2] */
3611 - MCD_SET_VAR(taskTable+channel, 27, (u32)0xc000fffc); /* inc[3] */
3612 - MCD_SET_VAR(taskTable+channel, 28, (u32)0xe0000004); /* inc[4] */
3613 - MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000); /* inc[5] */
3614 - MCD_SET_VAR(taskTable+channel, 30, (u32)0x4000ffff); /* inc[6] */
3615 - MCD_SET_VAR(taskTable+channel, 31, (u32)0xe0000001); /* inc[7] */
3616
3617 - /*enable the task*/
3618 - MCD_dmaBar->taskControl[channel] |= (u16)0x8000; /* add a MACRO HERE TBD*/
3619 + MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase); /* var[0] */
3620 + MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
3621 + MCD_SET_VAR(taskTable+channel, 11, (u32)xmitFifoPtr); /* var[11] */
3622 + MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
3623 + MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
3624 + MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
3625 + MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
3626 + MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
3627 + MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
3628 + MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
3629 + MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
3630 + MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000); /* var[10] */
3631 + MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000); /* var[12] */
3632 + MCD_SET_VAR(taskTable+channel, 13, (u32)0x0000ffff); /* var[13] */
3633 + MCD_SET_VAR(taskTable+channel, 14, (u32)0xffffffff); /* var[14] */
3634 + MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004); /* var[15] */
3635 + MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000008); /* var[16] */
3636 + MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000); /* inc[0] */
3637 + MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000); /* inc[1] */
3638 + MCD_SET_VAR(taskTable+channel, 26, (u32)0x40000000); /* inc[2] */
3639 + MCD_SET_VAR(taskTable+channel, 27, (u32)0xc000fffc); /* inc[3] */
3640 + MCD_SET_VAR(taskTable+channel, 28, (u32)0xe0000004); /* inc[4] */
3641 + MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000); /* inc[5] */
3642 + MCD_SET_VAR(taskTable+channel, 30, (u32)0x4000ffff); /* inc[6] */
3643 + MCD_SET_VAR(taskTable+channel, 31, (u32)0xe0000001); /* inc[7] */
3644
3645 + /* Set the task's Enable bit in its Task Control Register */
3646 + MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
3647 }
3648 --- a/drivers/dma/MCD_tasksInit.h
3649 +++ b/drivers/dma/MCD_tasksInit.h
3650 @@ -1,40 +1,31 @@
3651 -/*********************************************************************
3652 +/*
3653 + * drivers/dma/MCD_tasksInit.h
3654 *
3655 - * Copyright (C) 2004 Motorola, Inc.
3656 - * MOTOROLA, INC. All Rights Reserved.
3657 - * You are hereby granted a copyright license to use
3658 - * the SOFTWARE so long as this entire notice is
3659 - * retained without alteration in any modified and/or redistributed
3660 - * versions, and that such modified versions are clearly identified
3661 - * as such. No licenses are granted by implication, estoppel or
3662 - * otherwise under any patents or trademarks of Motorola, Inc. This
3663 - * software is provided on an "AS IS" basis and without warranty.
3664 + * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
3665 + * Kurt Mahan <kmahan@freescale.com>
3666 *
3667 - * To the maximum extent permitted by applicable law, MOTOROLA
3668 - * DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED, INCLUDING
3669 - * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
3670 - * PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH REGARD TO THE
3671 - * SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF) AND ANY
3672 - * ACCOMPANYING WRITTEN MATERIALS.
3673 + * This program is free software; you can redistribute it and/or
3674 + * modify it under the terms of the GNU General Public License as
3675 + * published by the Free Software Foundation; either version 2 of
3676 + * the License, or (at your option) any later version.
3677 *
3678 - * To the maximum extent permitted by applicable law, IN NO EVENT
3679 - * SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER (INCLUDING
3680 - * WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS
3681 - * INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY
3682 - * LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
3683 + * This program is distributed in the hope that it will be useful,
3684 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
3685 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3686 + * GNU General Public License for more details.
3687 *
3688 - * Motorola assumes no responsibility for the maintenance and support
3689 - * of this software
3690 - ********************************************************************/
3691 + * You should have received a copy of the GNU General Public License
3692 + * along with this program; if not, write to the Free Software
3693 + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
3694 + * MA 02111-1307 USA
3695 + */
3696 #ifndef MCD_TSK_INIT_H
3697 #define MCD_TSK_INIT_H 1
3698
3699 /*
3700 - * Do not edit!
3701 + * Autogenerated - Do not edit!
3702 */
3703
3704 -
3705 -
3706 /*
3707 * Task 0
3708 */
3709 @@ -44,7 +35,7 @@ void MCD_startDmaChainNoEu(int *currBD,
3710 /*
3711 * Task 1
3712 */
3713 -void MCD_startDmaSingleNoEu(char *srcAddr, short srcIncr, char *destAddr, short destIncr, int dmaSize, int dmaSizeMXferSize, short xferSizeIncr, int flags, int *currBD, int *cSave, volatile TaskTableEntry *taskTable, int channel);
3714 +void 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);
3715
3716
3717 /*
3718 @@ -56,7 +47,7 @@ void MCD_startDmaChainEu(int *currBD, s
3719 /*
3720 * Task 3
3721 */
3722 -void MCD_startDmaSingleEu(char *srcAddr, short srcIncr, char *destAddr, short destIncr, int dmaSize, int dmaSizeMXferSize, short xferSizeIncr, int flags, int *currBD, int *cSave, volatile TaskTableEntry *taskTable, int channel);
3723 +void 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);
3724
3725
3726 /*
This page took 0.180715 seconds and 5 git commands to generate.