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