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