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 0x80000000u
62#define SPI_HOST_ALERT_TEST_FATAL_FAULT_BIT 0
63#define SPI_HOST_ALERT_TEST_REGWEN_BIT 31
64
65// Control register
66#define SPI_HOST_CONTROL_REG_OFFSET 0x10
67#define SPI_HOST_CONTROL_REG_RESVAL 0x7fu
68#define SPI_HOST_CONTROL_RX_WATERMARK_MASK 0xffu
69#define SPI_HOST_CONTROL_RX_WATERMARK_OFFSET 0
70#define SPI_HOST_CONTROL_RX_WATERMARK_FIELD \
71 ((bitfield_field32_t) { .mask = SPI_HOST_CONTROL_RX_WATERMARK_MASK, .index = SPI_HOST_CONTROL_RX_WATERMARK_OFFSET })
72#define SPI_HOST_CONTROL_TX_WATERMARK_MASK 0xffu
73#define SPI_HOST_CONTROL_TX_WATERMARK_OFFSET 8
74#define SPI_HOST_CONTROL_TX_WATERMARK_FIELD \
75 ((bitfield_field32_t) { .mask = SPI_HOST_CONTROL_TX_WATERMARK_MASK, .index = SPI_HOST_CONTROL_TX_WATERMARK_OFFSET })
76#define SPI_HOST_CONTROL_OUTPUT_EN_BIT 29
77#define SPI_HOST_CONTROL_SW_RST_BIT 30
78#define SPI_HOST_CONTROL_SPIEN_BIT 31
79
80// Status register
81#define SPI_HOST_STATUS_REG_OFFSET 0x14
82#define SPI_HOST_STATUS_REG_RESVAL 0x0u
83#define SPI_HOST_STATUS_TXQD_MASK 0xffu
84#define SPI_HOST_STATUS_TXQD_OFFSET 0
85#define SPI_HOST_STATUS_TXQD_FIELD \
86 ((bitfield_field32_t) { .mask = SPI_HOST_STATUS_TXQD_MASK, .index = SPI_HOST_STATUS_TXQD_OFFSET })
87#define SPI_HOST_STATUS_RXQD_MASK 0xffu
88#define SPI_HOST_STATUS_RXQD_OFFSET 8
89#define SPI_HOST_STATUS_RXQD_FIELD \
90 ((bitfield_field32_t) { .mask = SPI_HOST_STATUS_RXQD_MASK, .index = SPI_HOST_STATUS_RXQD_OFFSET })
91#define SPI_HOST_STATUS_CMDQD_MASK 0xfu
92#define SPI_HOST_STATUS_CMDQD_OFFSET 16
93#define SPI_HOST_STATUS_CMDQD_FIELD \
94 ((bitfield_field32_t) { .mask = SPI_HOST_STATUS_CMDQD_MASK, .index = SPI_HOST_STATUS_CMDQD_OFFSET })
95#define SPI_HOST_STATUS_RXWM_BIT 20
96#define SPI_HOST_STATUS_BYTEORDER_BIT 22
97#define SPI_HOST_STATUS_RXSTALL_BIT 23
98#define SPI_HOST_STATUS_RXEMPTY_BIT 24
99#define SPI_HOST_STATUS_RXFULL_BIT 25
100#define SPI_HOST_STATUS_TXWM_BIT 26
101#define SPI_HOST_STATUS_TXSTALL_BIT 27
102#define SPI_HOST_STATUS_TXEMPTY_BIT 28
103#define SPI_HOST_STATUS_TXFULL_BIT 29
104#define SPI_HOST_STATUS_ACTIVE_BIT 30
105#define SPI_HOST_STATUS_READY_BIT 31
106
107// Configuration options register.
108#define SPI_HOST_CONFIGOPTS_REG_OFFSET 0x18
109#define SPI_HOST_CONFIGOPTS_REG_RESVAL 0x0u
110#define SPI_HOST_CONFIGOPTS_CLKDIV_MASK 0xffffu
111#define SPI_HOST_CONFIGOPTS_CLKDIV_OFFSET 0
112#define SPI_HOST_CONFIGOPTS_CLKDIV_FIELD \
113 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CLKDIV_MASK, .index = SPI_HOST_CONFIGOPTS_CLKDIV_OFFSET })
114#define SPI_HOST_CONFIGOPTS_CSNIDLE_MASK 0xfu
115#define SPI_HOST_CONFIGOPTS_CSNIDLE_OFFSET 16
116#define SPI_HOST_CONFIGOPTS_CSNIDLE_FIELD \
117 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CSNIDLE_MASK, .index = SPI_HOST_CONFIGOPTS_CSNIDLE_OFFSET })
118#define SPI_HOST_CONFIGOPTS_CSNTRAIL_MASK 0xfu
119#define SPI_HOST_CONFIGOPTS_CSNTRAIL_OFFSET 20
120#define SPI_HOST_CONFIGOPTS_CSNTRAIL_FIELD \
121 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CSNTRAIL_MASK, .index = SPI_HOST_CONFIGOPTS_CSNTRAIL_OFFSET })
122#define SPI_HOST_CONFIGOPTS_CSNLEAD_MASK 0xfu
123#define SPI_HOST_CONFIGOPTS_CSNLEAD_OFFSET 24
124#define SPI_HOST_CONFIGOPTS_CSNLEAD_FIELD \
125 ((bitfield_field32_t) { .mask = SPI_HOST_CONFIGOPTS_CSNLEAD_MASK, .index = SPI_HOST_CONFIGOPTS_CSNLEAD_OFFSET })
126#define SPI_HOST_CONFIGOPTS_FULLCYC_BIT 29
127#define SPI_HOST_CONFIGOPTS_CPHA_BIT 30
128#define SPI_HOST_CONFIGOPTS_CPOL_BIT 31
129
130// Chip-Select ID
131#define SPI_HOST_CSID_REG_OFFSET 0x1c
132#define SPI_HOST_CSID_REG_RESVAL 0x0u
133
134// Command Register
135#define SPI_HOST_COMMAND_REG_OFFSET 0x20
136#define SPI_HOST_COMMAND_REG_RESVAL 0x0u
137#define SPI_HOST_COMMAND_CSAAT_BIT 0
138#define SPI_HOST_COMMAND_SPEED_MASK 0x3u
139#define SPI_HOST_COMMAND_SPEED_OFFSET 1
140#define SPI_HOST_COMMAND_SPEED_FIELD \
141 ((bitfield_field32_t) { .mask = SPI_HOST_COMMAND_SPEED_MASK, .index = SPI_HOST_COMMAND_SPEED_OFFSET })
142#define SPI_HOST_COMMAND_DIRECTION_MASK 0x3u
143#define SPI_HOST_COMMAND_DIRECTION_OFFSET 3
144#define SPI_HOST_COMMAND_DIRECTION_FIELD \
145 ((bitfield_field32_t) { .mask = SPI_HOST_COMMAND_DIRECTION_MASK, .index = SPI_HOST_COMMAND_DIRECTION_OFFSET })
146#define SPI_HOST_COMMAND_LEN_MASK 0xfffffu
147#define SPI_HOST_COMMAND_LEN_OFFSET 5
148#define SPI_HOST_COMMAND_LEN_FIELD \
149 ((bitfield_field32_t) { .mask = SPI_HOST_COMMAND_LEN_MASK, .index = SPI_HOST_COMMAND_LEN_OFFSET })
150
151// Memory area: SPI Receive Data.
152#define SPI_HOST_RXDATA_REG_OFFSET 0x24
153#define SPI_HOST_RXDATA_SIZE_WORDS 1
154#define SPI_HOST_RXDATA_SIZE_BYTES 4
155// Memory area: SPI Transmit Data.
156#define SPI_HOST_TXDATA_REG_OFFSET 0x28
157#define SPI_HOST_TXDATA_SIZE_WORDS 1
158#define SPI_HOST_TXDATA_SIZE_BYTES 4
159// Controls which classes of errors raise an interrupt.
160#define SPI_HOST_ERROR_ENABLE_REG_OFFSET 0x2c
161#define SPI_HOST_ERROR_ENABLE_REG_RESVAL 0x1fu
162#define SPI_HOST_ERROR_ENABLE_CMDBUSY_BIT 0
163#define SPI_HOST_ERROR_ENABLE_OVERFLOW_BIT 1
164#define SPI_HOST_ERROR_ENABLE_UNDERFLOW_BIT 2
165#define SPI_HOST_ERROR_ENABLE_CMDINVAL_BIT 3
166#define SPI_HOST_ERROR_ENABLE_CSIDINVAL_BIT 4
167
168// Indicates that any errors that have occurred.
169#define SPI_HOST_ERROR_STATUS_REG_OFFSET 0x30
170#define SPI_HOST_ERROR_STATUS_REG_RESVAL 0x0u
171#define SPI_HOST_ERROR_STATUS_CMDBUSY_BIT 0
172#define SPI_HOST_ERROR_STATUS_OVERFLOW_BIT 1
173#define SPI_HOST_ERROR_STATUS_UNDERFLOW_BIT 2
174#define SPI_HOST_ERROR_STATUS_CMDINVAL_BIT 3
175#define SPI_HOST_ERROR_STATUS_CSIDINVAL_BIT 4
176#define SPI_HOST_ERROR_STATUS_ACCESSINVAL_BIT 5
177
178// Controls which classes of SPI events raise an interrupt.
179#define SPI_HOST_EVENT_ENABLE_REG_OFFSET 0x34
180#define SPI_HOST_EVENT_ENABLE_REG_RESVAL 0x0u
181#define SPI_HOST_EVENT_ENABLE_RXFULL_BIT 0
182#define SPI_HOST_EVENT_ENABLE_TXEMPTY_BIT 1
183#define SPI_HOST_EVENT_ENABLE_RXWM_BIT 2
184#define SPI_HOST_EVENT_ENABLE_TXWM_BIT 3
185#define SPI_HOST_EVENT_ENABLE_READY_BIT 4
186#define SPI_HOST_EVENT_ENABLE_IDLE_BIT 5
187
188#ifdef __cplusplus
189} // extern "C"
190#endif
191#endif // _SPI_HOST_REG_DEFS_
192// End generated register defines for spi_host