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 // Script: 0.56
24 // Version: 1
25 
26 #ifndef __SI32_DMADESC_A_REGISTERS_H__
27 #define __SI32_DMADESC_A_REGISTERS_H__
28 
29 #include <stdint.h>
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 struct SI32_DMADESC_A_SRCEND_Struct
36 {
37    union
38    {
39       struct
40       {
41          // Source End Pointer
42          volatile uint32_t SRCEND_BITS;
43       };
44       volatile uint32_t U32;
45    };
46 };
47 
48 #define SI32_DMADESC_A_SRCEND_SRCEND_MASK  0xFFFFFFFF
49 #define SI32_DMADESC_A_SRCEND_SRCEND_SHIFT  0
50 
51 
52 
53 struct SI32_DMADESC_A_DSTEND_Struct
54 {
55    union
56    {
57       struct
58       {
59          // Destination End Pointer
60          volatile uint32_t DSTEND_BITS;
61       };
62       volatile uint32_t U32;
63    };
64 };
65 
66 #define SI32_DMADESC_A_DSTEND_DSTEND_MASK  0xFFFFFFFF
67 #define SI32_DMADESC_A_DSTEND_DSTEND_SHIFT  0
68 
69 
70 
71 struct SI32_DMADESC_A_CONFIG_Struct
72 {
73    union
74    {
75       struct
76       {
77          // Transfer Mode
78          volatile uint32_t TMD: 3;
79                   uint32_t reserved0: 1;
80          // Transfer Total
81          volatile uint32_t NCOUNT: 10;
82          // Transfer Size Select
83          volatile uint32_t RPOWER: 4;
84                   uint32_t reserved1: 6;
85          // Source Data Size Select
86          volatile uint32_t SRCSIZE: 2;
87          // Source Address Increment Mode
88          volatile uint32_t SRCAIMD: 2;
89          // Destination Data Size Select
90          volatile uint32_t DSTSIZE: 2;
91          // Destination Address Increment Mode
92          volatile uint32_t DSTAIMD: 2;
93       };
94       volatile uint32_t U32;
95    };
96 };
97 
98 #define SI32_DMADESC_A_CONFIG_TMD_MASK  0x00000007
99 #define SI32_DMADESC_A_CONFIG_TMD_SHIFT  0
100 // Stop the DMA channel.
101 #define SI32_DMADESC_A_CONFIG_TMD_STOP_VALUE  0
102 #define SI32_DMADESC_A_CONFIG_TMD_STOP_U32 \
103    (SI32_DMADESC_A_CONFIG_TMD_STOP_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
104 // Use the Basic transfer type (single structure only).
105 #define SI32_DMADESC_A_CONFIG_TMD_BASIC_VALUE  1
106 #define SI32_DMADESC_A_CONFIG_TMD_BASIC_U32 \
107    (SI32_DMADESC_A_CONFIG_TMD_BASIC_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
108 // Use the Auto-Request transfer type (single structure only).
109 #define SI32_DMADESC_A_CONFIG_TMD_AUTO_REQUEST_VALUE  2
110 #define SI32_DMADESC_A_CONFIG_TMD_AUTO_REQUEST_U32 \
111    (SI32_DMADESC_A_CONFIG_TMD_AUTO_REQUEST_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
112 // Use the Ping-Pong transfer type (primary and alternate structures).
113 #define SI32_DMADESC_A_CONFIG_TMD_PING_PONG_VALUE  3
114 #define SI32_DMADESC_A_CONFIG_TMD_PING_PONG_U32 \
115    (SI32_DMADESC_A_CONFIG_TMD_PING_PONG_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
116 // Use the Memory Scatter-Gather Primary transfer type (primary, alternate, and
117 // scattered structures).
118 #define SI32_DMADESC_A_CONFIG_TMD_MEMORY_SCATTER_GATHER_P_VALUE  4
119 #define SI32_DMADESC_A_CONFIG_TMD_MEMORY_SCATTER_GATHER_P_U32 \
120    (SI32_DMADESC_A_CONFIG_TMD_MEMORY_SCATTER_GATHER_P_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
121 // Use the Memory Scatter-Gather Alternate transfer type (primary, alternate, and
122 // scattered structures).
123 #define SI32_DMADESC_A_CONFIG_TMD_MEMORY_SCATTER_GATHER_A_VALUE  5
124 #define SI32_DMADESC_A_CONFIG_TMD_MEMORY_SCATTER_GATHER_A_U32 \
125    (SI32_DMADESC_A_CONFIG_TMD_MEMORY_SCATTER_GATHER_A_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
126 // Use the Peripheral Scatter-Gather Primary transfer type (primary, alternate, and
127 // scattered structures).
128 #define SI32_DMADESC_A_CONFIG_TMD_PERIPHERAL_SCATTER_GATHER_P_VALUE  6
129 #define SI32_DMADESC_A_CONFIG_TMD_PERIPHERAL_SCATTER_GATHER_P_U32 \
130    (SI32_DMADESC_A_CONFIG_TMD_PERIPHERAL_SCATTER_GATHER_P_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
131 // Use the Peripheral Scatter-Gather Alternate transfer type (primary, alternate,
132 // and scattered structures).
133 #define SI32_DMADESC_A_CONFIG_TMD_PERIPHERAL_SCATTER_GATHER_A_VALUE  7
134 #define SI32_DMADESC_A_CONFIG_TMD_PERIPHERAL_SCATTER_GATHER_A_U32 \
135    (SI32_DMADESC_A_CONFIG_TMD_PERIPHERAL_SCATTER_GATHER_A_VALUE << SI32_DMADESC_A_CONFIG_TMD_SHIFT)
136 
137 #define SI32_DMADESC_A_CONFIG_NCOUNT_MASK  0x00003FF0
138 #define SI32_DMADESC_A_CONFIG_NCOUNT_SHIFT  4
139 
140 #define SI32_DMADESC_A_CONFIG_RPOWER_MASK  0x0003C000
141 #define SI32_DMADESC_A_CONFIG_RPOWER_SHIFT  14
142 
143 #define SI32_DMADESC_A_CONFIG_SRCSIZE_MASK  0x03000000
144 #define SI32_DMADESC_A_CONFIG_SRCSIZE_SHIFT  24
145 // Each DMA source data transfer reads a byte.
146 #define SI32_DMADESC_A_CONFIG_SRCSIZE_BYTE_VALUE  0
147 #define SI32_DMADESC_A_CONFIG_SRCSIZE_BYTE_U32 \
148    (SI32_DMADESC_A_CONFIG_SRCSIZE_BYTE_VALUE << SI32_DMADESC_A_CONFIG_SRCSIZE_SHIFT)
149 // Each DMA source data transfer reads a half-word.
150 #define SI32_DMADESC_A_CONFIG_SRCSIZE_HALF_WORD_VALUE  1
151 #define SI32_DMADESC_A_CONFIG_SRCSIZE_HALF_WORD_U32 \
152    (SI32_DMADESC_A_CONFIG_SRCSIZE_HALF_WORD_VALUE << SI32_DMADESC_A_CONFIG_SRCSIZE_SHIFT)
153 // Each DMA source data transfer reads a word.
154 #define SI32_DMADESC_A_CONFIG_SRCSIZE_WORD_VALUE  2
155 #define SI32_DMADESC_A_CONFIG_SRCSIZE_WORD_U32 \
156    (SI32_DMADESC_A_CONFIG_SRCSIZE_WORD_VALUE << SI32_DMADESC_A_CONFIG_SRCSIZE_SHIFT)
157 
158 #define SI32_DMADESC_A_CONFIG_SRCAIMD_MASK  0x0C000000
159 #define SI32_DMADESC_A_CONFIG_SRCAIMD_SHIFT  26
160 // The source address increments by one byte after each data transfer.
161 #define SI32_DMADESC_A_CONFIG_SRCAIMD_BYTE_VALUE  0
162 #define SI32_DMADESC_A_CONFIG_SRCAIMD_BYTE_U32 \
163    (SI32_DMADESC_A_CONFIG_SRCAIMD_BYTE_VALUE << SI32_DMADESC_A_CONFIG_SRCAIMD_SHIFT)
164 // The source address increments by one half-word after each data transfer.
165 #define SI32_DMADESC_A_CONFIG_SRCAIMD_HALF_WORD_VALUE  1
166 #define SI32_DMADESC_A_CONFIG_SRCAIMD_HALF_WORD_U32 \
167    (SI32_DMADESC_A_CONFIG_SRCAIMD_HALF_WORD_VALUE << SI32_DMADESC_A_CONFIG_SRCAIMD_SHIFT)
168 // The source address increments by one word after each data transfer.
169 #define SI32_DMADESC_A_CONFIG_SRCAIMD_WORD_VALUE  2
170 #define SI32_DMADESC_A_CONFIG_SRCAIMD_WORD_U32 \
171    (SI32_DMADESC_A_CONFIG_SRCAIMD_WORD_VALUE << SI32_DMADESC_A_CONFIG_SRCAIMD_SHIFT)
172 // The source address does not increment.
173 #define SI32_DMADESC_A_CONFIG_SRCAIMD_NO_INCREMENT_VALUE  3
174 #define SI32_DMADESC_A_CONFIG_SRCAIMD_NO_INCREMENT_U32 \
175    (SI32_DMADESC_A_CONFIG_SRCAIMD_NO_INCREMENT_VALUE << SI32_DMADESC_A_CONFIG_SRCAIMD_SHIFT)
176 
177 #define SI32_DMADESC_A_CONFIG_DSTSIZE_MASK  0x30000000
178 #define SI32_DMADESC_A_CONFIG_DSTSIZE_SHIFT  28
179 // Each DMA destination data transfer writes a byte.
180 #define SI32_DMADESC_A_CONFIG_DSTSIZE_BYTE_VALUE  0
181 #define SI32_DMADESC_A_CONFIG_DSTSIZE_BYTE_U32 \
182    (SI32_DMADESC_A_CONFIG_DSTSIZE_BYTE_VALUE << SI32_DMADESC_A_CONFIG_DSTSIZE_SHIFT)
183 // Each DMA destination data transfer writes a half-word.
184 #define SI32_DMADESC_A_CONFIG_DSTSIZE_HALF_WORD_VALUE  1
185 #define SI32_DMADESC_A_CONFIG_DSTSIZE_HALF_WORD_U32 \
186    (SI32_DMADESC_A_CONFIG_DSTSIZE_HALF_WORD_VALUE << SI32_DMADESC_A_CONFIG_DSTSIZE_SHIFT)
187 // Each DMA destination data transfer writes a word.
188 #define SI32_DMADESC_A_CONFIG_DSTSIZE_WORD_VALUE  2
189 #define SI32_DMADESC_A_CONFIG_DSTSIZE_WORD_U32 \
190    (SI32_DMADESC_A_CONFIG_DSTSIZE_WORD_VALUE << SI32_DMADESC_A_CONFIG_DSTSIZE_SHIFT)
191 
192 #define SI32_DMADESC_A_CONFIG_DSTAIMD_MASK  0xC0000000
193 #define SI32_DMADESC_A_CONFIG_DSTAIMD_SHIFT  30
194 // The destination address increments by one byte after each data transfer.
195 #define SI32_DMADESC_A_CONFIG_DSTAIMD_BYTE_VALUE  0U
196 #define SI32_DMADESC_A_CONFIG_DSTAIMD_BYTE_U32 \
197    (SI32_DMADESC_A_CONFIG_DSTAIMD_BYTE_VALUE << SI32_DMADESC_A_CONFIG_DSTAIMD_SHIFT)
198 // The destination address increments by one half-word after each data transfer.
199 #define SI32_DMADESC_A_CONFIG_DSTAIMD_HALF_WORD_VALUE  1U
200 #define SI32_DMADESC_A_CONFIG_DSTAIMD_HALF_WORD_U32 \
201    (SI32_DMADESC_A_CONFIG_DSTAIMD_HALF_WORD_VALUE << SI32_DMADESC_A_CONFIG_DSTAIMD_SHIFT)
202 // The destination address increments by one word after each data transfer.
203 #define SI32_DMADESC_A_CONFIG_DSTAIMD_WORD_VALUE  2U
204 #define SI32_DMADESC_A_CONFIG_DSTAIMD_WORD_U32 \
205    (SI32_DMADESC_A_CONFIG_DSTAIMD_WORD_VALUE << SI32_DMADESC_A_CONFIG_DSTAIMD_SHIFT)
206 // The destination address does not increment.
207 #define SI32_DMADESC_A_CONFIG_DSTAIMD_NO_INCREMENT_VALUE  3U
208 #define SI32_DMADESC_A_CONFIG_DSTAIMD_NO_INCREMENT_U32 \
209    (SI32_DMADESC_A_CONFIG_DSTAIMD_NO_INCREMENT_VALUE << SI32_DMADESC_A_CONFIG_DSTAIMD_SHIFT)
210 
211 
212 
213 typedef struct SI32_DMADESC_A_Struct
214 {
215    struct SI32_DMADESC_A_SRCEND_Struct             SRCEND         ; // Base Address + 0x0
216    struct SI32_DMADESC_A_DSTEND_Struct             DSTEND         ; // Base Address + 0x4
217    struct SI32_DMADESC_A_CONFIG_Struct             CONFIG         ; // Base Address + 0x8
218    uint32_t                                        reserved0;
219 } SI32_DMADESC_A_Type;
220 
221 #ifdef __cplusplus
222 }
223 #endif
224 
225 #endif // __SI32_DMADESC_A_REGISTERS_H__
226 
227 //-eof--------------------------------------------------------------------------
228 
229