1 //------------------------------------------------------------------------------
2 // Copyright 2012 (c) Silicon Laboratories Inc.
3 //
4 // SPDX-License-Identifier: Zlib
5 //
6 // This siHAL software is provided 'as-is', without any express or implied
7 // warranty. In no event will the authors be held liable for any damages
8 // arising from the use of this software.
9 //
10 // Permission is granted to anyone to use this software for any purpose,
11 // including commercial applications, and to alter it and redistribute it
12 // freely, subject to the following restrictions:
13 //
14 // 1. The origin of this software must not be misrepresented; you must not
15 //    claim that you wrote the original software. If you use this software
16 //    in a product, an acknowledgment in the product documentation would be
17 //    appreciated but is not required.
18 // 2. Altered source versions must be plainly marked as such, and must not be
19 //    misrepresented as being the original software.
20 // 3. This notice may not be removed or altered from any source distribution.
21 //------------------------------------------------------------------------------
22 //
23 // This file applies to the SIM3U1XX_DMAXBAR_A module
24 //
25 // Version: 1
26 
27 #ifndef __SI32_DMAXBAR_A_Support_Guard__
28 #define __SI32_DMAXBAR_A_Support_Guard__
29 
30 #include <stdint.h>
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 //-----------------------------------------------------------------------------
37 // Define the number of DMA channels.
38 
39 #define SI32_DMACTRL_NUM_CHANNELS   16
40 
41 //-----------------------------------------------------------------------------
42 // Define the DMA Crossbar Channel Select Enum Type
43 
44 typedef enum SI32_DMAXBAR_CHNSEL_Enum
45 {
46     SI32_DMAXBAR_CHAN0_USB0_EP4_OUT   = 0x00,
47     SI32_DMAXBAR_CHAN0_SPI1_RX        = 0x01,
48     SI32_DMAXBAR_CHAN0_USART0_RX      = 0x02,
49     SI32_DMAXBAR_CHAN0_I2C0_TX        = 0x03,
50     SI32_DMAXBAR_CHAN0_DMA0T0_RISE    = 0x04,
51     SI32_DMAXBAR_CHAN0_DMA0T0_FALL    = 0x05,
52     SI32_DMAXBAR_CHAN0_DMA0T1_RISE    = 0x06,
53     SI32_DMAXBAR_CHAN0_DMA0T1_FALL    = 0x07,
54     SI32_DMAXBAR_CHAN0_TIMER0L        = 0x08,
55     SI32_DMAXBAR_CHAN0_TIMER0H        = 0x09,
56     SI32_DMAXBAR_CHAN0_TIMER1L        = 0x0A,
57     SI32_DMAXBAR_CHAN0_TIMER1H        = 0x0B,
58     SI32_DMAXBAR_CHAN0_NONE           = 0x0F,
59 
60     SI32_DMAXBAR_CHAN1_USB0_EP3_OUT   = 0x10,
61     SI32_DMAXBAR_CHAN1_SPI0_RX        = 0x11,
62     SI32_DMAXBAR_CHAN1_USART1_RX      = 0x12,
63     SI32_DMAXBAR_CHAN1_I2C0_RX        = 0x13,
64     SI32_DMAXBAR_CHAN1_IDAC1          = 0x14,
65     SI32_DMAXBAR_CHAN1_EPCA0_CONTROL  = 0x15,
66     SI32_DMAXBAR_CHAN1_DMA0T0_RISE    = 0x16,
67     SI32_DMAXBAR_CHAN1_DMA0T0_FALL    = 0x17,
68     SI32_DMAXBAR_CHAN1_DMA0T1_RISE    = 0x18,
69     SI32_DMAXBAR_CHAN1_DMA0T1_FALL    = 0x19,
70     SI32_DMAXBAR_CHAN1_TIMER0L        = 0x1A,
71     SI32_DMAXBAR_CHAN1_TIMER1L        = 0x1B,
72     SI32_DMAXBAR_CHAN1_TIMER1H        = 0x1C,
73     SI32_DMAXBAR_CHAN1_NONE           = 0x1F,
74 
75     SI32_DMAXBAR_CHAN2_USB0_EP2_OUT   = 0x20,
76     SI32_DMAXBAR_CHAN2_SPI0_TX        = 0x21,
77     SI32_DMAXBAR_CHAN2_USART0_TX      = 0x22,
78     SI32_DMAXBAR_CHAN2_SARADC0        = 0x23,
79     SI32_DMAXBAR_CHAN2_IDAC1          = 0x24,
80     SI32_DMAXBAR_CHAN2_I2S0_TX        = 0x25,
81     SI32_DMAXBAR_CHAN2_EPCA0_CONTROL  = 0x26,
82     SI32_DMAXBAR_CHAN2_DMA0T0_RISE    = 0x27,
83     SI32_DMAXBAR_CHAN2_DMA0T0_FALL    = 0x28,
84     SI32_DMAXBAR_CHAN2_DMA0T1_RISE    = 0x29,
85     SI32_DMAXBAR_CHAN2_DMA0T1_FALL    = 0x2A,
86     SI32_DMAXBAR_CHAN2_NONE           = 0x2F,
87 
88     SI32_DMAXBAR_CHAN3_USB0_EP1_OUT   = 0x30,
89     SI32_DMAXBAR_CHAN3_SARADC1        = 0x31,
90     SI32_DMAXBAR_CHAN3_IDAC0          = 0x32,
91     SI32_DMAXBAR_CHAN3_I2S0_TX        = 0x33,
92     SI32_DMAXBAR_CHAN3_EPCA0_CAPTURE  = 0x34,
93     SI32_DMAXBAR_CHAN3_DMA0T0_RISE    = 0x35,
94     SI32_DMAXBAR_CHAN3_DMA0T0_FALL    = 0x36,
95     SI32_DMAXBAR_CHAN3_DMA0T1_RISE    = 0x37,
96     SI32_DMAXBAR_CHAN3_DMA0T1_FALL    = 0x38,
97     SI32_DMAXBAR_CHAN3_TIMER1H        = 0x39,
98     SI32_DMAXBAR_CHAN3_NONE           = 0x3F,
99 
100     SI32_DMAXBAR_CHAN4_USB0_EP4_IN    = 0x40,
101     SI32_DMAXBAR_CHAN4_SPI1_TX        = 0x41,
102     SI32_DMAXBAR_CHAN4_USART0_TX      = 0x42,
103     SI32_DMAXBAR_CHAN4_SARADC0        = 0x43,
104     SI32_DMAXBAR_CHAN4_I2S0_RX        = 0x44,
105     SI32_DMAXBAR_CHAN4_EPCA0_CAPTURE  = 0x45,
106     SI32_DMAXBAR_CHAN4_DMA0T0_RISE    = 0x46,
107     SI32_DMAXBAR_CHAN4_DMA0T0_FALL    = 0x47,
108     SI32_DMAXBAR_CHAN4_DMA0T1_RISE    = 0x48,
109     SI32_DMAXBAR_CHAN4_DMA0T1_FALL    = 0x49,
110     SI32_DMAXBAR_CHAN4_TIMER0H        = 0x4A,
111     SI32_DMAXBAR_CHAN4_NONE           = 0x4F,
112 
113     SI32_DMAXBAR_CHAN5_USB0_EP3_IN    = 0x50,
114     SI32_DMAXBAR_CHAN5_AES0_TX        = 0x51,
115     SI32_DMAXBAR_CHAN5_USART1_TX      = 0x52,
116     SI32_DMAXBAR_CHAN5_SARADC0        = 0x53,
117     SI32_DMAXBAR_CHAN5_I2S0_RX        = 0x54,
118     SI32_DMAXBAR_CHAN5_DMA0T0_RISE    = 0x55,
119     SI32_DMAXBAR_CHAN5_DMA0T0_FALL    = 0x56,
120     SI32_DMAXBAR_CHAN5_DMA0T1_RISE    = 0x57,
121     SI32_DMAXBAR_CHAN5_DMA0T1_FALL    = 0x58,
122     SI32_DMAXBAR_CHAN5_NONE           = 0x5F,
123 
124     SI32_DMAXBAR_CHAN6_USB0_EP2_IN    = 0x60,
125     SI32_DMAXBAR_CHAN6_AES0_RX        = 0x61,
126     SI32_DMAXBAR_CHAN6_USART0_RX      = 0x62,
127     SI32_DMAXBAR_CHAN6_I2C0_RX        = 0x63,
128     SI32_DMAXBAR_CHAN6_IDAC0          = 0x64,
129     SI32_DMAXBAR_CHAN6_DMA0T0_RISE    = 0x65,
130     SI32_DMAXBAR_CHAN6_DMA0T0_FALL    = 0x66,
131     SI32_DMAXBAR_CHAN6_DMA0T1_RISE    = 0x67,
132     SI32_DMAXBAR_CHAN6_DMA0T1_FALL    = 0x68,
133     SI32_DMAXBAR_CHAN6_TIMER0H        = 0x69,
134     SI32_DMAXBAR_CHAN6_NONE           = 0x6F,
135 
136     SI32_DMAXBAR_CHAN7_USB0_EP1_IN    = 0x70,
137     SI32_DMAXBAR_CHAN7_AES0_XOR       = 0x71,
138     SI32_DMAXBAR_CHAN7_SPI1_TX        = 0x72,
139     SI32_DMAXBAR_CHAN7_USART0_TX      = 0x73,
140     SI32_DMAXBAR_CHAN7_DMA0T0_RISE    = 0x74,
141     SI32_DMAXBAR_CHAN7_DMA0T0_FALL    = 0x75,
142     SI32_DMAXBAR_CHAN7_DMA0T1_RISE    = 0x76,
143     SI32_DMAXBAR_CHAN7_DMA0T1_FALL    = 0x77,
144     SI32_DMAXBAR_CHAN7_TIMER0L        = 0x78,
145     SI32_DMAXBAR_CHAN7_TIMER1L        = 0x79,
146     SI32_DMAXBAR_CHAN7_TIMER1H        = 0x7A,
147     SI32_DMAXBAR_CHAN7_NONE           = 0x7F,
148 
149     SI32_DMAXBAR_CHAN8_USB0_EP4_OUT   = 0x80,
150     SI32_DMAXBAR_CHAN8_USART1_RX      = 0x81,
151     SI32_DMAXBAR_CHAN8_SPI1_RX        = 0x82,
152     SI32_DMAXBAR_CHAN8_USART0_RX      = 0x83,
153     SI32_DMAXBAR_CHAN8_EPCA0_CAPTURE  = 0x84,
154     SI32_DMAXBAR_CHAN8_DMA0T0_RISE    = 0x85,
155     SI32_DMAXBAR_CHAN8_DMA0T0_FALL    = 0x86,
156     SI32_DMAXBAR_CHAN8_DMA0T1_RISE    = 0x87,
157     SI32_DMAXBAR_CHAN8_DMA0T1_FALL    = 0x88,
158     SI32_DMAXBAR_CHAN8_NONE           = 0x8F,
159 
160     SI32_DMAXBAR_CHAN9_USB0_EP3_OUT   = 0x90,
161     SI32_DMAXBAR_CHAN9_USART1_TX      = 0x91,
162     SI32_DMAXBAR_CHAN9_I2C0_TX        = 0x92,
163     SI32_DMAXBAR_CHAN9_EPCA0_CAPTURE  = 0x93,
164     SI32_DMAXBAR_CHAN9_DMA0T0_RISE    = 0x94,
165     SI32_DMAXBAR_CHAN9_DMA0T0_FALL    = 0x95,
166     SI32_DMAXBAR_CHAN9_DMA0T1_RISE    = 0x96,
167     SI32_DMAXBAR_CHAN9_DMA0T1_FALL    = 0x97,
168     SI32_DMAXBAR_CHAN9_TIMER0H        = 0x98,
169     SI32_DMAXBAR_CHAN9_NONE           = 0x9F,
170 
171     SI32_DMAXBAR_CHAN10_USB0_EP2_OUT  = 0xA0,
172     SI32_DMAXBAR_CHAN10_AES0_TX       = 0xA1,
173     SI32_DMAXBAR_CHAN10_SARADC1       = 0xA2,
174     SI32_DMAXBAR_CHAN10_I2S0_RX       = 0xA3,
175     SI32_DMAXBAR_CHAN10_DMA0T0_RISE   = 0xA4,
176     SI32_DMAXBAR_CHAN10_DMA0T0_FALL   = 0xA5,
177     SI32_DMAXBAR_CHAN10_DMA0T1_RISE   = 0xA6,
178     SI32_DMAXBAR_CHAN10_DMA0T1_FALL   = 0xA7,
179     SI32_DMAXBAR_CHAN10_TIMER1H       = 0xA8,
180     SI32_DMAXBAR_CHAN10_NONE          = 0xAF,
181 
182     SI32_DMAXBAR_CHAN11_USB0_EP1_OUT  = 0xB0,
183     SI32_DMAXBAR_CHAN11_AES0_RX       = 0xB1,
184     SI32_DMAXBAR_CHAN11_USART1_RX     = 0xB2,
185     SI32_DMAXBAR_CHAN11_USART0_RX     = 0xB3,
186     SI32_DMAXBAR_CHAN11_I2C0_RX       = 0xB4,
187     SI32_DMAXBAR_CHAN11_I2S0_RX       = 0xB5,
188     SI32_DMAXBAR_CHAN11_DMA0T0_RISE   = 0xB6,
189     SI32_DMAXBAR_CHAN11_DMA0T0_FALL   = 0xB7,
190     SI32_DMAXBAR_CHAN11_DMA0T1_RISE   = 0xB8,
191     SI32_DMAXBAR_CHAN11_DMA0T1_FALL   = 0xB9,
192     SI32_DMAXBAR_CHAN11_TIMER0H       = 0xBA,
193     SI32_DMAXBAR_CHAN11_NONE          = 0xBF,
194 
195     SI32_DMAXBAR_CHAN12_USB0_EP4_IN   = 0xC0,
196     SI32_DMAXBAR_CHAN12_AES0_XOR      = 0xC1,
197     SI32_DMAXBAR_CHAN12_USART1_TX     = 0xC2,
198     SI32_DMAXBAR_CHAN12_SPI1_TX       = 0xC3,
199     SI32_DMAXBAR_CHAN12_IDAC1         = 0xC4,
200     SI32_DMAXBAR_CHAN12_I2S0_TX       = 0xC5,
201     SI32_DMAXBAR_CHAN12_DMA0T0_RISE   = 0xC6,
202     SI32_DMAXBAR_CHAN12_DMA0T0_FALL   = 0xC7,
203     SI32_DMAXBAR_CHAN12_DMA0T1_RISE   = 0xC8,
204     SI32_DMAXBAR_CHAN12_DMA0T1_FALL   = 0xC9,
205     SI32_DMAXBAR_CHAN12_TIMER0L       = 0xCA,
206     SI32_DMAXBAR_CHAN12_TIMER1L       = 0xCB,
207     SI32_DMAXBAR_CHAN12_TIMER1H       = 0xCC,
208     SI32_DMAXBAR_CHAN12_NONE          = 0xCF,
209 
210     SI32_DMAXBAR_CHAN13_USB0_EP3_IN   = 0xD0,
211     SI32_DMAXBAR_CHAN13_SPI0_RX       = 0xD1,
212     SI32_DMAXBAR_CHAN13_USART0_RX     = 0xD2,
213     SI32_DMAXBAR_CHAN13_IDAC1         = 0xD3,
214     SI32_DMAXBAR_CHAN13_I2S0_TX       = 0xD4,
215     SI32_DMAXBAR_CHAN13_DMA0T0_RISE   = 0xD5,
216     SI32_DMAXBAR_CHAN13_DMA0T0_FALL   = 0xD6,
217     SI32_DMAXBAR_CHAN13_DMA0T1_RISE   = 0xD7,
218     SI32_DMAXBAR_CHAN13_DMA0T1_FALL   = 0xD8,
219     SI32_DMAXBAR_CHAN13_TIMER0H       = 0xD9,
220     SI32_DMAXBAR_CHAN13_NONE          = 0xDF,
221 
222     SI32_DMAXBAR_CHAN14_USB0_EP2_IN   = 0xE0,
223     SI32_DMAXBAR_CHAN14_SPI0_TX       = 0xE1,
224     SI32_DMAXBAR_CHAN14_USART0_TX     = 0xE2,
225     SI32_DMAXBAR_CHAN14_IDAC0         = 0xE3,
226     SI32_DMAXBAR_CHAN14_EPCA0_CONTROL = 0xE4,
227     SI32_DMAXBAR_CHAN14_DMA0T0_RISE   = 0xE5,
228     SI32_DMAXBAR_CHAN14_DMA0T0_FALL   = 0xE6,
229     SI32_DMAXBAR_CHAN14_DMA0T1_RISE   = 0xE7,
230     SI32_DMAXBAR_CHAN14_DMA0T1_FALL   = 0xE8,
231     SI32_DMAXBAR_CHAN14_TIMER0L       = 0xE9,
232     SI32_DMAXBAR_CHAN14_TIMER1L       = 0xEA,
233     SI32_DMAXBAR_CHAN14_NONE          = 0xEF,
234 
235     SI32_DMAXBAR_CHAN15_USB0_EP1_IN   = 0xF0,
236     SI32_DMAXBAR_CHAN15_SARADC1       = 0xF1,
237     SI32_DMAXBAR_CHAN15_IDAC0         = 0xF2,
238     SI32_DMAXBAR_CHAN15_EPCA0_CONTROL = 0xF3,
239     SI32_DMAXBAR_CHAN15_DMA0T0_RISE   = 0xF4,
240     SI32_DMAXBAR_CHAN15_DMA0T0_FALL   = 0xF5,
241     SI32_DMAXBAR_CHAN15_DMA0T1_RISE   = 0xF6,
242     SI32_DMAXBAR_CHAN15_DMA0T1_FALL   = 0xF7,
243     SI32_DMAXBAR_CHAN15_TIMER0H       = 0xF8,
244     SI32_DMAXBAR_CHAN15_TIMER1H       = 0xF9,
245     SI32_DMAXBAR_CHAN15_NONE          = 0xFF
246 }
247 SI32_DMAXBAR_CHNSEL_Enum_Type;
248 
249 // Extracts DMA channel number from SI32_DMAXBAR_CHNSEL_Enum_Type
250 #define SI32_DMAXBAR_CHANNEL_OF(chsel)  (((chsel) & 0xF0) >> 4)
251 
252 //-----------------------------------------------------------------------------
253 // Define the DMA Endpoints
254 
255 #define  SI32_SARADC_0_RX_ENDPOINT      &SI32_SARADC_0->DATA.U32
256 #define  SI32_SARADC_1_RX_ENDPOINT      &SI32_SARADC_1->DATA.U32
257 #define  SI32_AES_0_TX_ENDPOINT         &SI32_AES_0->DATAFIFO.U32
258 #define  SI32_AES_0_RX_ENDPOINT         &SI32_AES_0->DATAFIFO.U32
259 #define  SI32_AES_0_XOR_ENDPOINT        &SI32_AES_0->XORFIFO.U32
260 #define  SI32_EPCA_0_CH0_RX_ENDPOINT    &SI32_EPCA_0_CH0->CCAPV.U32
261 #define  SI32_EPCA_0_CH1_RX_ENDPOINT    &SI32_EPCA_0_CH1->CCAPV.U32
262 #define  SI32_EPCA_0_CH2_RX_ENDPOINT    &SI32_EPCA_0_CH2->CCAPV.U32
263 #define  SI32_EPCA_0_CH3_RX_ENDPOINT    &SI32_EPCA_0_CH3->CCAPV.U32
264 #define  SI32_EPCA_0_CH4_RX_ENDPOINT    &SI32_EPCA_0_CH4->CCAPV.U32
265 #define  SI32_EPCA_0_CH5_RX_ENDPOINT    &SI32_EPCA_0_CH5->CCAPV.U32
266 #define  SI32_EPCA_0_TX_ENDPOINT        &SI32_EPCA_0->DTARGET.U32
267 #define  SI32_EPCA_0_CH0_TX_ENDPOINT    &SI32_EPCA_0_CH0->CCAPVUPD.U32
268 #define  SI32_EPCA_0_CH1_TX_ENDPOINT    &SI32_EPCA_0_CH1->CCAPVUPD.U32
269 #define  SI32_EPCA_0_CH2_TX_ENDPOINT    &SI32_EPCA_0_CH2->CCAPVUPD.U32
270 #define  SI32_EPCA_0_CH3_TX_ENDPOINT    &SI32_EPCA_0_CH3->CCAPVUPD.U32
271 #define  SI32_EPCA_0_CH4_TX_ENDPOINT    &SI32_EPCA_0_CH4->CCAPVUPD.U32
272 #define  SI32_EPCA_0_CH5_TX_ENDPOINT    &SI32_EPCA_0_CH5->CCAPVUPD.U32
273 #define  SI32_I2C_0_RX_ENDPOINT         &SI32_I2C_0->DATA.U32
274 #define  SI32_I2C_0_TX_ENDPOINT         &SI32_I2C_0->DATA.U32
275 #define  SI32_I2S_0_RX_ENDPOINT         &SI32_I2S_0->RXFIFO.U32
276 #define  SI32_I2S_0_TX_ENDPOINT         &SI32_I2S_0->TXFIFO.U32
277 #define  SI32_IDAC_0_TX_ENDPOINT        &SI32_IDAC_0->DATA.U32
278 #define  SI32_IDAC_1_TX_ENDPOINT        &SI32_IDAC_1->DATA.U32
279 #define  SI32_SPI_0_RX_ENDPOINT         &SI32_SPI_0->DATA.U32
280 #define  SI32_SPI_0_TX_ENDPOINT         &SI32_SPI_0->DATA.U32
281 #define  SI32_SPI_1_RX_ENDPOINT         &SI32_SPI_1->DATA.U32
282 #define  SI32_SPI_1_TX_ENDPOINT         &SI32_SPI_1->DATA.U32
283 #define  SI32_USART_0_RX_ENDPOINT       &SI32_USART_0->DATA.U32
284 #define  SI32_USART_0_TX_ENDPOINT       &SI32_USART_0->DATA.U32
285 #define  SI32_USART_1_RX_ENDPOINT       &SI32_USART_1->DATA.U32
286 #define  SI32_USART_1_TX_ENDPOINT       &SI32_USART_1->DATA.U32
287 #define  SI32_USB_0_EP1_IN_ENDPOINT     &SI32_USB_0_EP1->EPFIFO.U32
288 #define  SI32_USB_0_EP1_OUT_ENDPOINT    &SI32_USB_0_EP1->EPFIFO.U32
289 #define  SI32_USB_0_EP2_IN_ENDPOINT     &SI32_USB_0_EP2->EPFIFO.U32
290 #define  SI32_USB_0_EP2_OUT_ENDPOINT    &SI32_USB_0_EP2->EPFIFO.U32
291 #define  SI32_USB_0_EP3_IN_ENDPOINT     &SI32_USB_0_EP3->EPFIFO.U32
292 #define  SI32_USB_0_EP3_OUT_ENDPOINT    &SI32_USB_0_EP3->EPFIFO.U32
293 #define  SI32_USB_0_EP4_IN_ENDPOINT     &SI32_USB_0_EP4->EPFIFO.U32
294 #define  SI32_USB_0_EP4_OUT_ENDPOINT    &SI32_USB_0_EP4->EPFIFO.U32
295 
296 #ifdef __cplusplus
297 }
298 #endif
299 
300 #endif // __SI32_DMAXBAR_A_Support_Guard__
301 
302 //-eof--------------------------------------------------------------------------
303