]> git.sur5r.net Git - freertos/blob - Demo/ARM9_STR91X_IAR/Library/include/91x_dma.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / ARM9_STR91X_IAR / Library / include / 91x_dma.h
1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************\r
2 * File Name          : template.h\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 05/18/2006 : Version 1.0\r
5 * Description        : provide a short description of the source file indicating\r
6 *                      its purpose.\r
7 ********************************************************************************\r
8 * History:\r
9 * 05/24/2006 : Version 1.1\r
10 * 05/18/2006 : Version 1.0\r
11 ********************************************************************************\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
14 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
15 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
16 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
17 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 /* Define to prevent recursive inclusion -------------------------------------*/\r
21 #ifndef __91x_DMA_H\r
22 #define __91x_DMA_H\r
23 \r
24 /* Includes ------------------------------------------------------------------*/\r
25 #include"91x_map.h"\r
26 \r
27 \r
28 /* Exported types ------------------------------------------------------------*/\r
29 \r
30 typedef struct\r
31 {\r
32  u32 DMA_Channel_SrcAdd;    /* The current source address (byte-aligned) of the data to be transferred.*/\r
33 \r
34  u32 DMA_Channel_DesAdd;    /* The current destination address (byte-aligned) of the data to be transferred.*/\r
35 \r
36  u32 DMA_Channel_LLstItm;   /* The word- aligned address for the next Linked List Item. */\r
37 \r
38  u32 DMA_Channel_DesWidth;   /* Destination transfer width. */\r
39 \r
40  u32 DMA_Channel_SrcWidth;   /* Source transfer width. */\r
41 \r
42  u32 DMA_Channel_DesBstSize; /* The destination burst size which indicates the number of transfers that make up a destination burst transfer request.*/\r
43 \r
44  u32 DMA_Channel_SrcBstSize; /* The source burst size.Indicates the number of transfers that make up a source burst */\r
45 \r
46  u32 DMA_Channel_TrsfSize;   /* Transfer size which indicates the size of the transfer when the DMA controller is the flow controller*/\r
47 \r
48  u32 DMA_Channel_FlowCntrl;  /* Flow control and transfer type. */\r
49 \r
50  u32 DMA_Channel_Src;        /* Source peripheral: selects the DMA source request peripheral. */\r
51 \r
52  u32 DMA_Channel_Des;        /* Destination peripheral:selects the DMA destination request peripheral. */\r
53 \r
54 } DMA_InitTypeDef;\r
55 \r
56 /* Exported constants --------------------------------------------------------*/\r
57 \r
58     /* Interrupts masks */\r
59 \r
60 #define    DMA_ITMask_IE                0x4000  /* Interrupt error mask. */\r
61 #define    DMA_ITMask_ITC               0x8000  /* Terminal count interrupt mask.*/\r
62 #define    DMA_ITMask_ALL               0xC000  /* All DMA_Channelx interrupts enable/disable mask*/\r
63 \r
64   /* Sources Request (used as masks) */\r
65 \r
66 #define   DMA_USB_RX_Mask                   0x0001\r
67 #define   DMA_USB_TX_Mask                   0x0002\r
68 #define   DMA_TIM0_Mask                 0x0004\r
69 #define   DMA_TIM1_Mask                 0x0008\r
70 #define   DMA_UART0_RX_Mask             0x0010\r
71 #define   DMA_UART0_TX_Mask             0x0020\r
72 #define   DMA_UART1_RX_Mask             0x0040\r
73 #define   DMA_UART1_TX_Mask             0x0080\r
74 #define   DMA_External_Req0_Mask        0x0100\r
75 #define   DMA_External_Req1_Mask            0x0200\r
76 #define   DMA_I2C0_Mask                 0x0400\r
77 #define   DMA_I2C1_Mask                 0x0800\r
78 #define   DMA_SSP0_RX_Mask                  0x1000\r
79 #define   DMA_SSP0_TX_Mask                  0x2000\r
80 #define   DMA_SSP1_RX_Mask                  0x4000\r
81 #define   DMA_SSP1_TX_Mask                  0x8000\r
82 \r
83 \r
84 /* Previleged Mode and user mode */\r
85 \r
86 #define   DMA_PrevilegedMode            0x10000000\r
87 #define   DMA_UserMode                  0xEFFFFFFF\r
88 \r
89 \r
90 /* Error and Terminal Count interrupts Status, after and before"raw" masking */\r
91 #define   DMA_IS                        0x01\r
92 #define   DMA_TCS                       0x02\r
93 #define   DMA_ES                        0x03\r
94 #define   DMA_TCRS                      0x04\r
95 #define   DMA_ERS                       0x05\r
96 \r
97 \r
98 /* interrupt clear: Terminal Count flag Clear and Error flag clear*/\r
99 \r
100 #define   DMA_TCC                       0x01\r
101 #define   DMA_EC                        0x02\r
102 \r
103 /* channel index "0...7"*/\r
104 \r
105 #define   Channel0                      0\r
106 #define   Channel1                      1\r
107 #define   Channel2                      2\r
108 #define   Channel3                      3\r
109 #define   Channel4                      4\r
110 #define   Channel5                      5\r
111 #define   Channel6                      6\r
112 #define   Channel7                      7\r
113 \r
114 \r
115 \r
116 /* Destination request selection: selects the DMA Destination request peripheral */\r
117 \r
118 #define   DMA_DES_USB_RX                0x00\r
119 #define   DMA_DES_USB_TX                0x40\r
120 #define   DMA_DES_TIM1              0x80\r
121 #define   DMA_DES_TIM2              0xC0\r
122 #define   DMA_DES_UART0_RX                  0x100\r
123 #define   DMA_DES_UART0_TX                  0x140\r
124 #define   DMA_DES_UART1_RX              0x180\r
125 #define   DMA_DES_UART1_TX              0x1C0\r
126 #define   DMA_DES_External_Req0     0x200\r
127 #define   DMA_DES_External_Req1     0x240\r
128 #define   DMA_DES_I2C0              0x280\r
129 #define   DMA_DES_I2C1              0x2C0\r
130 #define   DMA_DES_SSP0_RX               0x300\r
131 #define   DMA_DES_SSP0_TX               0x340\r
132 #define   DMA_DES_SSP1_RX               0x380\r
133 #define   DMA_DES_SSP1_TX               0x3C0\r
134 \r
135 \r
136 \r
137 \r
138 /* Source request selection: selects the DMA Source request peripheral */\r
139 \r
140 #define   DMA_SRC_USB_RX                0x00\r
141 #define   DMA_SRC_USB_TX                0x02\r
142 #define   DMA_SRC_TIM1              0x04\r
143 #define   DMA_SRC_TIM2              0x06\r
144 #define   DMA_SRC_UART0_RX                  0x08\r
145 #define   DMA_SRC_UART0_TX                  0x0A\r
146 #define   DMA_SRC_UART1_RX              0x0C\r
147 #define   DMA_SRC_UART1_TX              0x0E\r
148 #define   DMA_SRC_External_Req0     0x10\r
149 #define   DMA_SRC_External_Req1     0x12\r
150 #define   DMA_SRC_I2C0              0x14\r
151 #define   DMA_SRC_I2C1              0x16\r
152 #define   DMA_SRC_SSP0_RX               0x18\r
153 #define   DMA_SRC_SSP0_TX               0x1A\r
154 #define   DMA_SRC_SSP1_RX               0x1C\r
155 #define   DMA_SRC_SSP1_TX               0x1E\r
156 \r
157 \r
158 \r
159 \r
160 \r
161 #define   DMA_FlowCntrlt0_DMA          0x00000000          /* transfer type :Memory-to-memory, flow controller:DMA */\r
162 #define   DMA_FlowCntrl1_DMA           0x00000800          /* transfer type :Memory-to-peripheral, flow controller:DMA */\r
163 #define   DMA_FlowCntrl2_DMA           0x00001000          /* transfer type :Peripheral-to-memory, flow controller:DMA */\r
164 #define   DMA_FlowCntrl3_DMA           0x00001800          /* transfer type :Source peripheral-to-destination peripheral, flow controller:DMA */        \r
165 #define   DMA_FlowCntrl_DestPerip          0x00002000      /* transfer type :Source peripheral-to-destination peripheral, flow controller:Destination peripheral */     \r
166 #define   DMA_FlowCntrl_Perip1         0x00002800      /* transfer type :Memory-to-peripheral, flow controller:peripheral */            \r
167 #define   DMA_FlowCntrl_Perip2         0x00003000      /* transfer  type : Peripheral-to-memory, flow controller:peripheral */  \r
168 #define   DMA_FlowCntrl_SrcPerip           0x00003800      /* transfer  type :Source peripheral-to-destination peripheral, flow controller:Source peripheral */ \r
169 \r
170 \r
171 \r
172 \r
173 #define   DMA_SrcBst_1Data                0x00000000    /* Source Burst transfer request IS 1 Data ( DATA = Source transfer width ) */\r
174 #define   DMA_SrcBst_4Data                0x00001000    /* Source Burst transfer request IS 4 Data  */\r
175 #define   DMA_SrcBst_8Data                0x00002000    /* Source Burst transfer request IS 8 Data   */\r
176 #define   DMA_SrcBst_16Data               0x00003000    /* Source Burst transfer request IS 16 Data  */\r
177 #define   DMA_SrcBst_32Data               0x00004000    /* Source Burst transfer request IS 32 Data  */\r
178 #define   DMA_SrcBst_64Data               0x00005000    /* Source Burst transfer request IS 64Data   */\r
179 #define   DMA_SrcBst_128Data          0x00006000        /* Source Burst transfer request IS 128 Data */\r
180 #define   DMA_SrcBst_256Data          0x00007000        /* Source Burst transfer request IS 256 Data */\r
181 \r
182 \r
183 \r
184 \r
185 #define   DMA_DesBst_1Data                0x00000000    /*Destination Burst transfer request IS 1Data ( DATA = destination transfer width ) */\r
186 #define   DMA_DesBst_4Data                0x00008000    /*Destination Burst transfer request IS 1 Data   */\r
187 #define   DMA_DesBst_8Data                0x00010000    /*Destination Burst transfer request IS 4 Data   */\r
188 #define   DMA_DesBst_16Data               0x00018000    /*Destination Burst transfer request IS 8 Data   */\r
189 #define   DMA_DesBst_32Data               0x00020000    /*Destination Burst transfer request IS 16 Data  */\r
190 #define   DMA_DesBst_64Data               0x00028000    /*Destination Burst transfer request IS 32 Data  */\r
191 #define   DMA_DesBst_128Data          0x00030000        /*Destination Burst transfer request IS 128 Data */\r
192 #define   DMA_DesBst_256Data          0x00038000        /*Destination Burst transfer request IS 256 Data */\r
193 \r
194 \r
195 \r
196 \r
197 \r
198 #define   DMA_SrcWidth_Byte               0x00000000  /* source Width is one Byte */\r
199 #define   DMA_SrcWidth_HalfWord       0x00040000  /* source Width is one HalfWord */\r
200 #define   DMA_SrcWidth_Word               0x00080000  /*  source Width is one Word  */\r
201 \r
202 \r
203 \r
204 \r
205 #define   DMA_DesWidth_Byte               0x00000000  /* Destination Width is one Byte */\r
206 #define   DMA_DesWidth_HalfWord       0x00200000  /* Destination Width is one HalfWord */\r
207 #define   DMA_DesWidth_Word               0x00400000    /* Destination Width is one Word */\r
208 \r
209 \r
210 \r
211 \r
212 \r
213 \r
214 /* Exported macro ------------------------------------------------------------*/\r
215 /* Exported functions ------------------------------------------------------- */\r
216 \r
217 void DMA_DeInit(void);\r
218 void DMA_Init(DMA_Channel_TypeDef * DMA_Channelx, DMA_InitTypeDef * DMA_InitStruct);\r
219 void DMA_StructInit(DMA_InitTypeDef *DMA_InitStruct);\r
220 void DMA_Cmd(FunctionalState NewState);\r
221 void DMA_ITMaskConfig(DMA_Channel_TypeDef * DMA_Channelx, u16 DMA_ITMask, FunctionalState NewState);\r
222 void DMA_ITConfig(DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState);\r
223 FlagStatus DMA_GetChannelStatus(u8 ChannelIndx );\r
224 ITStatus DMA_GetITStatus(u8 ChannelIndx,u8 DMA_ITReq);\r
225 void DMA_ClearIT(u8 ChannelIndx,u8 DMA_ITClr);\r
226 void DMA_SyncConfig(u16 DMA_SrcReq, FunctionalState NewState);\r
227 FlagStatus DMA_GetSReq(u16 DMA_SrcReq);\r
228 FlagStatus DMA_GetLSReq(u16 DMA_SrcReq);\r
229 FlagStatus DMA_GetBReq(u16 DMA_SrcReq);\r
230 FlagStatus DMA_GetLBReq(u16 DMA_SrcReq);\r
231 FlagStatus DMA_GetChannelActiveStatus( DMA_Channel_TypeDef * DMA_Channelx);\r
232 void DMA_SetSReq(u16 DMA_SrcReq);\r
233 void DMA_SetLSReq(u16 DMA_SrcReq);\r
234 void DMA_SetBReq(u16 DMA_SrcReq);\r
235 void DMA_SetLBReq(u16 DMA_SrcReq);\r
236 void DMA_ChannelCmd (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState);\r
237 void DMA_ChannelHalt (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState);\r
238 void DMA_ChannelBuffering (DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState);\r
239 void DMA_ChannelLockTrsf(DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState);\r
240 void DMA_ChannelCache(DMA_Channel_TypeDef * DMA_Channelx,FunctionalState NewState);\r
241 void DMA_ChannelProt0Mode(DMA_Channel_TypeDef * DMA_Channelx,u32 Prot0Mode);\r
242 void DMA_ChannelSRCIncConfig (DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState);\r
243 void DMA_ChannelDESIncConfig (DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState);\r
244 \r
245 #endif /* __91x_DMA_H */\r
246 \r
247 /******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/\r