]> rtime.felk.cvut.cz Git - arc.git/blob - arch/ppc/mpc55xx/drivers/Dma.h
Merged in from default
[arc.git] / arch / ppc / mpc55xx / drivers / Dma.h
1 /* -------------------------------- Arctic Core ------------------------------\r
2  * Arctic Core - the open source AUTOSAR platform http://arccore.com\r
3  *\r
4  * Copyright (C) 2009  ArcCore AB <contact@arccore.com>\r
5  *\r
6  * This source code is free software; you can redistribute it and/or modify it\r
7  * under the terms of the GNU General Public License version 2 as published by the\r
8  * Free Software Foundation; See <http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt>.\r
9  *\r
10  * This program is distributed in the hope that it will be useful, but\r
11  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\r
12  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License\r
13  * for more details.\r
14  * -------------------------------- Arctic Core ------------------------------*/\r
15 \r
16 \r
17 \r
18 \r
19 \r
20 \r
21 \r
22 \r
23 #ifndef DMA_H_\r
24 #define DMA_H_\r
25 \r
26 \r
27 #include "Std_Types.h"\r
28 #include "Dma_Cfg.h"\r
29 #include "mpc55xx.h"\r
30 \r
31 typedef enum\r
32 {\r
33   DMA_CHANNEL_DISABLED,\r
34   DMA_SCI_A_COMBTX,\r
35   DMA_SCI_A_COMBRX,\r
36   DMA_SCI_B_COMBTX,\r
37   DMA_SCI_B_COMBRX,\r
38   DMA_SCI_C_COMBTX,\r
39   DMA_SCI_C_COMBRX,\r
40   DMA_SCI_D_COMBTX,\r
41   DMA_SCI_D_COMBRX,\r
42   DMA_SCI_E_COMBTX,\r
43   DMA_SCI_E_COMBRX,\r
44   DMA_SCI_F_COMBTX,\r
45   DMA_SCI_F_COMBRX,\r
46   DMA_SCI_G_COMBTX,\r
47   DMA_SCI_G_COMBRX,\r
48   DMA_SCI_H_COMBTX,\r
49   DMA_SCI_H_COMBRX,\r
50 \r
51   DMA_DSPI_A_SR_TFFF,\r
52   DMA_DSPI_A_SR_RFRD,\r
53   DMA_DSPI_B_SR_TFFF,\r
54   DMA_DSPI_B_SR_RFRD,\r
55   DMA_DSPI_C_SR_TFFF,\r
56   DMA_DSPI_C_SR_RFRD,\r
57   DMA_DSPI_D_SR_TFFF,\r
58   DMA_DSPI_D_SR_RFRD,\r
59 \r
60   DMA_EMIOS200_FLAG_F0,\r
61   DMA_EMIOS200_FLAG_F1,\r
62   DMA_EMIOS200_FLAG_F2,\r
63   DMA_EMIOS200_FLAG_F3,\r
64   DMA_EMIOS200_FLAG_F4,\r
65   DMA_EMIOS200_FLAG_F5,\r
66   DMA_EMIOS200_FLAG_F6,\r
67   DMA_EMIOS200_FLAG_F7,\r
68   DMA_EMIOS200_FLAG_F8,\r
69   DMA_EMIOS200_FLAG_F9,\r
70   DMA_EMIOS200_FLAG_F10,\r
71   DMA_EMIOS200_FLAG_F11,\r
72   DMA_EMIOS200_FLAG_F12,\r
73   DMA_EMIOS200_FLAG_F13,\r
74   DMA_EMIOS200_FLAG_F14,\r
75   DMA_EMIOS200_FLAG_F15,\r
76 \r
77   DMA_IIC_A_TX,\r
78   DMA_IIC_A_RX,\r
79 \r
80   DMA_RESERVED1,\r
81   DMA_RESERVED2,\r
82 \r
83   DMA_SIU_EISR_EIF1,\r
84   DMA_SIU_EISR_EIF2,\r
85   DMA_SIU_EISR_EIF3,\r
86   DMA_SIU_EISR_EIF4,\r
87 \r
88   DMA_EQADC_FISR0_RFDF0,\r
89   DMA_EQADC_FISR0_CFFF0,\r
90   DMA_EQADC_FISR1_RFDF0,\r
91   DMA_EQADC_FISR1_CFFF0,\r
92 \r
93   DMA_MLB_DMA_REQ,\r
94 \r
95   DMA_RESERVED3,\r
96   DMA_RESERVED4,\r
97 \r
98   DMA_ALWAYS_ENABLED1,\r
99   DMA_ALWAYS_ENABLED2,\r
100   DMA_ALWAYS_ENABLED3,\r
101   DMA_ALWAYS_ENABLED4,\r
102   DMA_ALWAYS_ENABLED5,\r
103   DMA_ALWAYS_ENABLED6,\r
104   DMA_ALWAYS_ENABLED7,\r
105   DMA_ALWAYS_ENABLED8\r
106 }Dma_MuxChannels;\r
107 \r
108 typedef struct\r
109 {\r
110   vuint8_t DMA_CHANNEL_ENABLE;\r
111   vuint8_t DMA_CHANNEL_TRIG_ENABLE;\r
112   Dma_MuxChannels DMA_CHANNEL_SOURCE;\r
113 } Dma_MuxConfigType;\r
114 \r
115 typedef struct\r
116 {\r
117   vuint8_t DMA_CHANNEL_PRIORITY;\r
118   vuint8_t DMA_CHANNEL_PREEMTION_ENABLE;\r
119 }Dma_ChannelConfigType;\r
120 \r
121 typedef enum\r
122 {\r
123   DMA_TRANSFER_SIZE_8BITS,\r
124   DMA_TRANSFER_SIZE_16BITS,\r
125   DMA_TRANSFER_SIZE_32BITS,\r
126   DMA_TRANSFER_SIZE_64BITS,\r
127   DMA_TRANSFER_SIZE_16BYTES_BURST,\r
128   DMA_TRANSFER_SIZE_32BYTES_BURST\r
129 }Dma_DataTranferSizeType;\r
130 \r
131 typedef enum\r
132 {\r
133   DMA_FIXED_PRIORITY_ARBITRATION,\r
134   DMA_ROUND_ROBIN_ARBITRATION\r
135 }Dma_ChannelArbitrationType;\r
136 \r
137 typedef struct\r
138 {\r
139         // 5567 has no Dma Mux, but maybe this should be left in anyway?\r
140 #if defined(CFG_MPC5516) || defined(CFG_MPC5517)\r
141   const Dma_MuxConfigType          *dmaMuxConfigPtr;\r
142 #endif\r
143   const Dma_ChannelConfigType      *dmaChannelConfigPtr;\r
144   const Dma_ChannelArbitrationType  dmaChannelArbitration;\r
145 }Dma_ConfigType;\r
146 \r
147 extern const Dma_ConfigType DmaConfig [];\r
148 \r
149 \r
150 void Dma_Init (const Dma_ConfigType *ConfigPtr);\r
151 void Dma_ConfigureChannel (struct tcd_t *tcd, Dma_ChannelType channel);\r
152 void Dma_ConfigureChannelTranferSize (uint32_t nbrOfIterations, Dma_ChannelType channel);\r
153 void Dma_ConfigureChannelSourceCorr (uint32_t sourceCorrection, Dma_ChannelType channel);\r
154 void Dma_ConfigureChannelDestinationCorr (uint32_t destinationCorrection, Dma_ChannelType channel);\r
155 void Dma_ConfigureDestinationAddress (uint32_t destAddr, Dma_ChannelType channel);\r
156 void Dma_ConfigureSourceAddress (uint32_t sourceAddr, Dma_ChannelType channel);\r
157 void Dma_StartChannel (Dma_ChannelType channel);\r
158 void Dma_StopChannel (Dma_ChannelType channel);\r
159 Std_ReturnType Dma_ChannelDone (Dma_ChannelType channel);\r
160 volatile struct tcd_t * Dma_GetTcd( Dma_ChannelType channel );\r
161 boolean Dma_CheckConfig( void );\r
162 \r
163 #endif /* DMA_H_ */\r