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