Software APIs
i2c_regs.h
Go to the documentation of this file.
1/**
2 * @file
3 * @brief Generated register defines for i2c
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 _I2C_REG_DEFS_
14#define _I2C_REG_DEFS_
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19// Depth of FMT, RX, and TX FIFOs.
20#define I2C_PARAM_FIFO_DEPTH 64
21
22// Depth of ACQ FIFO.
23#define I2C_PARAM_ACQ_FIFO_DEPTH 268
24
25// Number of alerts
26#define I2C_PARAM_NUM_ALERTS 1
27
28// Register width
29#define I2C_PARAM_REG_WIDTH 32
30
31// Common Interrupt Offsets
32#define I2C_INTR_COMMON_FMT_THRESHOLD_BIT 0
33#define I2C_INTR_COMMON_RX_THRESHOLD_BIT 1
34#define I2C_INTR_COMMON_ACQ_THRESHOLD_BIT 2
35#define I2C_INTR_COMMON_RX_OVERFLOW_BIT 3
36#define I2C_INTR_COMMON_CONTROLLER_HALT_BIT 4
37#define I2C_INTR_COMMON_SCL_INTERFERENCE_BIT 5
38#define I2C_INTR_COMMON_SDA_INTERFERENCE_BIT 6
39#define I2C_INTR_COMMON_STRETCH_TIMEOUT_BIT 7
40#define I2C_INTR_COMMON_SDA_UNSTABLE_BIT 8
41#define I2C_INTR_COMMON_CMD_COMPLETE_BIT 9
42#define I2C_INTR_COMMON_TX_STRETCH_BIT 10
43#define I2C_INTR_COMMON_TX_THRESHOLD_BIT 11
44#define I2C_INTR_COMMON_ACQ_STRETCH_BIT 12
45#define I2C_INTR_COMMON_UNEXP_STOP_BIT 13
46#define I2C_INTR_COMMON_HOST_TIMEOUT_BIT 14
47
48// Interrupt State Register
49#define I2C_INTR_STATE_REG_OFFSET 0x0
50#define I2C_INTR_STATE_REG_RESVAL 0x0u
51#define I2C_INTR_STATE_FMT_THRESHOLD_BIT 0
52#define I2C_INTR_STATE_RX_THRESHOLD_BIT 1
53#define I2C_INTR_STATE_ACQ_THRESHOLD_BIT 2
54#define I2C_INTR_STATE_RX_OVERFLOW_BIT 3
55#define I2C_INTR_STATE_CONTROLLER_HALT_BIT 4
56#define I2C_INTR_STATE_SCL_INTERFERENCE_BIT 5
57#define I2C_INTR_STATE_SDA_INTERFERENCE_BIT 6
58#define I2C_INTR_STATE_STRETCH_TIMEOUT_BIT 7
59#define I2C_INTR_STATE_SDA_UNSTABLE_BIT 8
60#define I2C_INTR_STATE_CMD_COMPLETE_BIT 9
61#define I2C_INTR_STATE_TX_STRETCH_BIT 10
62#define I2C_INTR_STATE_TX_THRESHOLD_BIT 11
63#define I2C_INTR_STATE_ACQ_STRETCH_BIT 12
64#define I2C_INTR_STATE_UNEXP_STOP_BIT 13
65#define I2C_INTR_STATE_HOST_TIMEOUT_BIT 14
66
67// Interrupt Enable Register
68#define I2C_INTR_ENABLE_REG_OFFSET 0x4
69#define I2C_INTR_ENABLE_REG_RESVAL 0x0u
70#define I2C_INTR_ENABLE_FMT_THRESHOLD_BIT 0
71#define I2C_INTR_ENABLE_RX_THRESHOLD_BIT 1
72#define I2C_INTR_ENABLE_ACQ_THRESHOLD_BIT 2
73#define I2C_INTR_ENABLE_RX_OVERFLOW_BIT 3
74#define I2C_INTR_ENABLE_CONTROLLER_HALT_BIT 4
75#define I2C_INTR_ENABLE_SCL_INTERFERENCE_BIT 5
76#define I2C_INTR_ENABLE_SDA_INTERFERENCE_BIT 6
77#define I2C_INTR_ENABLE_STRETCH_TIMEOUT_BIT 7
78#define I2C_INTR_ENABLE_SDA_UNSTABLE_BIT 8
79#define I2C_INTR_ENABLE_CMD_COMPLETE_BIT 9
80#define I2C_INTR_ENABLE_TX_STRETCH_BIT 10
81#define I2C_INTR_ENABLE_TX_THRESHOLD_BIT 11
82#define I2C_INTR_ENABLE_ACQ_STRETCH_BIT 12
83#define I2C_INTR_ENABLE_UNEXP_STOP_BIT 13
84#define I2C_INTR_ENABLE_HOST_TIMEOUT_BIT 14
85
86// Interrupt Test Register
87#define I2C_INTR_TEST_REG_OFFSET 0x8
88#define I2C_INTR_TEST_REG_RESVAL 0x0u
89#define I2C_INTR_TEST_FMT_THRESHOLD_BIT 0
90#define I2C_INTR_TEST_RX_THRESHOLD_BIT 1
91#define I2C_INTR_TEST_ACQ_THRESHOLD_BIT 2
92#define I2C_INTR_TEST_RX_OVERFLOW_BIT 3
93#define I2C_INTR_TEST_CONTROLLER_HALT_BIT 4
94#define I2C_INTR_TEST_SCL_INTERFERENCE_BIT 5
95#define I2C_INTR_TEST_SDA_INTERFERENCE_BIT 6
96#define I2C_INTR_TEST_STRETCH_TIMEOUT_BIT 7
97#define I2C_INTR_TEST_SDA_UNSTABLE_BIT 8
98#define I2C_INTR_TEST_CMD_COMPLETE_BIT 9
99#define I2C_INTR_TEST_TX_STRETCH_BIT 10
100#define I2C_INTR_TEST_TX_THRESHOLD_BIT 11
101#define I2C_INTR_TEST_ACQ_STRETCH_BIT 12
102#define I2C_INTR_TEST_UNEXP_STOP_BIT 13
103#define I2C_INTR_TEST_HOST_TIMEOUT_BIT 14
104
105// Alert Test Register
106#define I2C_ALERT_TEST_REG_OFFSET 0xc
107#define I2C_ALERT_TEST_REG_RESVAL 0x80000000u
108#define I2C_ALERT_TEST_FATAL_FAULT_BIT 0
109#define I2C_ALERT_TEST_REGWEN_BIT 31
110
111// I2C Control Register
112#define I2C_CTRL_REG_OFFSET 0x10
113#define I2C_CTRL_REG_RESVAL 0x0u
114#define I2C_CTRL_ENABLEHOST_BIT 0
115#define I2C_CTRL_ENABLETARGET_BIT 1
116#define I2C_CTRL_LLPBK_BIT 2
117#define I2C_CTRL_NACK_ADDR_AFTER_TIMEOUT_BIT 3
118#define I2C_CTRL_ACK_CTRL_EN_BIT 4
119#define I2C_CTRL_MULTI_CONTROLLER_MONITOR_EN_BIT 5
120#define I2C_CTRL_TX_STRETCH_CTRL_EN_BIT 6
121
122// I2C Live Status Register for Host and Target modes
123#define I2C_STATUS_REG_OFFSET 0x14
124#define I2C_STATUS_REG_RESVAL 0x33cu
125#define I2C_STATUS_FMTFULL_BIT 0
126#define I2C_STATUS_RXFULL_BIT 1
127#define I2C_STATUS_FMTEMPTY_BIT 2
128#define I2C_STATUS_HOSTIDLE_BIT 3
129#define I2C_STATUS_TARGETIDLE_BIT 4
130#define I2C_STATUS_RXEMPTY_BIT 5
131#define I2C_STATUS_TXFULL_BIT 6
132#define I2C_STATUS_ACQFULL_BIT 7
133#define I2C_STATUS_TXEMPTY_BIT 8
134#define I2C_STATUS_ACQEMPTY_BIT 9
135#define I2C_STATUS_ACK_CTRL_STRETCH_BIT 10
136
137// I2C Read Data
138#define I2C_RDATA_REG_OFFSET 0x18
139#define I2C_RDATA_REG_RESVAL 0x0u
140#define I2C_RDATA_RDATA_MASK 0xffu
141#define I2C_RDATA_RDATA_OFFSET 0
142#define I2C_RDATA_RDATA_FIELD \
143 ((bitfield_field32_t) { .mask = I2C_RDATA_RDATA_MASK, .index = I2C_RDATA_RDATA_OFFSET })
144
145// I2C Host Format Data
146#define I2C_FDATA_REG_OFFSET 0x1c
147#define I2C_FDATA_REG_RESVAL 0x0u
148#define I2C_FDATA_FBYTE_MASK 0xffu
149#define I2C_FDATA_FBYTE_OFFSET 0
150#define I2C_FDATA_FBYTE_FIELD \
151 ((bitfield_field32_t) { .mask = I2C_FDATA_FBYTE_MASK, .index = I2C_FDATA_FBYTE_OFFSET })
152#define I2C_FDATA_START_BIT 8
153#define I2C_FDATA_STOP_BIT 9
154#define I2C_FDATA_READB_BIT 10
155#define I2C_FDATA_RCONT_BIT 11
156#define I2C_FDATA_NAKOK_BIT 12
157
158// I2C FIFO control register
159#define I2C_FIFO_CTRL_REG_OFFSET 0x20
160#define I2C_FIFO_CTRL_REG_RESVAL 0x0u
161#define I2C_FIFO_CTRL_RXRST_BIT 0
162#define I2C_FIFO_CTRL_FMTRST_BIT 1
163#define I2C_FIFO_CTRL_ACQRST_BIT 7
164#define I2C_FIFO_CTRL_TXRST_BIT 8
165
166// Host mode FIFO configuration
167#define I2C_HOST_FIFO_CONFIG_REG_OFFSET 0x24
168#define I2C_HOST_FIFO_CONFIG_REG_RESVAL 0x0u
169#define I2C_HOST_FIFO_CONFIG_RX_THRESH_MASK 0xfffu
170#define I2C_HOST_FIFO_CONFIG_RX_THRESH_OFFSET 0
171#define I2C_HOST_FIFO_CONFIG_RX_THRESH_FIELD \
172 ((bitfield_field32_t) { .mask = I2C_HOST_FIFO_CONFIG_RX_THRESH_MASK, .index = I2C_HOST_FIFO_CONFIG_RX_THRESH_OFFSET })
173#define I2C_HOST_FIFO_CONFIG_FMT_THRESH_MASK 0xfffu
174#define I2C_HOST_FIFO_CONFIG_FMT_THRESH_OFFSET 16
175#define I2C_HOST_FIFO_CONFIG_FMT_THRESH_FIELD \
176 ((bitfield_field32_t) { .mask = I2C_HOST_FIFO_CONFIG_FMT_THRESH_MASK, .index = I2C_HOST_FIFO_CONFIG_FMT_THRESH_OFFSET })
177
178// Target mode FIFO configuration
179#define I2C_TARGET_FIFO_CONFIG_REG_OFFSET 0x28
180#define I2C_TARGET_FIFO_CONFIG_REG_RESVAL 0x0u
181#define I2C_TARGET_FIFO_CONFIG_TX_THRESH_MASK 0xfffu
182#define I2C_TARGET_FIFO_CONFIG_TX_THRESH_OFFSET 0
183#define I2C_TARGET_FIFO_CONFIG_TX_THRESH_FIELD \
184 ((bitfield_field32_t) { .mask = I2C_TARGET_FIFO_CONFIG_TX_THRESH_MASK, .index = I2C_TARGET_FIFO_CONFIG_TX_THRESH_OFFSET })
185#define I2C_TARGET_FIFO_CONFIG_ACQ_THRESH_MASK 0xfffu
186#define I2C_TARGET_FIFO_CONFIG_ACQ_THRESH_OFFSET 16
187#define I2C_TARGET_FIFO_CONFIG_ACQ_THRESH_FIELD \
188 ((bitfield_field32_t) { .mask = I2C_TARGET_FIFO_CONFIG_ACQ_THRESH_MASK, .index = I2C_TARGET_FIFO_CONFIG_ACQ_THRESH_OFFSET })
189
190// Host mode FIFO status register
191#define I2C_HOST_FIFO_STATUS_REG_OFFSET 0x2c
192#define I2C_HOST_FIFO_STATUS_REG_RESVAL 0x0u
193#define I2C_HOST_FIFO_STATUS_FMTLVL_MASK 0xfffu
194#define I2C_HOST_FIFO_STATUS_FMTLVL_OFFSET 0
195#define I2C_HOST_FIFO_STATUS_FMTLVL_FIELD \
196 ((bitfield_field32_t) { .mask = I2C_HOST_FIFO_STATUS_FMTLVL_MASK, .index = I2C_HOST_FIFO_STATUS_FMTLVL_OFFSET })
197#define I2C_HOST_FIFO_STATUS_RXLVL_MASK 0xfffu
198#define I2C_HOST_FIFO_STATUS_RXLVL_OFFSET 16
199#define I2C_HOST_FIFO_STATUS_RXLVL_FIELD \
200 ((bitfield_field32_t) { .mask = I2C_HOST_FIFO_STATUS_RXLVL_MASK, .index = I2C_HOST_FIFO_STATUS_RXLVL_OFFSET })
201
202// Target mode FIFO status register
203#define I2C_TARGET_FIFO_STATUS_REG_OFFSET 0x30
204#define I2C_TARGET_FIFO_STATUS_REG_RESVAL 0x0u
205#define I2C_TARGET_FIFO_STATUS_TXLVL_MASK 0xfffu
206#define I2C_TARGET_FIFO_STATUS_TXLVL_OFFSET 0
207#define I2C_TARGET_FIFO_STATUS_TXLVL_FIELD \
208 ((bitfield_field32_t) { .mask = I2C_TARGET_FIFO_STATUS_TXLVL_MASK, .index = I2C_TARGET_FIFO_STATUS_TXLVL_OFFSET })
209#define I2C_TARGET_FIFO_STATUS_ACQLVL_MASK 0xfffu
210#define I2C_TARGET_FIFO_STATUS_ACQLVL_OFFSET 16
211#define I2C_TARGET_FIFO_STATUS_ACQLVL_FIELD \
212 ((bitfield_field32_t) { .mask = I2C_TARGET_FIFO_STATUS_ACQLVL_MASK, .index = I2C_TARGET_FIFO_STATUS_ACQLVL_OFFSET })
213
214// I2C Override Control Register
215#define I2C_OVRD_REG_OFFSET 0x34
216#define I2C_OVRD_REG_RESVAL 0x0u
217#define I2C_OVRD_TXOVRDEN_BIT 0
218#define I2C_OVRD_SCLVAL_BIT 1
219#define I2C_OVRD_SDAVAL_BIT 2
220
221// Oversampled RX values
222#define I2C_VAL_REG_OFFSET 0x38
223#define I2C_VAL_REG_RESVAL 0x0u
224#define I2C_VAL_SCL_RX_MASK 0xffffu
225#define I2C_VAL_SCL_RX_OFFSET 0
226#define I2C_VAL_SCL_RX_FIELD \
227 ((bitfield_field32_t) { .mask = I2C_VAL_SCL_RX_MASK, .index = I2C_VAL_SCL_RX_OFFSET })
228#define I2C_VAL_SDA_RX_MASK 0xffffu
229#define I2C_VAL_SDA_RX_OFFSET 16
230#define I2C_VAL_SDA_RX_FIELD \
231 ((bitfield_field32_t) { .mask = I2C_VAL_SDA_RX_MASK, .index = I2C_VAL_SDA_RX_OFFSET })
232
233// Detailed I2C Timings (directly corresponding to table 10 in the
234// I<sup>2</sup>C Specification (rev. 6)).
235#define I2C_TIMING0_REG_OFFSET 0x3c
236#define I2C_TIMING0_REG_RESVAL 0x0u
237#define I2C_TIMING0_THIGH_MASK 0x1fffu
238#define I2C_TIMING0_THIGH_OFFSET 0
239#define I2C_TIMING0_THIGH_FIELD \
240 ((bitfield_field32_t) { .mask = I2C_TIMING0_THIGH_MASK, .index = I2C_TIMING0_THIGH_OFFSET })
241#define I2C_TIMING0_TLOW_MASK 0x1fffu
242#define I2C_TIMING0_TLOW_OFFSET 16
243#define I2C_TIMING0_TLOW_FIELD \
244 ((bitfield_field32_t) { .mask = I2C_TIMING0_TLOW_MASK, .index = I2C_TIMING0_TLOW_OFFSET })
245
246// Detailed I2C Timings (directly corresponding to table 10 in the
247// I<sup>2</sup>C Specification (rev. 6)).
248#define I2C_TIMING1_REG_OFFSET 0x40
249#define I2C_TIMING1_REG_RESVAL 0x0u
250#define I2C_TIMING1_T_R_MASK 0x3ffu
251#define I2C_TIMING1_T_R_OFFSET 0
252#define I2C_TIMING1_T_R_FIELD \
253 ((bitfield_field32_t) { .mask = I2C_TIMING1_T_R_MASK, .index = I2C_TIMING1_T_R_OFFSET })
254#define I2C_TIMING1_T_F_MASK 0x1ffu
255#define I2C_TIMING1_T_F_OFFSET 16
256#define I2C_TIMING1_T_F_FIELD \
257 ((bitfield_field32_t) { .mask = I2C_TIMING1_T_F_MASK, .index = I2C_TIMING1_T_F_OFFSET })
258
259// Detailed I2C Timings (directly corresponding to table 10 in the
260// I<sup>2</sup>C Specification (rev. 6)).
261#define I2C_TIMING2_REG_OFFSET 0x44
262#define I2C_TIMING2_REG_RESVAL 0x0u
263#define I2C_TIMING2_TSU_STA_MASK 0x1fffu
264#define I2C_TIMING2_TSU_STA_OFFSET 0
265#define I2C_TIMING2_TSU_STA_FIELD \
266 ((bitfield_field32_t) { .mask = I2C_TIMING2_TSU_STA_MASK, .index = I2C_TIMING2_TSU_STA_OFFSET })
267#define I2C_TIMING2_THD_STA_MASK 0x1fffu
268#define I2C_TIMING2_THD_STA_OFFSET 16
269#define I2C_TIMING2_THD_STA_FIELD \
270 ((bitfield_field32_t) { .mask = I2C_TIMING2_THD_STA_MASK, .index = I2C_TIMING2_THD_STA_OFFSET })
271
272// Detailed I2C Timings (directly corresponding to table 10 in the
273// I<sup>2</sup>C Specification (rev. 6)).
274#define I2C_TIMING3_REG_OFFSET 0x48
275#define I2C_TIMING3_REG_RESVAL 0x0u
276#define I2C_TIMING3_TSU_DAT_MASK 0x1ffu
277#define I2C_TIMING3_TSU_DAT_OFFSET 0
278#define I2C_TIMING3_TSU_DAT_FIELD \
279 ((bitfield_field32_t) { .mask = I2C_TIMING3_TSU_DAT_MASK, .index = I2C_TIMING3_TSU_DAT_OFFSET })
280#define I2C_TIMING3_THD_DAT_MASK 0x1fffu
281#define I2C_TIMING3_THD_DAT_OFFSET 16
282#define I2C_TIMING3_THD_DAT_FIELD \
283 ((bitfield_field32_t) { .mask = I2C_TIMING3_THD_DAT_MASK, .index = I2C_TIMING3_THD_DAT_OFFSET })
284
285// Detailed I2C Timings (directly corresponding to table 10 in the
286// I<sup>2</sup>C Specification (rev. 6)).
287#define I2C_TIMING4_REG_OFFSET 0x4c
288#define I2C_TIMING4_REG_RESVAL 0x0u
289#define I2C_TIMING4_TSU_STO_MASK 0x1fffu
290#define I2C_TIMING4_TSU_STO_OFFSET 0
291#define I2C_TIMING4_TSU_STO_FIELD \
292 ((bitfield_field32_t) { .mask = I2C_TIMING4_TSU_STO_MASK, .index = I2C_TIMING4_TSU_STO_OFFSET })
293#define I2C_TIMING4_T_BUF_MASK 0x1fffu
294#define I2C_TIMING4_T_BUF_OFFSET 16
295#define I2C_TIMING4_T_BUF_FIELD \
296 ((bitfield_field32_t) { .mask = I2C_TIMING4_T_BUF_MASK, .index = I2C_TIMING4_T_BUF_OFFSET })
297
298// I2C clock stretching and bus timeout control.
299#define I2C_TIMEOUT_CTRL_REG_OFFSET 0x50
300#define I2C_TIMEOUT_CTRL_REG_RESVAL 0x0u
301#define I2C_TIMEOUT_CTRL_VAL_MASK 0x3fffffffu
302#define I2C_TIMEOUT_CTRL_VAL_OFFSET 0
303#define I2C_TIMEOUT_CTRL_VAL_FIELD \
304 ((bitfield_field32_t) { .mask = I2C_TIMEOUT_CTRL_VAL_MASK, .index = I2C_TIMEOUT_CTRL_VAL_OFFSET })
305#define I2C_TIMEOUT_CTRL_MODE_BIT 30
306#define I2C_TIMEOUT_CTRL_MODE_VALUE_STRETCH_TIMEOUT 0x0
307#define I2C_TIMEOUT_CTRL_MODE_VALUE_BUS_TIMEOUT 0x1
308#define I2C_TIMEOUT_CTRL_EN_BIT 31
309
310// I2C target address and mask pairs
311#define I2C_TARGET_ID_REG_OFFSET 0x54
312#define I2C_TARGET_ID_REG_RESVAL 0x0u
313#define I2C_TARGET_ID_ADDRESS0_MASK 0x7fu
314#define I2C_TARGET_ID_ADDRESS0_OFFSET 0
315#define I2C_TARGET_ID_ADDRESS0_FIELD \
316 ((bitfield_field32_t) { .mask = I2C_TARGET_ID_ADDRESS0_MASK, .index = I2C_TARGET_ID_ADDRESS0_OFFSET })
317#define I2C_TARGET_ID_MASK0_MASK 0x7fu
318#define I2C_TARGET_ID_MASK0_OFFSET 7
319#define I2C_TARGET_ID_MASK0_FIELD \
320 ((bitfield_field32_t) { .mask = I2C_TARGET_ID_MASK0_MASK, .index = I2C_TARGET_ID_MASK0_OFFSET })
321#define I2C_TARGET_ID_ADDRESS1_MASK 0x7fu
322#define I2C_TARGET_ID_ADDRESS1_OFFSET 14
323#define I2C_TARGET_ID_ADDRESS1_FIELD \
324 ((bitfield_field32_t) { .mask = I2C_TARGET_ID_ADDRESS1_MASK, .index = I2C_TARGET_ID_ADDRESS1_OFFSET })
325#define I2C_TARGET_ID_MASK1_MASK 0x7fu
326#define I2C_TARGET_ID_MASK1_OFFSET 21
327#define I2C_TARGET_ID_MASK1_FIELD \
328 ((bitfield_field32_t) { .mask = I2C_TARGET_ID_MASK1_MASK, .index = I2C_TARGET_ID_MASK1_OFFSET })
329
330// I2C target acquired data
331#define I2C_ACQDATA_REG_OFFSET 0x58
332#define I2C_ACQDATA_REG_RESVAL 0x0u
333#define I2C_ACQDATA_ABYTE_MASK 0xffu
334#define I2C_ACQDATA_ABYTE_OFFSET 0
335#define I2C_ACQDATA_ABYTE_FIELD \
336 ((bitfield_field32_t) { .mask = I2C_ACQDATA_ABYTE_MASK, .index = I2C_ACQDATA_ABYTE_OFFSET })
337#define I2C_ACQDATA_SIGNAL_MASK 0x7u
338#define I2C_ACQDATA_SIGNAL_OFFSET 8
339#define I2C_ACQDATA_SIGNAL_FIELD \
340 ((bitfield_field32_t) { .mask = I2C_ACQDATA_SIGNAL_MASK, .index = I2C_ACQDATA_SIGNAL_OFFSET })
341#define I2C_ACQDATA_SIGNAL_VALUE_NONE 0x0
342#define I2C_ACQDATA_SIGNAL_VALUE_START 0x1
343#define I2C_ACQDATA_SIGNAL_VALUE_STOP 0x2
344#define I2C_ACQDATA_SIGNAL_VALUE_RESTART 0x3
345#define I2C_ACQDATA_SIGNAL_VALUE_NACK 0x4
346#define I2C_ACQDATA_SIGNAL_VALUE_NACK_START 0x5
347#define I2C_ACQDATA_SIGNAL_VALUE_NACK_STOP 0x6
348
349// I2C target transmit data
350#define I2C_TXDATA_REG_OFFSET 0x5c
351#define I2C_TXDATA_REG_RESVAL 0x0u
352#define I2C_TXDATA_TXDATA_MASK 0xffu
353#define I2C_TXDATA_TXDATA_OFFSET 0
354#define I2C_TXDATA_TXDATA_FIELD \
355 ((bitfield_field32_t) { .mask = I2C_TXDATA_TXDATA_MASK, .index = I2C_TXDATA_TXDATA_OFFSET })
356
357// I2C host clock generation timeout value (in units of input clock
358// frequency).
359#define I2C_HOST_TIMEOUT_CTRL_REG_OFFSET 0x60
360#define I2C_HOST_TIMEOUT_CTRL_REG_RESVAL 0x0u
361#define I2C_HOST_TIMEOUT_CTRL_HOST_TIMEOUT_CTRL_MASK 0xfffffu
362#define I2C_HOST_TIMEOUT_CTRL_HOST_TIMEOUT_CTRL_OFFSET 0
363#define I2C_HOST_TIMEOUT_CTRL_HOST_TIMEOUT_CTRL_FIELD \
364 ((bitfield_field32_t) { .mask = I2C_HOST_TIMEOUT_CTRL_HOST_TIMEOUT_CTRL_MASK, .index = I2C_HOST_TIMEOUT_CTRL_HOST_TIMEOUT_CTRL_OFFSET })
365
366// I2C target internal stretching timeout control.
367#define I2C_TARGET_TIMEOUT_CTRL_REG_OFFSET 0x64
368#define I2C_TARGET_TIMEOUT_CTRL_REG_RESVAL 0x0u
369#define I2C_TARGET_TIMEOUT_CTRL_VAL_MASK 0x7fffffffu
370#define I2C_TARGET_TIMEOUT_CTRL_VAL_OFFSET 0
371#define I2C_TARGET_TIMEOUT_CTRL_VAL_FIELD \
372 ((bitfield_field32_t) { .mask = I2C_TARGET_TIMEOUT_CTRL_VAL_MASK, .index = I2C_TARGET_TIMEOUT_CTRL_VAL_OFFSET })
373#define I2C_TARGET_TIMEOUT_CTRL_EN_BIT 31
374
375// Number of times the I2C target has NACK'ed a new transaction since the
376// last read of this register.
377#define I2C_TARGET_NACK_COUNT_REG_OFFSET 0x68
378#define I2C_TARGET_NACK_COUNT_REG_RESVAL 0x0u
379#define I2C_TARGET_NACK_COUNT_TARGET_NACK_COUNT_MASK 0xffu
380#define I2C_TARGET_NACK_COUNT_TARGET_NACK_COUNT_OFFSET 0
381#define I2C_TARGET_NACK_COUNT_TARGET_NACK_COUNT_FIELD \
382 ((bitfield_field32_t) { .mask = I2C_TARGET_NACK_COUNT_TARGET_NACK_COUNT_MASK, .index = I2C_TARGET_NACK_COUNT_TARGET_NACK_COUNT_OFFSET })
383
384// Controls for mid-transfer (N)ACK phase handling
385#define I2C_TARGET_ACK_CTRL_REG_OFFSET 0x6c
386#define I2C_TARGET_ACK_CTRL_REG_RESVAL 0x0u
387#define I2C_TARGET_ACK_CTRL_NBYTES_MASK 0x1ffu
388#define I2C_TARGET_ACK_CTRL_NBYTES_OFFSET 0
389#define I2C_TARGET_ACK_CTRL_NBYTES_FIELD \
390 ((bitfield_field32_t) { .mask = I2C_TARGET_ACK_CTRL_NBYTES_MASK, .index = I2C_TARGET_ACK_CTRL_NBYTES_OFFSET })
391#define I2C_TARGET_ACK_CTRL_NACK_BIT 31
392
393// The data byte pending to be written to the ACQ FIFO.
394#define I2C_ACQ_FIFO_NEXT_DATA_REG_OFFSET 0x70
395#define I2C_ACQ_FIFO_NEXT_DATA_REG_RESVAL 0x0u
396#define I2C_ACQ_FIFO_NEXT_DATA_ACQ_FIFO_NEXT_DATA_MASK 0xffu
397#define I2C_ACQ_FIFO_NEXT_DATA_ACQ_FIFO_NEXT_DATA_OFFSET 0
398#define I2C_ACQ_FIFO_NEXT_DATA_ACQ_FIFO_NEXT_DATA_FIELD \
399 ((bitfield_field32_t) { .mask = I2C_ACQ_FIFO_NEXT_DATA_ACQ_FIFO_NEXT_DATA_MASK, .index = I2C_ACQ_FIFO_NEXT_DATA_ACQ_FIFO_NEXT_DATA_OFFSET })
400
401// Timeout in Host-Mode for an unhandled NACK before hardware automatically
402// ends the transaction.
403#define I2C_HOST_NACK_HANDLER_TIMEOUT_REG_OFFSET 0x74
404#define I2C_HOST_NACK_HANDLER_TIMEOUT_REG_RESVAL 0x0u
405#define I2C_HOST_NACK_HANDLER_TIMEOUT_VAL_MASK 0x7fffffffu
406#define I2C_HOST_NACK_HANDLER_TIMEOUT_VAL_OFFSET 0
407#define I2C_HOST_NACK_HANDLER_TIMEOUT_VAL_FIELD \
408 ((bitfield_field32_t) { .mask = I2C_HOST_NACK_HANDLER_TIMEOUT_VAL_MASK, .index = I2C_HOST_NACK_HANDLER_TIMEOUT_VAL_OFFSET })
409#define I2C_HOST_NACK_HANDLER_TIMEOUT_EN_BIT 31
410
411// Latched events that explain why the controller halted.
412#define I2C_CONTROLLER_EVENTS_REG_OFFSET 0x78
413#define I2C_CONTROLLER_EVENTS_REG_RESVAL 0x0u
414#define I2C_CONTROLLER_EVENTS_NACK_BIT 0
415#define I2C_CONTROLLER_EVENTS_UNHANDLED_NACK_TIMEOUT_BIT 1
416#define I2C_CONTROLLER_EVENTS_BUS_TIMEOUT_BIT 2
417#define I2C_CONTROLLER_EVENTS_ARBITRATION_LOST_BIT 3
418
419// Latched events that can cause the target module to stretch the clock at
420// the beginning of a read transfer.
421#define I2C_TARGET_EVENTS_REG_OFFSET 0x7c
422#define I2C_TARGET_EVENTS_REG_RESVAL 0x0u
423#define I2C_TARGET_EVENTS_TX_PENDING_BIT 0
424#define I2C_TARGET_EVENTS_BUS_TIMEOUT_BIT 1
425#define I2C_TARGET_EVENTS_ARBITRATION_LOST_BIT 2
426
427#ifdef __cplusplus
428} // extern "C"
429#endif
430#endif // _I2C_REG_DEFS_
431// End generated register defines for i2c