1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
3 *
4 * Copyright (c) 2013-2014 Qlogic Corporation
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27 * POSSIBILITY OF SUCH DAMAGE.
28 *
29 * $FreeBSD$
30 */
31
32 /*
33 * File: qls_dump.h
34 */
35
36 #ifndef _QLS_DUMP_H_
37 #define _QLS_DUMP_H_
38
39 #define Q81_MPID_COOKIE 0x5555aaaa
40
41 typedef struct qls_mpid_glbl_hdr
42 {
43 uint32_t cookie;
44 uint8_t id[16];
45 uint32_t time_lo;
46 uint32_t time_hi;
47 uint32_t img_size;
48 uint32_t hdr_size;
49 uint8_t info[220];
50 } qls_mpid_glbl_hdr_t;
51
52 typedef struct qls_mpid_seg_hdr
53 {
54 uint32_t cookie;
55 uint32_t seg_num;
56 uint32_t seg_size;
57 uint32_t extra;
58 uint8_t desc[16];
59 } qls_mpid_seg_hdr_t;
60
61 enum
62 {
63 Q81_MPI_CORE_REGS_ADDR = 0x00030000,
64 Q81_MPI_CORE_REGS_CNT = 127,
65 Q81_MPI_CORE_SH_REGS_CNT = 16,
66 Q81_TEST_REGS_ADDR = 0x00001000,
67 Q81_TEST_REGS_CNT = 23,
68 Q81_RMII_REGS_ADDR = 0x00001040,
69 Q81_RMII_REGS_CNT = 64,
70 Q81_FCMAC1_REGS_ADDR = 0x00001080,
71 Q81_FCMAC2_REGS_ADDR = 0x000010c0,
72 Q81_FCMAC_REGS_CNT = 64,
73 Q81_FC1_MBX_REGS_ADDR = 0x00001100,
74 Q81_FC2_MBX_REGS_ADDR = 0x00001240,
75 Q81_FC_MBX_REGS_CNT = 64,
76 Q81_IDE_REGS_ADDR = 0x00001140,
77 Q81_IDE_REGS_CNT = 64,
78 Q81_NIC1_MBX_REGS_ADDR = 0x00001180,
79 Q81_NIC2_MBX_REGS_ADDR = 0x00001280,
80 Q81_NIC_MBX_REGS_CNT = 64,
81 Q81_SMBUS_REGS_ADDR = 0x00001200,
82 Q81_SMBUS_REGS_CNT = 64,
83 Q81_I2C_REGS_ADDR = 0x00001fc0,
84 Q81_I2C_REGS_CNT = 64,
85 Q81_MEMC_REGS_ADDR = 0x00003000,
86 Q81_MEMC_REGS_CNT = 256,
87 Q81_PBUS_REGS_ADDR = 0x00007c00,
88 Q81_PBUS_REGS_CNT = 256,
89 Q81_MDE_REGS_ADDR = 0x00010000,
90 Q81_MDE_REGS_CNT = 6,
91 Q81_CODE_RAM_ADDR = 0x00020000,
92 Q81_CODE_RAM_CNT = 0x2000,
93 Q81_MEMC_RAM_ADDR = 0x00100000,
94 Q81_MEMC_RAM_CNT = 0x2000,
95 Q81_XGMAC_REGISTER_END = 0x740,
96 };
97
98 #define Q81_PROBE_DATA_LENGTH_WORDS ((64*2) + 1)
99 #define Q81_NUMBER_OF_PROBES 34
100
101 #define Q81_PROBE_SIZE \
102 (Q81_PROBE_DATA_LENGTH_WORDS * Q81_NUMBER_OF_PROBES)
103
104 #define Q81_NUMBER_ROUTING_REG_ENTRIES 48
105 #define Q81_WORDS_PER_ROUTING_REG_ENTRY 4
106
107 #define Q81_ROUT_REG_SIZE \
108 (Q81_NUMBER_ROUTING_REG_ENTRIES * Q81_WORDS_PER_ROUTING_REG_ENTRY)
109
110 #define Q81_MAC_PROTOCOL_REGISTER_WORDS ((512 * 3) + (32 * 2) + (4096 * 1) +\
111 (4096 * 1) + (4 * 2) +\
112 (8 * 2) + (16 * 1) +\
113 (4 * 1) + (4 * 4) + (4 * 1))
114
115 #define Q81_WORDS_PER_MAC_PROT_ENTRY 2
116 #define Q81_MAC_REG_SIZE \
117 (Q81_MAC_PROTOCOL_REGISTER_WORDS * Q81_WORDS_PER_MAC_PROT_ENTRY)
118
119 #define Q81_MAX_SEMAPHORE_FUNCTIONS 5
120
121 #define Q81_WQC_WORD_SIZE 6
122 #define Q81_NUMBER_OF_WQCS 128
123 #define Q81_WQ_SIZE (Q81_WQC_WORD_SIZE * Q81_NUMBER_OF_WQCS)
124
125 #define Q81_CQC_WORD_SIZE 13
126 #define Q81_NUMBER_OF_CQCS 128
127 #define Q81_CQ_SIZE (Q81_CQC_WORD_SIZE * Q81_NUMBER_OF_CQCS)
128
129 struct qls_mpi_coredump {
130 qls_mpid_glbl_hdr_t mpi_global_header;
131
132 qls_mpid_seg_hdr_t core_regs_seg_hdr;
133 uint32_t mpi_core_regs[Q81_MPI_CORE_REGS_CNT];
134 uint32_t mpi_core_sh_regs[Q81_MPI_CORE_SH_REGS_CNT];
135
136 qls_mpid_seg_hdr_t test_logic_regs_seg_hdr;
137 uint32_t test_logic_regs[Q81_TEST_REGS_CNT];
138
139 qls_mpid_seg_hdr_t rmii_regs_seg_hdr;
140 uint32_t rmii_regs[Q81_RMII_REGS_CNT];
141
142 qls_mpid_seg_hdr_t fcmac1_regs_seg_hdr;
143 uint32_t fcmac1_regs[Q81_FCMAC_REGS_CNT];
144
145 qls_mpid_seg_hdr_t fcmac2_regs_seg_hdr;
146 uint32_t fcmac2_regs[Q81_FCMAC_REGS_CNT];
147
148 qls_mpid_seg_hdr_t fc1_mbx_regs_seg_hdr;
149 uint32_t fc1_mbx_regs[Q81_FC_MBX_REGS_CNT];
150
151 qls_mpid_seg_hdr_t ide_regs_seg_hdr;
152 uint32_t ide_regs[Q81_IDE_REGS_CNT];
153
154 qls_mpid_seg_hdr_t nic1_mbx_regs_seg_hdr;
155 uint32_t nic1_mbx_regs[Q81_NIC_MBX_REGS_CNT];
156
157 qls_mpid_seg_hdr_t smbus_regs_seg_hdr;
158 uint32_t smbus_regs[Q81_SMBUS_REGS_CNT];
159
160 qls_mpid_seg_hdr_t fc2_mbx_regs_seg_hdr;
161 uint32_t fc2_mbx_regs[Q81_FC_MBX_REGS_CNT];
162
163 qls_mpid_seg_hdr_t nic2_mbx_regs_seg_hdr;
164 uint32_t nic2_mbx_regs[Q81_NIC_MBX_REGS_CNT];
165
166 qls_mpid_seg_hdr_t i2c_regs_seg_hdr;
167 uint32_t i2c_regs[Q81_I2C_REGS_CNT];
168
169 qls_mpid_seg_hdr_t memc_regs_seg_hdr;
170 uint32_t memc_regs[Q81_MEMC_REGS_CNT];
171
172 qls_mpid_seg_hdr_t pbus_regs_seg_hdr;
173 uint32_t pbus_regs[Q81_PBUS_REGS_CNT];
174
175 qls_mpid_seg_hdr_t mde_regs_seg_hdr;
176 uint32_t mde_regs[Q81_MDE_REGS_CNT];
177
178 qls_mpid_seg_hdr_t xaui1_an_hdr;
179 uint32_t serdes1_xaui_an[14];
180
181 qls_mpid_seg_hdr_t xaui1_hss_pcs_hdr;
182 uint32_t serdes1_xaui_hss_pcs[33];
183
184 qls_mpid_seg_hdr_t xfi1_an_hdr;
185 uint32_t serdes1_xfi_an[14];
186
187 qls_mpid_seg_hdr_t xfi1_train_hdr;
188 uint32_t serdes1_xfi_train[12];
189
190 qls_mpid_seg_hdr_t xfi1_hss_pcs_hdr;
191 uint32_t serdes1_xfi_hss_pcs[15];
192
193 qls_mpid_seg_hdr_t xfi1_hss_tx_hdr;
194 uint32_t serdes1_xfi_hss_tx[32];
195
196 qls_mpid_seg_hdr_t xfi1_hss_rx_hdr;
197 uint32_t serdes1_xfi_hss_rx[32];
198
199 qls_mpid_seg_hdr_t xfi1_hss_pll_hdr;
200 uint32_t serdes1_xfi_hss_pll[32];
201
202 qls_mpid_seg_hdr_t xaui2_an_hdr;
203 uint32_t serdes2_xaui_an[14];
204
205 qls_mpid_seg_hdr_t xaui2_hss_pcs_hdr;
206 uint32_t serdes2_xaui_hss_pcs[33];
207
208 qls_mpid_seg_hdr_t xfi2_an_hdr;
209 uint32_t serdes2_xfi_an[14];
210
211 qls_mpid_seg_hdr_t xfi2_train_hdr;
212 uint32_t serdes2_xfi_train[12];
213
214 qls_mpid_seg_hdr_t xfi2_hss_pcs_hdr;
215 uint32_t serdes2_xfi_hss_pcs[15];
216
217 qls_mpid_seg_hdr_t xfi2_hss_tx_hdr;
218 uint32_t serdes2_xfi_hss_tx[32];
219
220 qls_mpid_seg_hdr_t xfi2_hss_rx_hdr;
221 uint32_t serdes2_xfi_hss_rx[32];
222
223 qls_mpid_seg_hdr_t xfi2_hss_pll_hdr;
224 uint32_t serdes2_xfi_hss_pll[32];
225
226 qls_mpid_seg_hdr_t nic1_regs_seg_hdr;
227 uint32_t nic1_regs[64];
228
229 qls_mpid_seg_hdr_t nic2_regs_seg_hdr;
230 uint32_t nic2_regs[64];
231
232 qls_mpid_seg_hdr_t intr_states_seg_hdr;
233 uint32_t intr_states[MAX_RX_RINGS];
234
235 qls_mpid_seg_hdr_t xgmac1_seg_hdr;
236 uint32_t xgmac1[Q81_XGMAC_REGISTER_END];
237
238 qls_mpid_seg_hdr_t xgmac2_seg_hdr;
239 uint32_t xgmac2[Q81_XGMAC_REGISTER_END];
240
241 qls_mpid_seg_hdr_t probe_dump_seg_hdr;
242 uint32_t probe_dump[Q81_PROBE_SIZE];
243
244 qls_mpid_seg_hdr_t routing_reg_seg_hdr;
245 uint32_t routing_regs[Q81_ROUT_REG_SIZE];
246
247 qls_mpid_seg_hdr_t mac_prot_reg_seg_hdr;
248 uint32_t mac_prot_regs[Q81_MAC_REG_SIZE];
249
250 qls_mpid_seg_hdr_t sem_regs_seg_hdr;
251 uint32_t sem_regs[Q81_MAX_SEMAPHORE_FUNCTIONS];
252
253 qls_mpid_seg_hdr_t ets_seg_hdr;
254 uint32_t ets[8+2];
255
256 qls_mpid_seg_hdr_t wqc1_seg_hdr;
257 uint32_t wqc1[Q81_WQ_SIZE];
258
259 qls_mpid_seg_hdr_t cqc1_seg_hdr;
260 uint32_t cqc1[Q81_CQ_SIZE];
261
262 qls_mpid_seg_hdr_t wqc2_seg_hdr;
263 uint32_t wqc2[Q81_WQ_SIZE];
264
265 qls_mpid_seg_hdr_t cqc2_seg_hdr;
266 uint32_t cqc2[Q81_CQ_SIZE];
267
268 qls_mpid_seg_hdr_t code_ram_seg_hdr;
269 uint32_t code_ram[Q81_CODE_RAM_CNT];
270
271 qls_mpid_seg_hdr_t memc_ram_seg_hdr;
272 uint32_t memc_ram[Q81_MEMC_RAM_CNT];
273 };
274 typedef struct qls_mpi_coredump qls_mpi_coredump_t;
275
276 #define Q81_BAD_DATA 0xDEADBEEF
277
278 #endif /* #ifndef _QLS_DUMP_H_ */
Cache object: e3dcdfe9b1dbf96d2c224830f983bfd3
|