1 /* SPDX-License-Identifier: Apache-2.0
2 * Copyright(c) 2023 Cisco Systems, Inc.
5 #ifndef _ENA_REG_DEFS_H_
6 #define _ENA_REG_DEFS_H_
8 #include <vppinfra/clib.h>
9 #include <vppinfra/error_bootstrap.h>
11 #define ena_reg_version_t_fields \
15 #define ena_reg_controller_version_t_fields \
21 #define ena_reg_caps_t_fields \
22 __ (1, contiguous_queue_required) \
23 __ (5, reset_timeout) \
25 __ (8, dma_addr_width) \
28 #define ena_reg_aq_caps_t_fields \
32 #define ena_reg_acq_caps_t_fields \
36 #define ena_reg_aenq_caps_t_fields \
40 #define ena_reg_dev_ctl_t_fields \
48 #define ena_reg_dev_sts_t_fields \
50 __ (1, aq_restart_in_progress) \
51 __ (1, aq_restart_finished) \
52 __ (1, reset_in_progress) \
53 __ (1, reset_finished) \
55 __ (1, quiescent_state_in_progress) \
56 __ (1, quiescent_state_achieved)
58 #define ena_reg_mmio_reg_read_t_fields \
62 #define ena_reg_rss_ind_entry_update_t_fields \
66 #define __(l, f) u32 f : l;
78 _ (ena_reg_controller_version_t)
81 _ (ena_reg_acq_caps_t)
82 _ (ena_reg_aenq_caps_t)
85 _ (ena_reg_mmio_reg_read_t)
86 _ (ena_reg_rss_ind_entry_update_t)
90 #define foreach_ena_reg \
91 _ (0x00, 1, VERSION, ena_reg_version_t_fields) \
92 _ (0x04, 1, CONTROLLER_VERSION, ena_reg_controller_version_t_fields) \
93 _ (0x08, 1, CAPS, ena_reg_caps_t_fields) \
94 _ (0x0c, 1, EXT_CAPS, ) \
95 _ (0x10, 1, AQ_BASE_LO, ) \
96 _ (0x14, 1, AQ_BASE_HI, ) \
97 _ (0x18, 1, AQ_CAPS, ena_reg_aq_caps_t_fields) \
98 _ (0x20, 1, ACQ_BASE_LO, ) \
99 _ (0x24, 1, ACQ_BASE_HI, ) \
100 _ (0x28, 1, ACQ_CAPS, ena_reg_acq_caps_t_fields) \
101 _ (0x2c, 0, AQ_DB, ) \
102 _ (0x30, 0, ACQ_TAIL, ) \
103 _ (0x34, 1, AENQ_CAPS, ena_reg_aenq_caps_t_fields) \
104 _ (0x38, 0, AENQ_BASE_LO, ) \
105 _ (0x3c, 0, AENQ_BASE_HI, ) \
106 _ (0x40, 0, AENQ_HEAD_DB, ) \
107 _ (0x44, 0, AENQ_TAIL, ) \
108 _ (0x4c, 1, INTR_MASK, ) \
109 _ (0x54, 0, DEV_CTL, ena_reg_dev_ctl_t_fields) \
110 _ (0x58, 1, DEV_STS, ena_reg_dev_sts_t_fields) \
111 _ (0x5c, 0, MMIO_REG_READ, ena_reg_mmio_reg_read_t_fields) \
112 _ (0x60, 0, MMIO_RESP_LO, ) \
113 _ (0x64, 0, MMIO_RESP_HI, ) \
114 _ (0x68, 0, RSS_IND_ENTRY_UPDATE, ena_reg_rss_ind_entry_update_t_fields)
118 #define _(o, r, n, f) ENA_REG_##n = o,
123 #define foreach_ena_reset_reason \
125 _ (1, KEEP_ALIVE_TO) \
127 _ (3, MISS_TX_CMPL) \
128 _ (4, INV_RX_REQ_ID) \
129 _ (5, INV_TX_REQ_ID) \
130 _ (6, TOO_MANY_RX_DESCS) \
132 _ (8, DRIVER_INVALID_STATE) \
134 _ (10, OS_NETDEV_WD) \
136 _ (12, USER_TRIGGER) \
138 _ (14, MISS_INTERRUPT) \
139 _ (15, SUSPECTED_POLL_STARVATION) \
140 _ (16, RX_DESCRIPTOR_MALFORMED) \
141 _ (17, TX_DESCRIPTOR_MALFORMED)
145 #define _(o, n) ENA_RESET_REASON_##n = o,
146 foreach_ena_reset_reason
148 } ena_reset_reason_t;
150 #endif /* _ENA_REG_DEFS_H_ */