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