Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:45

0001 /*
0002  * File:        MCD_tasksInit.c
0003  * Purpose:     Functions for initializing variable tables of different
0004  *              types of tasks.
0005  *
0006  * Notes:
0007  */
0008 
0009 /*
0010  * Do not edit!
0011  */
0012 
0013 #include <mcf548x/MCD_dma.h>
0014 #include <mcf548x/MCD_tasksInit.h>
0015 
0016 extern dmaRegs *MCD_dmaBar;
0017 
0018 
0019 /*
0020  * Task 0
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); /* var[2] */
0027     MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
0028     MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
0029     MCD_SET_VAR(taskTable+channel, 11, (u32)xferSize);  /* var[11] */
0030     MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
0031     MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
0032     MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
0033     MCD_SET_VAR(taskTable+channel, 3, (u32)0x00000000); /* var[3] */
0034     MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
0035     MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
0036     MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
0037     MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
0038     MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
0039     MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
0040     MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);    /* var[10] */
0041     MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000);    /* var[12] */
0042     MCD_SET_VAR(taskTable+channel, 13, (u32)0x80000000);    /* var[13] */
0043     MCD_SET_VAR(taskTable+channel, 14, (u32)0x00000010);    /* var[14] */
0044     MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004);    /* var[15] */
0045     MCD_SET_VAR(taskTable+channel, 16, (u32)0x08000000);    /* var[16] */
0046     MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
0047     MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000);    /* inc[4] */
0048     MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000001);    /* inc[5] */
0049     MCD_SET_VAR(taskTable+channel, 30, (u32)0x40000000);    /* inc[6] */
0050 
0051     /* Set the task's Enable bit in its Task Control Register */
0052     MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0053 }
0054 
0055 
0056 /*
0057  * Task 1
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);    /* var[7] */
0064     MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
0065     MCD_SET_VAR(taskTable+channel, 2, (u32)destAddr);   /* var[2] */
0066     MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
0067     MCD_SET_VAR(taskTable+channel, 3, (u32)dmaSize);    /* var[3] */
0068     MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
0069     MCD_SET_VAR(taskTable+channel, 5, (u32)flags);  /* var[5] */
0070     MCD_SET_VAR(taskTable+channel, 1, (u32)currBD); /* var[1] */
0071     MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
0072     MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
0073     MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
0074     MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
0075     MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000004); /* var[9] */
0076     MCD_SET_VAR(taskTable+channel, 10, (u32)0x08000000);    /* var[10] */
0077     MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
0078     MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000001);    /* inc[4] */
0079     MCD_SET_VAR(taskTable+channel, 29, (u32)0x40000000);    /* inc[5] */
0080 
0081     /* Set the task's Enable bit in its Task Control Register */
0082     MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0083 }
0084 
0085 
0086 /*
0087  * Task 2
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); /* var[3] */
0094     MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
0095     MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
0096     MCD_SET_VAR(taskTable+channel, 12, (u32)xferSize);  /* var[12] */
0097     MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
0098     MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
0099     MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
0100     MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
0101     MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
0102     MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
0103     MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
0104     MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
0105     MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
0106     MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
0107     MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);    /* var[10] */
0108     MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000000);    /* var[11] */
0109     MCD_SET_VAR(taskTable+channel, 13, (u32)0x00000000);    /* var[13] */
0110     MCD_SET_VAR(taskTable+channel, 14, (u32)0x80000000);    /* var[14] */
0111     MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000010);    /* var[15] */
0112     MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000001);    /* var[16] */
0113     MCD_SET_VAR(taskTable+channel, 17, (u32)0x00000004);    /* var[17] */
0114     MCD_SET_VAR(taskTable+channel, 18, (u32)0x08000000);    /* var[18] */
0115     MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
0116     MCD_SET_VAR(taskTable+channel, 28, (u32)0x80000000);    /* inc[4] */
0117     MCD_SET_VAR(taskTable+channel, 29, (u32)0xc0000000);    /* inc[5] */
0118     MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001);    /* inc[6] */
0119     MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000);    /* inc[7] */
0120 
0121     /* Set the task's Enable bit in its Task Control Register */
0122     MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0123 }
0124 
0125 
0126 /*
0127  * Task 3
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);    /* var[8] */
0134     MCD_SET_VAR(taskTable+channel, 25, (u32)(0xe000 << 16) | (0xffff & srcIncr));   /* inc[1] */
0135     MCD_SET_VAR(taskTable+channel, 3, (u32)destAddr);   /* var[3] */
0136     MCD_SET_VAR(taskTable+channel, 24, (u32)(0xe000 << 16) | (0xffff & destIncr));  /* inc[0] */
0137     MCD_SET_VAR(taskTable+channel, 4, (u32)dmaSize);    /* var[4] */
0138     MCD_SET_VAR(taskTable+channel, 26, (u32)(0x2000 << 16) | (0xffff & xferSizeIncr));  /* inc[2] */
0139     MCD_SET_VAR(taskTable+channel, 6, (u32)flags);  /* var[6] */
0140     MCD_SET_VAR(taskTable+channel, 2, (u32)currBD); /* var[2] */
0141     MCD_SET_VAR(taskTable+channel, 0, (u32)cSave);  /* var[0] */
0142     MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
0143     MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
0144     MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
0145     MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
0146     MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000001);    /* var[10] */
0147     MCD_SET_VAR(taskTable+channel, 11, (u32)0x00000004);    /* var[11] */
0148     MCD_SET_VAR(taskTable+channel, 12, (u32)0x08000000);    /* var[12] */
0149     MCD_SET_VAR(taskTable+channel, 27, (u32)0x00000000);    /* inc[3] */
0150     MCD_SET_VAR(taskTable+channel, 28, (u32)0xc0000000);    /* inc[4] */
0151     MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000);    /* inc[5] */
0152     MCD_SET_VAR(taskTable+channel, 30, (u32)0x80000001);    /* inc[6] */
0153     MCD_SET_VAR(taskTable+channel, 31, (u32)0x40000000);    /* inc[7] */
0154 
0155     /* Set the task's Enable bit in its Task Control Register */
0156     MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0157 }
0158 
0159 
0160 /*
0161  * Task 4
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); /* var[0] */
0168     MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
0169     MCD_SET_VAR(taskTable+channel, 6, (u32)rcvFifoPtr); /* var[6] */
0170     MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
0171     MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
0172     MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
0173     MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
0174     MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
0175     MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
0176     MCD_SET_VAR(taskTable+channel, 9, (u32)0x0000ffff); /* var[9] */
0177     MCD_SET_VAR(taskTable+channel, 10, (u32)0x30000000);    /* var[10] */
0178     MCD_SET_VAR(taskTable+channel, 11, (u32)0x0fffffff);    /* var[11] */
0179     MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000008);    /* var[12] */
0180     MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000);    /* inc[0] */
0181     MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000);    /* inc[1] */
0182     MCD_SET_VAR(taskTable+channel, 26, (u32)0x20000004);    /* inc[2] */
0183     MCD_SET_VAR(taskTable+channel, 27, (u32)0x40000000);    /* inc[3] */
0184 
0185     /* Set the task's Enable bit in its Task Control Register */
0186     MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0187 }
0188 
0189 
0190 /*
0191  * Task 5
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); /* var[0] */
0198     MCD_SET_VAR(taskTable+channel, 3, (u32)currBD); /* var[3] */
0199     MCD_SET_VAR(taskTable+channel, 11, (u32)xmitFifoPtr);   /* var[11] */
0200     MCD_SET_VAR(taskTable+channel, 1, (u32)0x00000000); /* var[1] */
0201     MCD_SET_VAR(taskTable+channel, 2, (u32)0x00000000); /* var[2] */
0202     MCD_SET_VAR(taskTable+channel, 4, (u32)0x00000000); /* var[4] */
0203     MCD_SET_VAR(taskTable+channel, 5, (u32)0x00000000); /* var[5] */
0204     MCD_SET_VAR(taskTable+channel, 6, (u32)0x00000000); /* var[6] */
0205     MCD_SET_VAR(taskTable+channel, 7, (u32)0x00000000); /* var[7] */
0206     MCD_SET_VAR(taskTable+channel, 8, (u32)0x00000000); /* var[8] */
0207     MCD_SET_VAR(taskTable+channel, 9, (u32)0x00000000); /* var[9] */
0208     MCD_SET_VAR(taskTable+channel, 10, (u32)0x00000000);    /* var[10] */
0209     MCD_SET_VAR(taskTable+channel, 12, (u32)0x00000000);    /* var[12] */
0210     MCD_SET_VAR(taskTable+channel, 13, (u32)0x0000ffff);    /* var[13] */
0211     MCD_SET_VAR(taskTable+channel, 14, (u32)0xffffffff);    /* var[14] */
0212     MCD_SET_VAR(taskTable+channel, 15, (u32)0x00000004);    /* var[15] */
0213     MCD_SET_VAR(taskTable+channel, 16, (u32)0x00000008);    /* var[16] */
0214     MCD_SET_VAR(taskTable+channel, 24, (u32)0x00000000);    /* inc[0] */
0215     MCD_SET_VAR(taskTable+channel, 25, (u32)0x60000000);    /* inc[1] */
0216     MCD_SET_VAR(taskTable+channel, 26, (u32)0x40000000);    /* inc[2] */
0217     MCD_SET_VAR(taskTable+channel, 27, (u32)0xc000fffc);    /* inc[3] */
0218     MCD_SET_VAR(taskTable+channel, 28, (u32)0xe0000004);    /* inc[4] */
0219     MCD_SET_VAR(taskTable+channel, 29, (u32)0x80000000);    /* inc[5] */
0220     MCD_SET_VAR(taskTable+channel, 30, (u32)0x4000ffff);    /* inc[6] */
0221     MCD_SET_VAR(taskTable+channel, 31, (u32)0xe0000001);    /* inc[7] */
0222 
0223     /* Set the task's Enable bit in its Task Control Register */
0224     MCD_dmaBar->taskControl[channel] |= (u16)0x8000;
0225 }