Software APIs
mbx_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for mbx
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 _MBX_REG_DEFS_
14#define _MBX_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Number of alerts
20#define MBX_PARAM_NUM_ALERTS 2
21
22// Register width
23#define MBX_PARAM_REG_WIDTH 32
24
25// Common Interrupt Offsets
26#define MBX_INTR_COMMON_MBX_READY_BIT 0
27#define MBX_INTR_COMMON_MBX_ABORT_BIT 1
28#define MBX_INTR_COMMON_MBX_ERROR_BIT 2
29
30// Interrupt State Register
31#define MBX_INTR_STATE_REG_OFFSET 0x0
32#define MBX_INTR_STATE_REG_RESVAL 0x0u
33#define MBX_INTR_STATE_MBX_READY_BIT 0
34#define MBX_INTR_STATE_MBX_ABORT_BIT 1
35#define MBX_INTR_STATE_MBX_ERROR_BIT 2
36
37// Interrupt Enable Register
38#define MBX_INTR_ENABLE_REG_OFFSET 0x4
39#define MBX_INTR_ENABLE_REG_RESVAL 0x0u
40#define MBX_INTR_ENABLE_MBX_READY_BIT 0
41#define MBX_INTR_ENABLE_MBX_ABORT_BIT 1
42#define MBX_INTR_ENABLE_MBX_ERROR_BIT 2
43
44// Interrupt Test Register
45#define MBX_INTR_TEST_REG_OFFSET 0x8
46#define MBX_INTR_TEST_REG_RESVAL 0x0u
47#define MBX_INTR_TEST_MBX_READY_BIT 0
48#define MBX_INTR_TEST_MBX_ABORT_BIT 1
49#define MBX_INTR_TEST_MBX_ERROR_BIT 2
50
51// Alert Test Register
52#define MBX_ALERT_TEST_REG_OFFSET 0xc
53#define MBX_ALERT_TEST_REG_RESVAL 0x0u
54#define MBX_ALERT_TEST_FATAL_FAULT_BIT 0
55#define MBX_ALERT_TEST_RECOV_FAULT_BIT 1
56
57// DOE mailbox control register visible to OpenTitan
58#define MBX_CONTROL_REG_OFFSET 0x10
59#define MBX_CONTROL_REG_RESVAL 0x0u
60#define MBX_CONTROL_ABORT_BIT 0
61#define MBX_CONTROL_ERROR_BIT 1
62#define MBX_CONTROL_SYS_ASYNC_MSG_BIT 3
63
64// DOE mailbox status register visible to OpenTitan
65#define MBX_STATUS_REG_OFFSET 0x14
66#define MBX_STATUS_REG_RESVAL 0x1u
67#define MBX_STATUS_BUSY_BIT 0
68#define MBX_STATUS_SYS_INTR_STATE_BIT 1
69#define MBX_STATUS_SYS_INTR_ENABLE_BIT 2
70#define MBX_STATUS_SYS_ASYNC_ENABLE_BIT 3
71
72// Used to lock the inbound/outbound base/limit configuration registers.
73#define MBX_ADDRESS_RANGE_REGWEN_REG_OFFSET 0x18
74#define MBX_ADDRESS_RANGE_REGWEN_REG_RESVAL 0x6u
75#define MBX_ADDRESS_RANGE_REGWEN_REGWEN_MASK 0xfu
76#define MBX_ADDRESS_RANGE_REGWEN_REGWEN_OFFSET 0
77#define MBX_ADDRESS_RANGE_REGWEN_REGWEN_FIELD \
78 ((bitfield_field32_t) { .mask = MBX_ADDRESS_RANGE_REGWEN_REGWEN_MASK, .index = MBX_ADDRESS_RANGE_REGWEN_REGWEN_OFFSET })
79
80// Used to mark the inbound/outbound base/limit configuration registers to
81// have a valid configuration.
82#define MBX_ADDRESS_RANGE_VALID_REG_OFFSET 0x1c
83#define MBX_ADDRESS_RANGE_VALID_REG_RESVAL 0x0u
84#define MBX_ADDRESS_RANGE_VALID_RANGE_VALID_BIT 0
85
86// Base address of SRAM region, which is used to back up the inbound mailbox
87// data.
88#define MBX_INBOUND_BASE_ADDRESS_REG_OFFSET 0x20
89#define MBX_INBOUND_BASE_ADDRESS_REG_RESVAL 0x0u
90#define MBX_INBOUND_BASE_ADDRESS_BASE_ADDRESS_MASK 0x3fffffffu
91#define MBX_INBOUND_BASE_ADDRESS_BASE_ADDRESS_OFFSET 2
92#define MBX_INBOUND_BASE_ADDRESS_BASE_ADDRESS_FIELD \
93 ((bitfield_field32_t) { .mask = MBX_INBOUND_BASE_ADDRESS_BASE_ADDRESS_MASK, .index = MBX_INBOUND_BASE_ADDRESS_BASE_ADDRESS_OFFSET })
94
95// Inclusive end address of the inbound mailbox memory range in the private
96// SRAM.
97#define MBX_INBOUND_LIMIT_ADDRESS_REG_OFFSET 0x24
98#define MBX_INBOUND_LIMIT_ADDRESS_REG_RESVAL 0x0u
99#define MBX_INBOUND_LIMIT_ADDRESS_LIMIT_MASK 0x3fffffffu
100#define MBX_INBOUND_LIMIT_ADDRESS_LIMIT_OFFSET 2
101#define MBX_INBOUND_LIMIT_ADDRESS_LIMIT_FIELD \
102 ((bitfield_field32_t) { .mask = MBX_INBOUND_LIMIT_ADDRESS_LIMIT_MASK, .index = MBX_INBOUND_LIMIT_ADDRESS_LIMIT_OFFSET })
103
104// Write pointer for the next inbound DWORD write (32 bits).
105#define MBX_INBOUND_WRITE_PTR_REG_OFFSET 0x28
106#define MBX_INBOUND_WRITE_PTR_REG_RESVAL 0x0u
107#define MBX_INBOUND_WRITE_PTR_INBOUND_WRITE_PTR_MASK 0x3fffffffu
108#define MBX_INBOUND_WRITE_PTR_INBOUND_WRITE_PTR_OFFSET 2
109#define MBX_INBOUND_WRITE_PTR_INBOUND_WRITE_PTR_FIELD \
110 ((bitfield_field32_t) { .mask = MBX_INBOUND_WRITE_PTR_INBOUND_WRITE_PTR_MASK, .index = MBX_INBOUND_WRITE_PTR_INBOUND_WRITE_PTR_OFFSET })
111
112// Base address of SRAM region, which is used to buffer the outbound mailbox
113// data.
114#define MBX_OUTBOUND_BASE_ADDRESS_REG_OFFSET 0x2c
115#define MBX_OUTBOUND_BASE_ADDRESS_REG_RESVAL 0x0u
116#define MBX_OUTBOUND_BASE_ADDRESS_BASE_ADDRESS_MASK 0x3fffffffu
117#define MBX_OUTBOUND_BASE_ADDRESS_BASE_ADDRESS_OFFSET 2
118#define MBX_OUTBOUND_BASE_ADDRESS_BASE_ADDRESS_FIELD \
119 ((bitfield_field32_t) { .mask = MBX_OUTBOUND_BASE_ADDRESS_BASE_ADDRESS_MASK, .index = MBX_OUTBOUND_BASE_ADDRESS_BASE_ADDRESS_OFFSET })
120
121// Inclusive end address of the outbound mailbox memory range in the private
122// SRAM.
123#define MBX_OUTBOUND_LIMIT_ADDRESS_REG_OFFSET 0x30
124#define MBX_OUTBOUND_LIMIT_ADDRESS_REG_RESVAL 0x0u
125#define MBX_OUTBOUND_LIMIT_ADDRESS_LIMIT_MASK 0x3fffffffu
126#define MBX_OUTBOUND_LIMIT_ADDRESS_LIMIT_OFFSET 2
127#define MBX_OUTBOUND_LIMIT_ADDRESS_LIMIT_FIELD \
128 ((bitfield_field32_t) { .mask = MBX_OUTBOUND_LIMIT_ADDRESS_LIMIT_MASK, .index = MBX_OUTBOUND_LIMIT_ADDRESS_LIMIT_OFFSET })
129
130// Read pointer for the next outbound DWORD read.
131#define MBX_OUTBOUND_READ_PTR_REG_OFFSET 0x34
132#define MBX_OUTBOUND_READ_PTR_REG_RESVAL 0x0u
133#define MBX_OUTBOUND_READ_PTR_OUTBOUND_READ_PTR_MASK 0x3fffffffu
134#define MBX_OUTBOUND_READ_PTR_OUTBOUND_READ_PTR_OFFSET 2
135#define MBX_OUTBOUND_READ_PTR_OUTBOUND_READ_PTR_FIELD \
136 ((bitfield_field32_t) { .mask = MBX_OUTBOUND_READ_PTR_OUTBOUND_READ_PTR_MASK, .index = MBX_OUTBOUND_READ_PTR_OUTBOUND_READ_PTR_OFFSET })
137
138// Indicates the size of the data object to be transferred out.
139#define MBX_OUTBOUND_OBJECT_SIZE_REG_OFFSET 0x38
140#define MBX_OUTBOUND_OBJECT_SIZE_REG_RESVAL 0x0u
141#define MBX_OUTBOUND_OBJECT_SIZE_CNT_MASK 0x7ffu
142#define MBX_OUTBOUND_OBJECT_SIZE_CNT_OFFSET 0
143#define MBX_OUTBOUND_OBJECT_SIZE_CNT_FIELD \
144 ((bitfield_field32_t) { .mask = MBX_OUTBOUND_OBJECT_SIZE_CNT_MASK, .index = MBX_OUTBOUND_OBJECT_SIZE_CNT_OFFSET })
145
146// Software read-only alias of the DOE_INTR_MSG_ADDR register of the SoC
147// interface for convenient access of the OT firmware.
148#define MBX_DOE_INTR_MSG_ADDR_REG_OFFSET 0x3c
149#define MBX_DOE_INTR_MSG_ADDR_REG_RESVAL 0x0u
150
151// Software read-only alias of the DOE_INTR_MSG_DATA register of the SoC
152// interface for convenient access of the OT firmware.
153#define MBX_DOE_INTR_MSG_DATA_REG_OFFSET 0x40
154#define MBX_DOE_INTR_MSG_DATA_REG_RESVAL 0x0u
155
156// DOE mailbox control register.
157#define MBX_SOC_CONTROL_REG_OFFSET 0x8
158#define MBX_SOC_CONTROL_REG_RESVAL 0x0u
159#define MBX_SOC_CONTROL_ABORT_BIT 0
160#define MBX_SOC_CONTROL_DOE_INTR_EN_BIT 1
161#define MBX_SOC_CONTROL_DOE_ASYNC_MSG_EN_BIT 3
162#define MBX_SOC_CONTROL_GO_BIT 31
163
164// DOE mailbox status register
165#define MBX_SOC_STATUS_REG_OFFSET 0xc
166#define MBX_SOC_STATUS_REG_RESVAL 0x1u
167#define MBX_SOC_STATUS_BUSY_BIT 0
168#define MBX_SOC_STATUS_DOE_INTR_STATUS_BIT 1
169#define MBX_SOC_STATUS_ERROR_BIT 2
170#define MBX_SOC_STATUS_DOE_ASYNC_MSG_STATUS_BIT 3
171#define MBX_SOC_STATUS_READY_BIT 31
172
173// Memory area: DOE mailbox write data register.
174#define MBX_WDATA_REG_OFFSET 0x10
175#define MBX_WDATA_SIZE_WORDS 1
176#define MBX_WDATA_SIZE_BYTES 4
177// Memory area: DOE mailbox read data register
178#define MBX_RDATA_REG_OFFSET 0x14
179#define MBX_RDATA_SIZE_WORDS 1
180#define MBX_RDATA_SIZE_BYTES 4
181// Utilized by the mailbox responder to send an interrupt message to the
182// requester via a write to the configured address.
183#define MBX_SOC_DOE_INTR_MSG_ADDR_REG_OFFSET 0x18
184#define MBX_SOC_DOE_INTR_MSG_ADDR_REG_RESVAL 0x0u
185
186// Interrupt message data to be sent to the address configured in the
187// DOE_INTR_MSG_ADDR register.
188#define MBX_SOC_DOE_INTR_MSG_DATA_REG_OFFSET 0x1c
189#define MBX_SOC_DOE_INTR_MSG_DATA_REG_RESVAL 0x0u
190
191#ifdef __cplusplus
192} // extern "C"
193#endif
194#endif // _MBX_REG_DEFS_
195// End generated register defines for mbx