Pavona Software APIs
dma_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for dma
4 */
5
6// Copyright information found in source file:
7// Copyright lowRISC contributors (OpenTitan project).
8
9// Licensing information found in source file:
10// Licensed under the Apache License, Version 2.0, see LICENSE for details.
11// SPDX-License-Identifier: Apache-2.0
12
13#ifndef _DMA_REG_DEFS_
14#define _DMA_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number of interrupt clearing sources to process
20#define DMA_PARAM_NUM_INT_CLEAR_SOURCES 11
21
22// Number of alerts
23#define DMA_PARAM_NUM_ALERTS 1
24
25// Register width
26#define DMA_PARAM_REG_WIDTH 32
27
28// Common Interrupt Offsets
29#define DMA_INTR_COMMON_DMA_DONE_BIT 0
30#define DMA_INTR_COMMON_DMA_CHUNK_DONE_BIT 1
31#define DMA_INTR_COMMON_DMA_ERROR_BIT 2
32
33// Interrupt State Register
34#define DMA_INTR_STATE_REG_OFFSET 0x0
35#define DMA_INTR_STATE_REG_RESVAL 0x0u
36#define DMA_INTR_STATE_DMA_DONE_BIT 0
37#define DMA_INTR_STATE_DMA_CHUNK_DONE_BIT 1
38#define DMA_INTR_STATE_DMA_ERROR_BIT 2
39
40// Interrupt Enable Register
41#define DMA_INTR_ENABLE_REG_OFFSET 0x4
42#define DMA_INTR_ENABLE_REG_RESVAL 0x0u
43#define DMA_INTR_ENABLE_DMA_DONE_BIT 0
44#define DMA_INTR_ENABLE_DMA_CHUNK_DONE_BIT 1
45#define DMA_INTR_ENABLE_DMA_ERROR_BIT 2
46
47// Interrupt Test Register
48#define DMA_INTR_TEST_REG_OFFSET 0x8
49#define DMA_INTR_TEST_REG_RESVAL 0x0u
50#define DMA_INTR_TEST_DMA_DONE_BIT 0
51#define DMA_INTR_TEST_DMA_CHUNK_DONE_BIT 1
52#define DMA_INTR_TEST_DMA_ERROR_BIT 2
53
54// Alert Test Register
55#define DMA_ALERT_TEST_REG_OFFSET 0xc
56#define DMA_ALERT_TEST_REG_RESVAL 0x0u
57#define DMA_ALERT_TEST_FATAL_FAULT_BIT 0
58
59// Lower 32 bits of the physical or virtual address of memory location within
60// SoC memory address map or physical address within non-secure memory space.
61#define DMA_SRC_ADDR_LO_REG_OFFSET 0x10
62#define DMA_SRC_ADDR_LO_REG_RESVAL 0x0u
63
64// Upper 32 bits of the source address.
65#define DMA_SRC_ADDR_HI_REG_OFFSET 0x14
66#define DMA_SRC_ADDR_HI_REG_RESVAL 0x0u
67
68// Lower 32 bits of the physical or virtual address of memory location within
69// SoC memory address map or physical address within non-secure memory space.
70#define DMA_DST_ADDR_LO_REG_OFFSET 0x18
71#define DMA_DST_ADDR_LO_REG_RESVAL 0x0u
72
73// Upper 32 bits of the destination address.
74#define DMA_DST_ADDR_HI_REG_OFFSET 0x1c
75#define DMA_DST_ADDR_HI_REG_RESVAL 0x0u
76
77// Address spaces that source and destination pointers refer to.
78#define DMA_ADDR_SPACE_ID_REG_OFFSET 0x20
79#define DMA_ADDR_SPACE_ID_REG_RESVAL 0x77u
80#define DMA_ADDR_SPACE_ID_SRC_ASID_MASK 0xfu
81#define DMA_ADDR_SPACE_ID_SRC_ASID_OFFSET 0
82#define DMA_ADDR_SPACE_ID_SRC_ASID_FIELD \
83 ((bitfield_field32_t) { .mask = DMA_ADDR_SPACE_ID_SRC_ASID_MASK, .index = DMA_ADDR_SPACE_ID_SRC_ASID_OFFSET })
84#define DMA_ADDR_SPACE_ID_SRC_ASID_VALUE_OT_ADDR 0x7
85#define DMA_ADDR_SPACE_ID_SRC_ASID_VALUE_SOC_ADDR 0xa
86#define DMA_ADDR_SPACE_ID_SRC_ASID_VALUE_SYS_ADDR 0x9
87#define DMA_ADDR_SPACE_ID_DST_ASID_MASK 0xfu
88#define DMA_ADDR_SPACE_ID_DST_ASID_OFFSET 4
89#define DMA_ADDR_SPACE_ID_DST_ASID_FIELD \
90 ((bitfield_field32_t) { .mask = DMA_ADDR_SPACE_ID_DST_ASID_MASK, .index = DMA_ADDR_SPACE_ID_DST_ASID_OFFSET })
91#define DMA_ADDR_SPACE_ID_DST_ASID_VALUE_OT_ADDR 0x7
92#define DMA_ADDR_SPACE_ID_DST_ASID_VALUE_SOC_ADDR 0xa
93#define DMA_ADDR_SPACE_ID_DST_ASID_VALUE_SYS_ADDR 0x9
94
95// Base Address to mark the start of the DMA enabled memory range within the
96// secure internal memory space.
97#define DMA_ENABLED_MEMORY_RANGE_BASE_REG_OFFSET 0x24
98#define DMA_ENABLED_MEMORY_RANGE_BASE_REG_RESVAL 0x0u
99
100// Limit Address to mark the end of the DMA enabled memory range within the
101// secure internal memory space; address is inclusive.
102#define DMA_ENABLED_MEMORY_RANGE_LIMIT_REG_OFFSET 0x28
103#define DMA_ENABLED_MEMORY_RANGE_LIMIT_REG_RESVAL 0x0u
104
105// Indicates that the ENABLED_MEMORY_RANGE_BASE and _LIMIT registers have
106// been programmed to restrict DMA accesses within the secure internal
107// address space.
108#define DMA_RANGE_VALID_REG_OFFSET 0x2c
109#define DMA_RANGE_VALID_REG_RESVAL 0x0u
110#define DMA_RANGE_VALID_RANGE_VALID_BIT 0
111
112// Used to lock the DMA enabled memory range configuration registers.
113#define DMA_RANGE_REGWEN_REG_OFFSET 0x30
114#define DMA_RANGE_REGWEN_REG_RESVAL 0x6u
115#define DMA_RANGE_REGWEN_REGWEN_MASK 0xfu
116#define DMA_RANGE_REGWEN_REGWEN_OFFSET 0
117#define DMA_RANGE_REGWEN_REGWEN_FIELD \
118 ((bitfield_field32_t) { .mask = DMA_RANGE_REGWEN_REGWEN_MASK, .index = DMA_RANGE_REGWEN_REGWEN_OFFSET })
119
120// Indicates whether the configuration registers are locked because the DMA
121// controller is operating.
122#define DMA_CFG_REGWEN_REG_OFFSET 0x34
123#define DMA_CFG_REGWEN_REG_RESVAL 0x6u
124#define DMA_CFG_REGWEN_REGWEN_MASK 0xfu
125#define DMA_CFG_REGWEN_REGWEN_OFFSET 0
126#define DMA_CFG_REGWEN_REGWEN_FIELD \
127 ((bitfield_field32_t) { .mask = DMA_CFG_REGWEN_REGWEN_MASK, .index = DMA_CFG_REGWEN_REGWEN_OFFSET })
128
129// Total size (in bytes) of the data to be transferred.
130#define DMA_TOTAL_DATA_SIZE_REG_OFFSET 0x38
131#define DMA_TOTAL_DATA_SIZE_REG_RESVAL 0x0u
132
133// Number of bytes to be transferred in response to each interrupt/firmware
134// request.
135#define DMA_CHUNK_DATA_SIZE_REG_OFFSET 0x3c
136#define DMA_CHUNK_DATA_SIZE_REG_RESVAL 0x0u
137
138// Denotes the width of each transaction that the DMA shall issue.
139#define DMA_TRANSFER_WIDTH_REG_OFFSET 0x40
140#define DMA_TRANSFER_WIDTH_REG_RESVAL 0x2u
141#define DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_MASK 0x3u
142#define DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_OFFSET 0
143#define DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_FIELD \
144 ((bitfield_field32_t) { .mask = DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_MASK, .index = DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_OFFSET })
145#define DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_VALUE_ONE_BYTE 0x0
146#define DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_VALUE_TWO_BYTE 0x1
147#define DMA_TRANSFER_WIDTH_TRANSACTION_WIDTH_VALUE_FOUR_BYTE 0x2
148
149// Control register for DMA data movement.
150#define DMA_CONTROL_REG_OFFSET 0x44
151#define DMA_CONTROL_REG_RESVAL 0x0u
152#define DMA_CONTROL_OPCODE_MASK 0xfu
153#define DMA_CONTROL_OPCODE_OFFSET 0
154#define DMA_CONTROL_OPCODE_FIELD \
155 ((bitfield_field32_t) { .mask = DMA_CONTROL_OPCODE_MASK, .index = DMA_CONTROL_OPCODE_OFFSET })
156#define DMA_CONTROL_OPCODE_VALUE_COPY 0x0
157#define DMA_CONTROL_OPCODE_VALUE_SHA256 0x1
158#define DMA_CONTROL_OPCODE_VALUE_SHA384 0x2
159#define DMA_CONTROL_OPCODE_VALUE_SHA512 0x3
160#define DMA_CONTROL_HARDWARE_HANDSHAKE_ENABLE_BIT 4
161#define DMA_CONTROL_DIGEST_SWAP_BIT 5
162#define DMA_CONTROL_INITIAL_TRANSFER_BIT 8
163#define DMA_CONTROL_ABORT_BIT 27
164#define DMA_CONTROL_GO_BIT 31
165
166// Defines the addressing behavior of the DMA for the source address.
167#define DMA_SRC_CONFIG_REG_OFFSET 0x48
168#define DMA_SRC_CONFIG_REG_RESVAL 0x0u
169#define DMA_SRC_CONFIG_INCREMENT_BIT 0
170#define DMA_SRC_CONFIG_WRAP_BIT 1
171
172// Defines the addressing behavior of the DMA for the destination address.
173#define DMA_DST_CONFIG_REG_OFFSET 0x4c
174#define DMA_DST_CONFIG_REG_RESVAL 0x0u
175#define DMA_DST_CONFIG_INCREMENT_BIT 0
176#define DMA_DST_CONFIG_WRAP_BIT 1
177
178// Status indication for DMA data movement.
179#define DMA_STATUS_REG_OFFSET 0x50
180#define DMA_STATUS_REG_RESVAL 0x0u
181#define DMA_STATUS_BUSY_BIT 0
182#define DMA_STATUS_DONE_BIT 1
183#define DMA_STATUS_ABORTED_BIT 2
184#define DMA_STATUS_ERROR_BIT 3
185#define DMA_STATUS_SHA2_DIGEST_VALID_BIT 4
186#define DMA_STATUS_CHUNK_DONE_BIT 5
187
188// Denotes the source of the operational error.
189#define DMA_ERROR_CODE_REG_OFFSET 0x54
190#define DMA_ERROR_CODE_REG_RESVAL 0x0u
191#define DMA_ERROR_CODE_SRC_ADDR_ERROR_BIT 0
192#define DMA_ERROR_CODE_DST_ADDR_ERROR_BIT 1
193#define DMA_ERROR_CODE_OPCODE_ERROR_BIT 2
194#define DMA_ERROR_CODE_SIZE_ERROR_BIT 3
195#define DMA_ERROR_CODE_BUS_ERROR_BIT 4
196#define DMA_ERROR_CODE_BASE_LIMIT_ERROR_BIT 5
197#define DMA_ERROR_CODE_RANGE_VALID_ERROR_BIT 6
198#define DMA_ERROR_CODE_ASID_ERROR_BIT 7
199
200// Digest register for the inline hashing operation.
201#define DMA_SHA2_DIGEST_DATA_FIELD_WIDTH 32
202#define DMA_SHA2_DIGEST_MULTIREG_COUNT 16
203
204// Digest register for the inline hashing operation.
205#define DMA_SHA2_DIGEST_0_REG_OFFSET 0x58
206#define DMA_SHA2_DIGEST_0_REG_RESVAL 0x0u
207
208// Digest register for the inline hashing operation.
209#define DMA_SHA2_DIGEST_1_REG_OFFSET 0x5c
210#define DMA_SHA2_DIGEST_1_REG_RESVAL 0x0u
211
212// Digest register for the inline hashing operation.
213#define DMA_SHA2_DIGEST_2_REG_OFFSET 0x60
214#define DMA_SHA2_DIGEST_2_REG_RESVAL 0x0u
215
216// Digest register for the inline hashing operation.
217#define DMA_SHA2_DIGEST_3_REG_OFFSET 0x64
218#define DMA_SHA2_DIGEST_3_REG_RESVAL 0x0u
219
220// Digest register for the inline hashing operation.
221#define DMA_SHA2_DIGEST_4_REG_OFFSET 0x68
222#define DMA_SHA2_DIGEST_4_REG_RESVAL 0x0u
223
224// Digest register for the inline hashing operation.
225#define DMA_SHA2_DIGEST_5_REG_OFFSET 0x6c
226#define DMA_SHA2_DIGEST_5_REG_RESVAL 0x0u
227
228// Digest register for the inline hashing operation.
229#define DMA_SHA2_DIGEST_6_REG_OFFSET 0x70
230#define DMA_SHA2_DIGEST_6_REG_RESVAL 0x0u
231
232// Digest register for the inline hashing operation.
233#define DMA_SHA2_DIGEST_7_REG_OFFSET 0x74
234#define DMA_SHA2_DIGEST_7_REG_RESVAL 0x0u
235
236// Digest register for the inline hashing operation.
237#define DMA_SHA2_DIGEST_8_REG_OFFSET 0x78
238#define DMA_SHA2_DIGEST_8_REG_RESVAL 0x0u
239
240// Digest register for the inline hashing operation.
241#define DMA_SHA2_DIGEST_9_REG_OFFSET 0x7c
242#define DMA_SHA2_DIGEST_9_REG_RESVAL 0x0u
243
244// Digest register for the inline hashing operation.
245#define DMA_SHA2_DIGEST_10_REG_OFFSET 0x80
246#define DMA_SHA2_DIGEST_10_REG_RESVAL 0x0u
247
248// Digest register for the inline hashing operation.
249#define DMA_SHA2_DIGEST_11_REG_OFFSET 0x84
250#define DMA_SHA2_DIGEST_11_REG_RESVAL 0x0u
251
252// Digest register for the inline hashing operation.
253#define DMA_SHA2_DIGEST_12_REG_OFFSET 0x88
254#define DMA_SHA2_DIGEST_12_REG_RESVAL 0x0u
255
256// Digest register for the inline hashing operation.
257#define DMA_SHA2_DIGEST_13_REG_OFFSET 0x8c
258#define DMA_SHA2_DIGEST_13_REG_RESVAL 0x0u
259
260// Digest register for the inline hashing operation.
261#define DMA_SHA2_DIGEST_14_REG_OFFSET 0x90
262#define DMA_SHA2_DIGEST_14_REG_RESVAL 0x0u
263
264// Digest register for the inline hashing operation.
265#define DMA_SHA2_DIGEST_15_REG_OFFSET 0x94
266#define DMA_SHA2_DIGEST_15_REG_RESVAL 0x0u
267
268// Enable bits for incoming handshake interrupt wires.
269#define DMA_HANDSHAKE_INTR_ENABLE_REG_OFFSET 0x98
270#define DMA_HANDSHAKE_INTR_ENABLE_REG_RESVAL 0x7ffu
271#define DMA_HANDSHAKE_INTR_ENABLE_MASK_MASK 0x7ffu
272#define DMA_HANDSHAKE_INTR_ENABLE_MASK_OFFSET 0
273#define DMA_HANDSHAKE_INTR_ENABLE_MASK_FIELD \
274 ((bitfield_field32_t) { .mask = DMA_HANDSHAKE_INTR_ENABLE_MASK_MASK, .index = DMA_HANDSHAKE_INTR_ENABLE_MASK_OFFSET })
275
276// Valid bits for which interrupt sources need clearing.
277#define DMA_CLEAR_INTR_SRC_REG_OFFSET 0x9c
278#define DMA_CLEAR_INTR_SRC_REG_RESVAL 0x0u
279#define DMA_CLEAR_INTR_SRC_SOURCE_MASK 0x7ffu
280#define DMA_CLEAR_INTR_SRC_SOURCE_OFFSET 0
281#define DMA_CLEAR_INTR_SRC_SOURCE_FIELD \
282 ((bitfield_field32_t) { .mask = DMA_CLEAR_INTR_SRC_SOURCE_MASK, .index = DMA_CLEAR_INTR_SRC_SOURCE_OFFSET })
283
284// Bus selection bit where the clearing command should be performed."
285#define DMA_CLEAR_INTR_BUS_REG_OFFSET 0xa0
286#define DMA_CLEAR_INTR_BUS_REG_RESVAL 0x0u
287#define DMA_CLEAR_INTR_BUS_BUS_MASK 0x7ffu
288#define DMA_CLEAR_INTR_BUS_BUS_OFFSET 0
289#define DMA_CLEAR_INTR_BUS_BUS_FIELD \
290 ((bitfield_field32_t) { .mask = DMA_CLEAR_INTR_BUS_BUS_MASK, .index = DMA_CLEAR_INTR_BUS_BUS_OFFSET })
291
292// Destination address for interrupt source clearing write. (common
293// parameters)
294#define DMA_INTR_SRC_ADDR_ADDR_FIELD_WIDTH 32
295#define DMA_INTR_SRC_ADDR_MULTIREG_COUNT 11
296
297// Destination address for interrupt source clearing write.
298#define DMA_INTR_SRC_ADDR_0_REG_OFFSET 0xa4
299#define DMA_INTR_SRC_ADDR_0_REG_RESVAL 0x0u
300
301// Destination address for interrupt source clearing write.
302#define DMA_INTR_SRC_ADDR_1_REG_OFFSET 0xa8
303#define DMA_INTR_SRC_ADDR_1_REG_RESVAL 0x0u
304
305// Destination address for interrupt source clearing write.
306#define DMA_INTR_SRC_ADDR_2_REG_OFFSET 0xac
307#define DMA_INTR_SRC_ADDR_2_REG_RESVAL 0x0u
308
309// Destination address for interrupt source clearing write.
310#define DMA_INTR_SRC_ADDR_3_REG_OFFSET 0xb0
311#define DMA_INTR_SRC_ADDR_3_REG_RESVAL 0x0u
312
313// Destination address for interrupt source clearing write.
314#define DMA_INTR_SRC_ADDR_4_REG_OFFSET 0xb4
315#define DMA_INTR_SRC_ADDR_4_REG_RESVAL 0x0u
316
317// Destination address for interrupt source clearing write.
318#define DMA_INTR_SRC_ADDR_5_REG_OFFSET 0xb8
319#define DMA_INTR_SRC_ADDR_5_REG_RESVAL 0x0u
320
321// Destination address for interrupt source clearing write.
322#define DMA_INTR_SRC_ADDR_6_REG_OFFSET 0xbc
323#define DMA_INTR_SRC_ADDR_6_REG_RESVAL 0x0u
324
325// Destination address for interrupt source clearing write.
326#define DMA_INTR_SRC_ADDR_7_REG_OFFSET 0xc0
327#define DMA_INTR_SRC_ADDR_7_REG_RESVAL 0x0u
328
329// Destination address for interrupt source clearing write.
330#define DMA_INTR_SRC_ADDR_8_REG_OFFSET 0xc4
331#define DMA_INTR_SRC_ADDR_8_REG_RESVAL 0x0u
332
333// Destination address for interrupt source clearing write.
334#define DMA_INTR_SRC_ADDR_9_REG_OFFSET 0xc8
335#define DMA_INTR_SRC_ADDR_9_REG_RESVAL 0x0u
336
337// Destination address for interrupt source clearing write.
338#define DMA_INTR_SRC_ADDR_10_REG_OFFSET 0xcc
339#define DMA_INTR_SRC_ADDR_10_REG_RESVAL 0x0u
340
341// Write value for interrupt clearing write. (common parameters)
342#define DMA_INTR_SRC_WR_VAL_WR_VAL_FIELD_WIDTH 32
343#define DMA_INTR_SRC_WR_VAL_MULTIREG_COUNT 11
344
345// Write value for interrupt clearing write.
346#define DMA_INTR_SRC_WR_VAL_0_REG_OFFSET 0x124
347#define DMA_INTR_SRC_WR_VAL_0_REG_RESVAL 0x0u
348
349// Write value for interrupt clearing write.
350#define DMA_INTR_SRC_WR_VAL_1_REG_OFFSET 0x128
351#define DMA_INTR_SRC_WR_VAL_1_REG_RESVAL 0x0u
352
353// Write value for interrupt clearing write.
354#define DMA_INTR_SRC_WR_VAL_2_REG_OFFSET 0x12c
355#define DMA_INTR_SRC_WR_VAL_2_REG_RESVAL 0x0u
356
357// Write value for interrupt clearing write.
358#define DMA_INTR_SRC_WR_VAL_3_REG_OFFSET 0x130
359#define DMA_INTR_SRC_WR_VAL_3_REG_RESVAL 0x0u
360
361// Write value for interrupt clearing write.
362#define DMA_INTR_SRC_WR_VAL_4_REG_OFFSET 0x134
363#define DMA_INTR_SRC_WR_VAL_4_REG_RESVAL 0x0u
364
365// Write value for interrupt clearing write.
366#define DMA_INTR_SRC_WR_VAL_5_REG_OFFSET 0x138
367#define DMA_INTR_SRC_WR_VAL_5_REG_RESVAL 0x0u
368
369// Write value for interrupt clearing write.
370#define DMA_INTR_SRC_WR_VAL_6_REG_OFFSET 0x13c
371#define DMA_INTR_SRC_WR_VAL_6_REG_RESVAL 0x0u
372
373// Write value for interrupt clearing write.
374#define DMA_INTR_SRC_WR_VAL_7_REG_OFFSET 0x140
375#define DMA_INTR_SRC_WR_VAL_7_REG_RESVAL 0x0u
376
377// Write value for interrupt clearing write.
378#define DMA_INTR_SRC_WR_VAL_8_REG_OFFSET 0x144
379#define DMA_INTR_SRC_WR_VAL_8_REG_RESVAL 0x0u
380
381// Write value for interrupt clearing write.
382#define DMA_INTR_SRC_WR_VAL_9_REG_OFFSET 0x148
383#define DMA_INTR_SRC_WR_VAL_9_REG_RESVAL 0x0u
384
385// Write value for interrupt clearing write.
386#define DMA_INTR_SRC_WR_VAL_10_REG_OFFSET 0x14c
387#define DMA_INTR_SRC_WR_VAL_10_REG_RESVAL 0x0u
388
389#ifdef __cplusplus
390} // extern "C"
391#endif
392#endif // _DMA_REG_DEFS_
393// End generated register defines for dma