MCD_tasksInit.c 10 KB

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