Software APIs
spi_host_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for spi_host
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 _SPI_HOST_REG_DEFS_
14#define _SPI_HOST_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Byte order to use when transmitting or receiving data. If ByteOrder = 0,
20#define SPI_HOST_PARAM_BYTE_ORDER 1
21
22// The size of the Tx FIFO (in words)
23#define SPI_HOST_PARAM_TX_DEPTH 72
24
25// The size of the Rx FIFO (in words)
26#define SPI_HOST_PARAM_RX_DEPTH 64
27
28// The size of the Cmd FIFO (one segment descriptor per entry)
29#define SPI_HOST_PARAM_CMD_DEPTH 4
30
31// Number of alerts
32#define SPI_HOST_PARAM_NUM_ALERTS 1
33
34// Register width
35#define SPI_HOST_PARAM_REG_WIDTH 32
36
37// Common Interrupt Offsets
38#define SPI_HOST_INTR_COMMON_ERROR_BIT 0
39#define SPI_HOST_INTR_COMMON_SPI_EVENT_BIT 1
40
41// Interrupt State Register
42#define SPI_HOST_INTR_STATE_REG_OFFSET 0x0
43#define SPI_HOST_INTR_STATE_REG_RESVAL 0x0u
44#define SPI_HOST_INTR_STATE_ERROR_BIT 0
45#define SPI_HOST_INTR_STATE_SPI_EVENT_BIT 1
46
47// Interrupt Enable Register
48#define SPI_HOST_INTR_ENABLE_REG_OFFSET 0x4
49#define SPI_HOST_INTR_ENABLE_REG_RESVAL 0x0u
50#define SPI_HOST_INTR_ENABLE_ERROR_BIT 0
51#define SPI_HOST_INTR_ENABLE_SPI_EVENT_BIT 1
52
53// Interrupt Test Register
54#define SPI_HOST_INTR_TEST_REG_OFFSET 0x8
55#define SPI_HOST_INTR_TEST_REG_RESVAL 0x0u
56#define SPI_HOST_INTR_TEST_ERROR_BIT 0
57#define SPI_HOST_INTR_TEST_SPI_EVENT_BIT 1
58
59// Alert Test Register
60#define SPI_HOST_ALERT_TEST_REG_OFFSET 0xc
61#define SPI_HOST_ALERT_TEST_REG_RESVAL 0x0u
62#define SPI_HOST_ALERT_TEST_FATAL_FAULT_BIT 0
63
64// Control register
65#define SPI_HOST_CONTROL_REG_OFFSET 0x10
66#define SPI_HOST_CONTROL_REG_RESVAL 0x7fu
67#define SPI_HOST_CONTROL_RX_WATERMARK_MASK 0xffu
68#define SPI_HOST_CONTROL_RX_WATERMARK_OFFSET 0
69#define SPI_HOST_CONTROL_RX_WATERMARK_FIELD \
70 ((bitfield_field32_t) { .mask = SPI_HOST_CONTROL_RX_WATERMARK_MASK, .index = SPI_HOST_CONTROL_RX_WATERMARK_OFFSET })
71#define SPI_HOST_CONTROL_TX_WATERMARK_MASK 0xffu
72#define SPI_HOST_CONTROL_TX_WATERMARK_OFFSET 8
73#define SPI_HOST_CONTROL_TX_WATERMARK_FIELD \
74 ((bitfield_field32_t) { .mask = SPI_HOST_CONTROL_TX_WATERMARK_MASK, .index = SPI_HOST_CONTROL_TX_WATERMARK_OFFSET })
75#define SPI_HOST_CONTROL_OUTPUT_EN_BIT 29
76#define SPI_HOST_CONTROL_SW_RST_BIT 30
77#define SPI_HOST_CONTROL_SPIEN_BIT 31
78
79// Status register
80#define SPI_HOST_STATUS_REG_OFFSET 0x14
81#define SPI_HOST_STATUS_REG_RESVAL 0x0u
82#define SPI_HOST_STATUS_TXQD_MASK 0xffu
83#define SPI_HOST_STATUS_TXQD_OFFSET 0
84#define SPI_HOST_STATUS_TXQD_FIELD \
85 ((bitfield_field32_t) { .mask = SPI_HOST_STATUS_TXQD_MASK, .index = SPI_HOST_STATUS_TXQD_OFFSET })
86#define SPI_HOST_STATUS_RXQD_MASK 0xffu
87#define SPI_HOST_STATUS_RXQD_OFFSET 8
88#define SPI_HOST_STATUS_RXQD_FIELD \
89 ((bitfield_field32_t) { .mask = SPI_HOST_STATUS_RXQD_MASK, .index = SPI_HOST_STATUS_RXQD_OFFSET })
90#define SPI_HOST_STATUS_CMDQD_MASK 0xfu
91#define SPI_HOST_STATUS_CMDQD_OFFSET 16
92#define SPI_HOST_STATUS_CMDQD_FIELD \
93 ((bitfield_field32_t) { .mask = SPI_HOST_STATUS_CMDQD_MASK, .index = SPI_HOST_STATUS_CMDQD_OFFSET })
94#define SPI_HOST_STATUS_RXWM_BIT 20
95#define SPI_HOST_STATUS_BYTEORDER_BIT 22
96#define SPI_HOST_STATUS_RXSTALL_BIT 23
97#define SPI_HOST_STATUS_RXEMPTY_BIT 24
98#define SPI_HOST_STATUS_RXFULL_BIT 25
99#define SPI_HOST_STATUS_TXWM_BIT 26
100#define SPI_HOST_STATUS_TXSTALL_BIT 27
101#define SPI_HOST_STATUS_TXEMPTY_BIT 28
102#define SPI_HOST_STATUS_TXFULL_BIT 29
103#define SPI_HOST_STATUS_ACTIVE_BIT 30
104#define SPI_HOST_STATUS_READY_BIT 31
105
106// Configuration options register.
107#define SPI_HOST_CONFIGOPTS_REG_OFFSET 0x18
108#define SPI_HOST_CONFIGOPTS_REG_RESVAL 0x0u
109#define SPI_HOST_CONFIGOPTS_CLKDIV_MASK 0xffffu
110#define SPI_HOST_CONFIGOPTS_CLKDIV_OFFSET 0
111#define SPI_HOST_CONFIGOPTS_CLKDIV_FIELD \
112 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CLKDIV_MASK, .index = SPI_HOST_CONFIGOPTS_CLKDIV_OFFSET })
113#define SPI_HOST_CONFIGOPTS_CSNIDLE_MASK 0xfu
114#define SPI_HOST_CONFIGOPTS_CSNIDLE_OFFSET 16
115#define SPI_HOST_CONFIGOPTS_CSNIDLE_FIELD \
116 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CSNIDLE_MASK, .index = SPI_HOST_CONFIGOPTS_CSNIDLE_OFFSET })
117#define SPI_HOST_CONFIGOPTS_CSNTRAIL_MASK 0xfu
118#define SPI_HOST_CONFIGOPTS_CSNTRAIL_OFFSET 20
119#define SPI_HOST_CONFIGOPTS_CSNTRAIL_FIELD \
120 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CSNTRAIL_MASK, .index = SPI_HOST_CONFIGOPTS_CSNTRAIL_OFFSET })
121#define SPI_HOST_CONFIGOPTS_CSNLEAD_MASK 0xfu
122#define SPI_HOST_CONFIGOPTS_CSNLEAD_OFFSET 24
123#define SPI_HOST_CONFIGOPTS_CSNLEAD_FIELD \
124 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CSNLEAD_MASK, .index = SPI_HOST_CONFIGOPTS_CSNLEAD_OFFSET })
125#define SPI_HOST_CONFIGOPTS_FULLCYC_BIT 29
126#define SPI_HOST_CONFIGOPTS_CPHA_BIT 30
127#define SPI_HOST_CONFIGOPTS_CPOL_BIT 31
128
129// Chip-Select ID
130#define SPI_HOST_CSID_REG_OFFSET 0x1c
131#define SPI_HOST_CSID_REG_RESVAL 0x0u
132
133// Command Register
134#define SPI_HOST_COMMAND_REG_OFFSET 0x20
135#define SPI_HOST_COMMAND_REG_RESVAL 0x0u
136#define SPI_HOST_COMMAND_CSAAT_BIT 0
137#define SPI_HOST_COMMAND_SPEED_MASK 0x3u
138#define SPI_HOST_COMMAND_SPEED_OFFSET 1
139#define SPI_HOST_COMMAND_SPEED_FIELD \
140 ((bitfield_field32_t) { .mask = SPI_HOST_COMMAND_SPEED_MASK, .index = SPI_HOST_COMMAND_SPEED_OFFSET })
141#define SPI_HOST_COMMAND_DIRECTION_MASK 0x3u
142#define SPI_HOST_COMMAND_DIRECTION_OFFSET 3
143#define SPI_HOST_COMMAND_DIRECTION_FIELD \
144 ((bitfield_field32_t) { .mask = SPI_HOST_COMMAND_DIRECTION_MASK, .index = SPI_HOST_COMMAND_DIRECTION_OFFSET })
145#define SPI_HOST_COMMAND_LEN_MASK 0xfffffu
146#define SPI_HOST_COMMAND_LEN_OFFSET 5
147#define SPI_HOST_COMMAND_LEN_FIELD \
148 ((bitfield_field32_t) { .mask = SPI_HOST_COMMAND_LEN_MASK, .index = SPI_HOST_COMMAND_LEN_OFFSET })
149
150// Memory area: SPI Receive Data.
151#define SPI_HOST_RXDATA_REG_OFFSET 0x24
152#define SPI_HOST_RXDATA_SIZE_WORDS 1
153#define SPI_HOST_RXDATA_SIZE_BYTES 4
154// Memory area: SPI Transmit Data.
155#define SPI_HOST_TXDATA_REG_OFFSET 0x28
156#define SPI_HOST_TXDATA_SIZE_WORDS 1
157#define SPI_HOST_TXDATA_SIZE_BYTES 4
158// Controls which classes of errors raise an interrupt.
159#define SPI_HOST_ERROR_ENABLE_REG_OFFSET 0x2c
160#define SPI_HOST_ERROR_ENABLE_REG_RESVAL 0x1fu
161#define SPI_HOST_ERROR_ENABLE_CMDBUSY_BIT 0
162#define SPI_HOST_ERROR_ENABLE_OVERFLOW_BIT 1
163#define SPI_HOST_ERROR_ENABLE_UNDERFLOW_BIT 2
164#define SPI_HOST_ERROR_ENABLE_CMDINVAL_BIT 3
165#define SPI_HOST_ERROR_ENABLE_CSIDINVAL_BIT 4
166
167// Indicates that any errors that have occurred.
168#define SPI_HOST_ERROR_STATUS_REG_OFFSET 0x30
169#define SPI_HOST_ERROR_STATUS_REG_RESVAL 0x0u
170#define SPI_HOST_ERROR_STATUS_CMDBUSY_BIT 0
171#define SPI_HOST_ERROR_STATUS_OVERFLOW_BIT 1
172#define SPI_HOST_ERROR_STATUS_UNDERFLOW_BIT 2
173#define SPI_HOST_ERROR_STATUS_CMDINVAL_BIT 3
174#define SPI_HOST_ERROR_STATUS_CSIDINVAL_BIT 4
175#define SPI_HOST_ERROR_STATUS_ACCESSINVAL_BIT 5
176
177// Controls which classes of SPI events raise an interrupt.
178#define SPI_HOST_EVENT_ENABLE_REG_OFFSET 0x34
179#define SPI_HOST_EVENT_ENABLE_REG_RESVAL 0x0u
180#define SPI_HOST_EVENT_ENABLE_RXFULL_BIT 0
181#define SPI_HOST_EVENT_ENABLE_TXEMPTY_BIT 1
182#define SPI_HOST_EVENT_ENABLE_RXWM_BIT 2
183#define SPI_HOST_EVENT_ENABLE_TXWM_BIT 3
184#define SPI_HOST_EVENT_ENABLE_READY_BIT 4
185#define SPI_HOST_EVENT_ENABLE_IDLE_BIT 5
186
187#ifdef __cplusplus
188} // extern "C"
189#endif
190#endif // _SPI_HOST_REG_DEFS_
191// End generated register defines for spi_host