File indexing completed on 2025-05-11 08:23:45
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include <mcf548x/MCD_dma.h>
0014 #include <mcf548x/MCD_tasksInit.h>
0015
0016 extern dmaRegs *MCD_dmaBar;
0017
0018
0019
0020
0021
0022
0023 void MCD_startDmaChainNoEu(int *currBD, short srcIncr, short destIncr, int xferSize, short xferSizeIncr, int *cSave, volatile TaskTableEntry *taskTable, int channel)
0024 {
0025
0026 MCD_SET_VAR(taskTable+channel, 2, (u32)currBD);
0027 MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));
0028 MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));
0029 MCD_SET_VAR(taskTable+channel, 11, (u32)xferSize);
0030 MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));
0031 MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);
0032 MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000);
0033 MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000);
0034 MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000);
0035 MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000);
0036 MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000);
0037 MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000);
0038 MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000);
0039 MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000);
0040 MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);
0041 MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000);
0042 MCD_SET_VAR(taskTable+channel, 13, (u32)0x80000000);
0043 MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000010);
0044 MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004);
0045 MCD_SET_VAR(taskTable+channel, 16, (u32)0x08000000);
0046 MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);
0047 MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000);
0048 MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000001);
0049 MCD_SET_VAR(taskTable+channel, 30, (u32)0x40000000);
0050
0051
0052 MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0053 }
0054
0055
0056
0057
0058
0059
0060 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)
0061 {
0062
0063 MCD_SET_VAR(taskTable+channel, 7, (u32)srcAddr);
0064 MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));
0065 MCD_SET_VAR(taskTable+channel, 2, (u32)destAddr);
0066 MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));
0067 MCD_SET_VAR(taskTable+channel, 3, (u32)dmaSize);
0068 MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));
0069 MCD_SET_VAR(taskTable+channel, 5, (u32)flags);
0070 MCD_SET_VAR(taskTable+channel, 1, (u32)currBD);
0071 MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);
0072 MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000);
0073 MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000);
0074 MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000);
0075 MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000004);
0076 MCD_SET_VAR(taskTable+channel, 10, (u32)0x08000000);
0077 MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);
0078 MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000001);
0079 MCD_SET_VAR(taskTable+channel, 29, (u32)0x40000000);
0080
0081
0082 MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0083 }
0084
0085
0086
0087
0088
0089
0090 void MCD_startDmaChainEu(int *currBD, short srcIncr, short destIncr, int xferSize, short xferSizeIncr, int *cSave, volatile TaskTableEntry *taskTable, int channel)
0091 {
0092
0093 MCD_SET_VAR(taskTable+channel, 3, (u32)currBD);
0094 MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));
0095 MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));
0096 MCD_SET_VAR(taskTable+channel, 12, (u32)xferSize);
0097 MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));
0098 MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);
0099 MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000);
0100 MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000);
0101 MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000);
0102 MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000);
0103 MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000);
0104 MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000);
0105 MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000);
0106 MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000);
0107 MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);
0108 MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000);
0109 MCD_SET_VAR(taskTable+channel, 13, (u32)0x00000000);
0110 MCD_SET_VAR(taskTable+channel, 14, (u32)0x80000000);
0111 MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000010);
0112 MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000001);
0113 MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000004);
0114 MCD_SET_VAR(taskTable+channel, 18, (u32)0x08000000);
0115 MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);
0116 MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000);
0117 MCD_SET_VAR(taskTable+channel, 29, (u32)0xc0000000);
0118 MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001);
0119 MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000);
0120
0121
0122 MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0123 }
0124
0125
0126
0127
0128
0129
0130 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)
0131 {
0132
0133 MCD_SET_VAR(taskTable+channel, 8, (u32)srcAddr);
0134 MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));
0135 MCD_SET_VAR(taskTable+channel, 3, (u32)destAddr);
0136 MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));
0137 MCD_SET_VAR(taskTable+channel, 4, (u32)dmaSize);
0138 MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));
0139 MCD_SET_VAR(taskTable+channel, 6, (u32)flags);
0140 MCD_SET_VAR(taskTable+channel, 2, (u32)currBD);
0141 MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);
0142 MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000);
0143 MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000);
0144 MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000);
0145 MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000);
0146 MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000001);
0147 MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000004);
0148 MCD_SET_VAR(taskTable+channel, 12, (u32)0x08000000);
0149 MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);
0150 MCD_SET_VAR(taskTable+channel, 28, (u32)0xc0000000);
0151 MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000);
0152 MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001);
0153 MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000);
0154
0155
0156 MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0157 }
0158
0159
0160
0161
0162
0163
0164 void MCD_startDmaENetRcv(char *bDBase, char *currBD, char *rcvFifoPtr, volatile TaskTableEntry *taskTable, int channel)
0165 {
0166
0167 MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase);
0168 MCD_SET_VAR(taskTable+channel, 3, (u32)currBD);
0169 MCD_SET_VAR(taskTable+channel, 6, (u32)rcvFifoPtr);
0170 MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000);
0171 MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000);
0172 MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000);
0173 MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000);
0174 MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000);
0175 MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000);
0176 MCD_SET_VAR(taskTable+channel, 9, (u32)0x0000ffff);
0177 MCD_SET_VAR(taskTable+channel, 10, (u32)0x30000000);
0178 MCD_SET_VAR(taskTable+channel, 11, (u32)0x0fffffff);
0179 MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000008);
0180 MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000);
0181 MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000);
0182 MCD_SET_VAR(taskTable+channel, 26, (u32)0x20000004);
0183 MCD_SET_VAR(taskTable+channel, 27, (u32)0x40000000);
0184
0185
0186 MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0187 }
0188
0189
0190
0191
0192
0193
0194 void MCD_startDmaENetXmit(char *bDBase, char *currBD, char *xmitFifoPtr, volatile TaskTableEntry *taskTable, int channel)
0195 {
0196
0197 MCD_SET_VAR(taskTable+channel, 0, (u32)bDBase);
0198 MCD_SET_VAR(taskTable+channel, 3, (u32)currBD);
0199 MCD_SET_VAR(taskTable+channel, 11, (u32)xmitFifoPtr);
0200 MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000);
0201 MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000);
0202 MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000);
0203 MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000);
0204 MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000);
0205 MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000);
0206 MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000);
0207 MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000);
0208 MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);
0209 MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000);
0210 MCD_SET_VAR(taskTable+channel, 13, (u32)0x0000ffff);
0211 MCD_SET_VAR(taskTable+channel, 14, (u32)0xffffffff);
0212 MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004);
0213 MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000008);
0214 MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000);
0215 MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000);
0216 MCD_SET_VAR(taskTable+channel, 26, (u32)0x40000000);
0217 MCD_SET_VAR(taskTable+channel, 27, (u32)0xc000fffc);
0218 MCD_SET_VAR(taskTable+channel, 28, (u32)0xe0000004);
0219 MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000);
0220 MCD_SET_VAR(taskTable+channel, 30, (u32)0x4000ffff);
0221 MCD_SET_VAR(taskTable+channel, 31, (u32)0xe0000001);
0222
0223
0224 MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0225 }