1*7e6ad469SVishal Kulkarni /*
2*7e6ad469SVishal Kulkarni  * This file and its contents are supplied under the terms of the
3*7e6ad469SVishal Kulkarni  * Common Development and Distribution License ("CDDL"), version 1.0.
4*7e6ad469SVishal Kulkarni  * You may only use this file in accordance with the terms of version
5*7e6ad469SVishal Kulkarni  * 1.0 of the CDDL.
6*7e6ad469SVishal Kulkarni  *
7*7e6ad469SVishal Kulkarni  * A full copy of the text of the CDDL should have accompanied this
8*7e6ad469SVishal Kulkarni  * source. A copy of the CDDL is also available via the Internet at
9*7e6ad469SVishal Kulkarni  * http://www.illumos.org/license/CDDL.
10*7e6ad469SVishal Kulkarni  */
11*7e6ad469SVishal Kulkarni 
12*7e6ad469SVishal Kulkarni /*-
13*7e6ad469SVishal Kulkarni  * Copyright (c) 2017 Chelsio Communications, Inc.
14*7e6ad469SVishal Kulkarni  * All rights reserved.
15*7e6ad469SVishal Kulkarni  *
16*7e6ad469SVishal Kulkarni  * Redistribution and use in source and binary forms, with or without
17*7e6ad469SVishal Kulkarni  * modification, are permitted provided that the following conditions
18*7e6ad469SVishal Kulkarni  * are met:
19*7e6ad469SVishal Kulkarni  * 1. Redistributions of source code must retain the above copyright
20*7e6ad469SVishal Kulkarni  *    notice, this list of conditions and the following disclaimer.
21*7e6ad469SVishal Kulkarni  * 2. Redistributions in binary form must reproduce the above copyright
22*7e6ad469SVishal Kulkarni  *    notice, this list of conditions and the following disclaimer in the
23*7e6ad469SVishal Kulkarni  *    documentation and/or other materials provided with the distribution.
24*7e6ad469SVishal Kulkarni  *
25*7e6ad469SVishal Kulkarni  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
26*7e6ad469SVishal Kulkarni  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27*7e6ad469SVishal Kulkarni  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28*7e6ad469SVishal Kulkarni  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
29*7e6ad469SVishal Kulkarni  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30*7e6ad469SVishal Kulkarni  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31*7e6ad469SVishal Kulkarni  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32*7e6ad469SVishal Kulkarni  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33*7e6ad469SVishal Kulkarni  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34*7e6ad469SVishal Kulkarni  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35*7e6ad469SVishal Kulkarni  * SUCH DAMAGE.
36*7e6ad469SVishal Kulkarni  */
37*7e6ad469SVishal Kulkarni 
38*7e6ad469SVishal Kulkarni #ifndef __CUDBG_ENTITY_H__
39*7e6ad469SVishal Kulkarni #define __CUDBG_ENTITY_H__
40*7e6ad469SVishal Kulkarni 
41*7e6ad469SVishal Kulkarni #include "common.h"
42*7e6ad469SVishal Kulkarni 
43*7e6ad469SVishal Kulkarni #ifdef __GNUC__
44*7e6ad469SVishal Kulkarni #define ATTRIBUTE_UNUSED __attribute__ ((unused))
45*7e6ad469SVishal Kulkarni #else
46*7e6ad469SVishal Kulkarni #define ATTRIBUTE_UNUSED
47*7e6ad469SVishal Kulkarni #endif
48*7e6ad469SVishal Kulkarni 
49*7e6ad469SVishal Kulkarni #define MC0_FLAG    1
50*7e6ad469SVishal Kulkarni #define MC1_FLAG    2
51*7e6ad469SVishal Kulkarni #define EDC0_FLAG   3
52*7e6ad469SVishal Kulkarni #define EDC1_FLAG   4
53*7e6ad469SVishal Kulkarni 
54*7e6ad469SVishal Kulkarni #define NUM_PCIE_CONFIG_REGS 0x61
55*7e6ad469SVishal Kulkarni #define CUDBG_CTXT_SIZE_BYTES 24
56*7e6ad469SVishal Kulkarni #define CUDBG_MAX_INGRESS_QIDS 65536
57*7e6ad469SVishal Kulkarni #define CUDBG_MAX_FL_QIDS 2048
58*7e6ad469SVishal Kulkarni #define CUDBG_MAX_CNM_QIDS 1024
59*7e6ad469SVishal Kulkarni #define CUDBG_LOWMEM_MAX_CTXT_QIDS 256
60*7e6ad469SVishal Kulkarni #define ETH_ALEN 6
61*7e6ad469SVishal Kulkarni #define CUDBG_MAX_RPLC_SIZE 128
62*7e6ad469SVishal Kulkarni #define CUDBG_NUM_REQ_REGS 17
63*7e6ad469SVishal Kulkarni #define CUDBG_MAX_TCAM_TID 0x800
64*7e6ad469SVishal Kulkarni #define CUDBG_NUM_ULPTX 11
65*7e6ad469SVishal Kulkarni 
66*7e6ad469SVishal Kulkarni #define SN_REG_ADDR 0x183f
67*7e6ad469SVishal Kulkarni #define BN_REG_ADDR 0x1819
68*7e6ad469SVishal Kulkarni #define NA_REG_ADDR 0x185a
69*7e6ad469SVishal Kulkarni #define MN_REG_ADDR 0x1803
70*7e6ad469SVishal Kulkarni 
71*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP0 0x1111c
72*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP1 0x11120
73*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP2 0x11124
74*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP3 0x11128
75*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP4 0x11300
76*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP5 0x11304
77*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP6 0x11308
78*7e6ad469SVishal Kulkarni #define A_MPS_VF_RPLCT_MAP7 0x1130c
79*7e6ad469SVishal Kulkarni 
80*7e6ad469SVishal Kulkarni #define PORT_TYPE_ADDR 0x1869
81*7e6ad469SVishal Kulkarni #define PORT_TYPE_LEN 8
82*7e6ad469SVishal Kulkarni 
83*7e6ad469SVishal Kulkarni /* For T6 */
84*7e6ad469SVishal Kulkarni #define SN_T6_ADDR 0x83f
85*7e6ad469SVishal Kulkarni #define BN_T6_ADDR 0x819
86*7e6ad469SVishal Kulkarni #define NA_T6_ADDR 0x85a
87*7e6ad469SVishal Kulkarni #define MN_T6_ADDR 0x803
88*7e6ad469SVishal Kulkarni 
89*7e6ad469SVishal Kulkarni #define SN_MAX_LEN	 24
90*7e6ad469SVishal Kulkarni #define BN_MAX_LEN	 16
91*7e6ad469SVishal Kulkarni #define NA_MAX_LEN	 12
92*7e6ad469SVishal Kulkarni #define MN_MAX_LEN	 16
93*7e6ad469SVishal Kulkarni #define MAX_VPD_DATA_LEN 32
94*7e6ad469SVishal Kulkarni 
95*7e6ad469SVishal Kulkarni #define VPD_VER_ADDR     0x18c7
96*7e6ad469SVishal Kulkarni #define VPD_VER_LEN      2
97*7e6ad469SVishal Kulkarni #define SCFG_VER_ADDR    0x06
98*7e6ad469SVishal Kulkarni #define SCFG_VER_LEN     4
99*7e6ad469SVishal Kulkarni 
100*7e6ad469SVishal Kulkarni #define CUDBG_CIM_BUSY_BIT (1 << 17)
101*7e6ad469SVishal Kulkarni 
102*7e6ad469SVishal Kulkarni #define CUDBG_CHAC_PBT_ADDR 0x2800
103*7e6ad469SVishal Kulkarni #define CUDBG_CHAC_PBT_LRF  0x3000
104*7e6ad469SVishal Kulkarni #define CUDBG_CHAC_PBT_DATA 0x3800
105*7e6ad469SVishal Kulkarni #define CUDBG_PBT_DYNAMIC_ENTRIES 8
106*7e6ad469SVishal Kulkarni #define CUDBG_PBT_STATIC_ENTRIES 16
107*7e6ad469SVishal Kulkarni #define CUDBG_LRF_ENTRIES 8
108*7e6ad469SVishal Kulkarni #define CUDBG_PBT_DATA_ENTRIES 512
109*7e6ad469SVishal Kulkarni 
110*7e6ad469SVishal Kulkarni #define CUDBG_ENTITY_SIGNATURE 0xCCEDB001
111*7e6ad469SVishal Kulkarni #define CUDBG_TID_INFO_REV 1
112*7e6ad469SVishal Kulkarni #define CUDBG_MAC_STATS_REV 1
113*7e6ad469SVishal Kulkarni #define CUDBG_ULPTX_LA_REV 1
114*7e6ad469SVishal Kulkarni #define CUDBG_MEMINFO_REV 1
115*7e6ad469SVishal Kulkarni 
116*7e6ad469SVishal Kulkarni #define CUDBG_ULPTX_LA_REV 1
117*7e6ad469SVishal Kulkarni 
118*7e6ad469SVishal Kulkarni #define CUDBG_T6_CLIP 1536
119*7e6ad469SVishal Kulkarni #define CUDBG_MAX_TID_COMP_EN 6144
120*7e6ad469SVishal Kulkarni #define CUDBG_MAX_TID_COMP_DIS 3072
121*7e6ad469SVishal Kulkarni #define CUDBG_NUM_ULPTX_READ 512
122*7e6ad469SVishal Kulkarni #define CUDBG_NUM_ULPTX_ASIC 6
123*7e6ad469SVishal Kulkarni #define CUDBG_NUM_ULPTX_ASIC_READ 128
124*7e6ad469SVishal Kulkarni 
125*7e6ad469SVishal Kulkarni #ifndef ARRAY_SIZE
126*7e6ad469SVishal Kulkarni #define ARRAY_SIZE(_a)  (sizeof((_a)) / sizeof((_a)[0]))
127*7e6ad469SVishal Kulkarni #endif
128*7e6ad469SVishal Kulkarni 
129*7e6ad469SVishal Kulkarni enum cudbg_qdesc_qtype {
130*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_UNKNOWN = 0,
131*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_NIC_TXQ,
132*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_NIC_RXQ,
133*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_NIC_FLQ,
134*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_CTRLQ,
135*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_FWEVTQ,
136*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_INTRQ,
137*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_PTP_TXQ,
138*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_OFLD_TXQ,
139*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_RDMA_RXQ,
140*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_RDMA_FLQ,
141*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_RDMA_CIQ,
142*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_ISCSI_RXQ,
143*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_ISCSI_FLQ,
144*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_ISCSIT_RXQ,
145*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_ISCSIT_FLQ,
146*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_CRYPTO_TXQ,
147*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_CRYPTO_RXQ,
148*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_CRYPTO_FLQ,
149*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_TLS_RXQ,
150*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_TLS_FLQ,
151*7e6ad469SVishal Kulkarni 	CUDBG_QTYPE_MAX,
152*7e6ad469SVishal Kulkarni };
153*7e6ad469SVishal Kulkarni 
154*7e6ad469SVishal Kulkarni struct cudbg_pbt_tables {
155*7e6ad469SVishal Kulkarni 	u32 pbt_dynamic[CUDBG_PBT_DYNAMIC_ENTRIES];
156*7e6ad469SVishal Kulkarni 	u32 pbt_static[CUDBG_PBT_STATIC_ENTRIES];
157*7e6ad469SVishal Kulkarni 	u32 lrf_table[CUDBG_LRF_ENTRIES];
158*7e6ad469SVishal Kulkarni 	u32 pbt_data[CUDBG_PBT_DATA_ENTRIES];
159*7e6ad469SVishal Kulkarni };
160*7e6ad469SVishal Kulkarni 
161*7e6ad469SVishal Kulkarni struct card_mem {
162*7e6ad469SVishal Kulkarni 	u16 size_mc0;
163*7e6ad469SVishal Kulkarni 	u16 size_mc1;
164*7e6ad469SVishal Kulkarni 	u16 size_edc0;
165*7e6ad469SVishal Kulkarni 	u16 size_edc1;
166*7e6ad469SVishal Kulkarni 	u16 mem_flag;
167*7e6ad469SVishal Kulkarni 	u16 res;
168*7e6ad469SVishal Kulkarni };
169*7e6ad469SVishal Kulkarni 
170*7e6ad469SVishal Kulkarni struct rss_pf_conf {
171*7e6ad469SVishal Kulkarni 	u32 rss_pf_map;
172*7e6ad469SVishal Kulkarni 	u32 rss_pf_mask;
173*7e6ad469SVishal Kulkarni 	u32 rss_pf_config;
174*7e6ad469SVishal Kulkarni };
175*7e6ad469SVishal Kulkarni 
176*7e6ad469SVishal Kulkarni struct cudbg_ch_cntxt {
177*7e6ad469SVishal Kulkarni 	uint32_t cntxt_type;
178*7e6ad469SVishal Kulkarni 	uint32_t cntxt_id;
179*7e6ad469SVishal Kulkarni 	uint32_t data[SGE_CTXT_SIZE / 4];
180*7e6ad469SVishal Kulkarni };
181*7e6ad469SVishal Kulkarni 
182*7e6ad469SVishal Kulkarni struct cudbg_tcam {
183*7e6ad469SVishal Kulkarni 	u32 filter_start;
184*7e6ad469SVishal Kulkarni 	u32 server_start;
185*7e6ad469SVishal Kulkarni 	u32 clip_start;
186*7e6ad469SVishal Kulkarni 	u32 routing_start;
187*7e6ad469SVishal Kulkarni 	u32 tid_hash_base;
188*7e6ad469SVishal Kulkarni 	u32 max_tid;
189*7e6ad469SVishal Kulkarni };
190*7e6ad469SVishal Kulkarni 
191*7e6ad469SVishal Kulkarni struct cudbg_mbox_log {
192*7e6ad469SVishal Kulkarni 	struct mbox_cmd entry;
193*7e6ad469SVishal Kulkarni 	u32 hi[MBOX_LEN / 8];
194*7e6ad469SVishal Kulkarni 	u32 lo[MBOX_LEN / 8];
195*7e6ad469SVishal Kulkarni };
196*7e6ad469SVishal Kulkarni 
197*7e6ad469SVishal Kulkarni struct cudbg_tid_data {
198*7e6ad469SVishal Kulkarni 	u32 tid;
199*7e6ad469SVishal Kulkarni 	u32 dbig_cmd;
200*7e6ad469SVishal Kulkarni 	u32 dbig_conf;
201*7e6ad469SVishal Kulkarni 	u32 dbig_rsp_stat;
202*7e6ad469SVishal Kulkarni 	u32 data[CUDBG_NUM_REQ_REGS];
203*7e6ad469SVishal Kulkarni };
204*7e6ad469SVishal Kulkarni 
205*7e6ad469SVishal Kulkarni struct cudbg_cntxt_field {
206*7e6ad469SVishal Kulkarni 	char *name;
207*7e6ad469SVishal Kulkarni 	u32 start_bit;
208*7e6ad469SVishal Kulkarni 	u32 end_bit;
209*7e6ad469SVishal Kulkarni 	u32 shift;
210*7e6ad469SVishal Kulkarni 	u32 islog2;
211*7e6ad469SVishal Kulkarni };
212*7e6ad469SVishal Kulkarni 
213*7e6ad469SVishal Kulkarni struct cudbg_mps_tcam {
214*7e6ad469SVishal Kulkarni 	u64 mask;
215*7e6ad469SVishal Kulkarni 	u32 rplc[8];
216*7e6ad469SVishal Kulkarni 	u32 idx;
217*7e6ad469SVishal Kulkarni 	u32 cls_lo;
218*7e6ad469SVishal Kulkarni 	u32 cls_hi;
219*7e6ad469SVishal Kulkarni 	u32 rplc_size;
220*7e6ad469SVishal Kulkarni 	u32 vniy;
221*7e6ad469SVishal Kulkarni 	u32 vnix;
222*7e6ad469SVishal Kulkarni 	u32 dip_hit;
223*7e6ad469SVishal Kulkarni 	u32 vlan_vld;
224*7e6ad469SVishal Kulkarni 	u32 repli;
225*7e6ad469SVishal Kulkarni 	u16 ivlan;
226*7e6ad469SVishal Kulkarni 	u8 addr[ETH_ALEN];
227*7e6ad469SVishal Kulkarni 	u8 lookup_type;
228*7e6ad469SVishal Kulkarni 	u8 port_num;
229*7e6ad469SVishal Kulkarni 	u8 reserved[2];
230*7e6ad469SVishal Kulkarni };
231*7e6ad469SVishal Kulkarni 
232*7e6ad469SVishal Kulkarni struct rss_vf_conf {
233*7e6ad469SVishal Kulkarni 	u32 rss_vf_vfl;
234*7e6ad469SVishal Kulkarni 	u32 rss_vf_vfh;
235*7e6ad469SVishal Kulkarni };
236*7e6ad469SVishal Kulkarni 
237*7e6ad469SVishal Kulkarni struct rss_config {
238*7e6ad469SVishal Kulkarni 	u32 tp_rssconf;		/* A_TP_RSS_CONFIG	*/
239*7e6ad469SVishal Kulkarni 	u32 tp_rssconf_tnl;	/* A_TP_RSS_CONFIG_TNL	*/
240*7e6ad469SVishal Kulkarni 	u32 tp_rssconf_ofd;	/* A_TP_RSS_CONFIG_OFD	*/
241*7e6ad469SVishal Kulkarni 	u32 tp_rssconf_syn;	/* A_TP_RSS_CONFIG_SYN	*/
242*7e6ad469SVishal Kulkarni 	u32 tp_rssconf_vrt;	/* A_TP_RSS_CONFIG_VRT	*/
243*7e6ad469SVishal Kulkarni 	u32 tp_rssconf_cng;	/* A_TP_RSS_CONFIG_CNG	*/
244*7e6ad469SVishal Kulkarni 	u32 chip;
245*7e6ad469SVishal Kulkarni };
246*7e6ad469SVishal Kulkarni 
247*7e6ad469SVishal Kulkarni struct struct_pm_stats {
248*7e6ad469SVishal Kulkarni 	u32 tx_cnt[T6_PM_NSTATS];
249*7e6ad469SVishal Kulkarni 	u32 rx_cnt[T6_PM_NSTATS];
250*7e6ad469SVishal Kulkarni 	u64 tx_cyc[T6_PM_NSTATS];
251*7e6ad469SVishal Kulkarni 	u64 rx_cyc[T6_PM_NSTATS];
252*7e6ad469SVishal Kulkarni };
253*7e6ad469SVishal Kulkarni 
254*7e6ad469SVishal Kulkarni struct struct_hw_sched {
255*7e6ad469SVishal Kulkarni 	u32 kbps[NTX_SCHED];
256*7e6ad469SVishal Kulkarni 	u32 ipg[NTX_SCHED];
257*7e6ad469SVishal Kulkarni 	u32 pace_tab[NTX_SCHED];
258*7e6ad469SVishal Kulkarni 	u32 mode;
259*7e6ad469SVishal Kulkarni 	u32 map;
260*7e6ad469SVishal Kulkarni };
261*7e6ad469SVishal Kulkarni 
262*7e6ad469SVishal Kulkarni struct struct_tcp_stats {
263*7e6ad469SVishal Kulkarni 	struct tp_tcp_stats v4, v6;
264*7e6ad469SVishal Kulkarni };
265*7e6ad469SVishal Kulkarni 
266*7e6ad469SVishal Kulkarni struct struct_tp_err_stats {
267*7e6ad469SVishal Kulkarni 	struct tp_err_stats stats;
268*7e6ad469SVishal Kulkarni 	u32 nchan;
269*7e6ad469SVishal Kulkarni };
270*7e6ad469SVishal Kulkarni 
271*7e6ad469SVishal Kulkarni struct struct_tp_fcoe_stats {
272*7e6ad469SVishal Kulkarni 	struct tp_fcoe_stats stats[4];
273*7e6ad469SVishal Kulkarni 	u32 nchan;
274*7e6ad469SVishal Kulkarni };
275*7e6ad469SVishal Kulkarni 
276*7e6ad469SVishal Kulkarni struct struct_mac_stats {
277*7e6ad469SVishal Kulkarni 	u32 port_count;
278*7e6ad469SVishal Kulkarni 	struct port_stats stats[4];
279*7e6ad469SVishal Kulkarni };
280*7e6ad469SVishal Kulkarni 
281*7e6ad469SVishal Kulkarni struct struct_mac_stats_rev1 {
282*7e6ad469SVishal Kulkarni 	struct cudbg_ver_hdr ver_hdr;
283*7e6ad469SVishal Kulkarni 	u32 port_count;
284*7e6ad469SVishal Kulkarni 	u32 reserved;
285*7e6ad469SVishal Kulkarni 	struct port_stats stats[4];
286*7e6ad469SVishal Kulkarni };
287*7e6ad469SVishal Kulkarni 
288*7e6ad469SVishal Kulkarni struct struct_tp_cpl_stats {
289*7e6ad469SVishal Kulkarni 	struct tp_cpl_stats stats;
290*7e6ad469SVishal Kulkarni 	u32 nchan;
291*7e6ad469SVishal Kulkarni };
292*7e6ad469SVishal Kulkarni 
293*7e6ad469SVishal Kulkarni struct struct_wc_stats {
294*7e6ad469SVishal Kulkarni 	u32 wr_cl_success;
295*7e6ad469SVishal Kulkarni 	u32 wr_cl_fail;
296*7e6ad469SVishal Kulkarni };
297*7e6ad469SVishal Kulkarni 
298*7e6ad469SVishal Kulkarni struct struct_ulptx_la {
299*7e6ad469SVishal Kulkarni 	u32 rdptr[CUDBG_NUM_ULPTX];
300*7e6ad469SVishal Kulkarni 	u32 wrptr[CUDBG_NUM_ULPTX];
301*7e6ad469SVishal Kulkarni 	u32 rddata[CUDBG_NUM_ULPTX];
302*7e6ad469SVishal Kulkarni 	u32 rd_data[CUDBG_NUM_ULPTX][CUDBG_NUM_ULPTX_READ];
303*7e6ad469SVishal Kulkarni         u32 rdptr_asic[CUDBG_NUM_ULPTX_ASIC_READ];
304*7e6ad469SVishal Kulkarni         u32 rddata_asic[CUDBG_NUM_ULPTX_ASIC_READ][CUDBG_NUM_ULPTX_ASIC];
305*7e6ad469SVishal Kulkarni };
306*7e6ad469SVishal Kulkarni 
307*7e6ad469SVishal Kulkarni struct struct_ulprx_la {
308*7e6ad469SVishal Kulkarni 	u32 data[ULPRX_LA_SIZE * 8];
309*7e6ad469SVishal Kulkarni 	u32 size;
310*7e6ad469SVishal Kulkarni };
311*7e6ad469SVishal Kulkarni 
312*7e6ad469SVishal Kulkarni struct struct_cim_qcfg {
313*7e6ad469SVishal Kulkarni 	u8 chip;
314*7e6ad469SVishal Kulkarni 	u16 base[CIM_NUM_IBQ + CIM_NUM_OBQ_T5];
315*7e6ad469SVishal Kulkarni 	u16 size[CIM_NUM_IBQ + CIM_NUM_OBQ_T5];
316*7e6ad469SVishal Kulkarni 	u16 thres[CIM_NUM_IBQ];
317*7e6ad469SVishal Kulkarni 	u32 obq_wr[2 * CIM_NUM_OBQ_T5];
318*7e6ad469SVishal Kulkarni 	u32 stat[4 * (CIM_NUM_IBQ + CIM_NUM_OBQ_T5)];
319*7e6ad469SVishal Kulkarni };
320*7e6ad469SVishal Kulkarni 
321*7e6ad469SVishal Kulkarni enum region_index {
322*7e6ad469SVishal Kulkarni 	REGN_DBQ_CONTEXS_IDX,
323*7e6ad469SVishal Kulkarni 	REGN_IMSG_CONTEXTS_IDX,
324*7e6ad469SVishal Kulkarni 	REGN_FLM_CACHE_IDX,
325*7e6ad469SVishal Kulkarni 	REGN_TCBS_IDX,
326*7e6ad469SVishal Kulkarni 	REGN_PSTRUCT_IDX,
327*7e6ad469SVishal Kulkarni 	REGN_TIMERS_IDX,
328*7e6ad469SVishal Kulkarni 	REGN_RX_FL_IDX,
329*7e6ad469SVishal Kulkarni 	REGN_TX_FL_IDX,
330*7e6ad469SVishal Kulkarni 	REGN_PSTRUCT_FL_IDX,
331*7e6ad469SVishal Kulkarni 	REGN_TX_PAYLOAD_IDX,
332*7e6ad469SVishal Kulkarni 	REGN_RX_PAYLOAD_IDX,
333*7e6ad469SVishal Kulkarni 	REGN_LE_HASH_IDX,
334*7e6ad469SVishal Kulkarni 	REGN_ISCSI_IDX,
335*7e6ad469SVishal Kulkarni 	REGN_TDDP_IDX,
336*7e6ad469SVishal Kulkarni 	REGN_TPT_IDX,
337*7e6ad469SVishal Kulkarni 	REGN_STAG_IDX,
338*7e6ad469SVishal Kulkarni 	REGN_RQ_IDX,
339*7e6ad469SVishal Kulkarni 	REGN_RQUDP_IDX,
340*7e6ad469SVishal Kulkarni 	REGN_PBL_IDX,
341*7e6ad469SVishal Kulkarni 	REGN_TXPBL_IDX,
342*7e6ad469SVishal Kulkarni 	REGN_DBVFIFO_IDX,
343*7e6ad469SVishal Kulkarni 	REGN_ULPRX_STATE_IDX,
344*7e6ad469SVishal Kulkarni 	REGN_ULPTX_STATE_IDX,
345*7e6ad469SVishal Kulkarni #ifndef __NO_DRIVER_OCQ_SUPPORT__
346*7e6ad469SVishal Kulkarni 	REGN_ON_CHIP_Q_IDX,
347*7e6ad469SVishal Kulkarni #endif
348*7e6ad469SVishal Kulkarni };
349*7e6ad469SVishal Kulkarni 
350*7e6ad469SVishal Kulkarni struct cudbg_qdesc_info {
351*7e6ad469SVishal Kulkarni 	u32 qdesc_entry_size;
352*7e6ad469SVishal Kulkarni 	u32 num_queues;
353*7e6ad469SVishal Kulkarni 	u8 data[0]; /* Must be last */
354*7e6ad469SVishal Kulkarni };
355*7e6ad469SVishal Kulkarni 
356*7e6ad469SVishal Kulkarni static const char * const region[] = {
357*7e6ad469SVishal Kulkarni 	"DBQ contexts:", "IMSG contexts:", "FLM cache:", "TCBs:",
358*7e6ad469SVishal Kulkarni 	"Pstructs:", "Timers:", "Rx FL:", "Tx FL:", "Pstruct FL:",
359*7e6ad469SVishal Kulkarni 	"Tx payload:", "Rx payload:", "LE hash:", "iSCSI region:",
360*7e6ad469SVishal Kulkarni 	"TDDP region:", "TPT region:", "STAG region:", "RQ region:",
361*7e6ad469SVishal Kulkarni 	"RQUDP region:", "PBL region:", "TXPBL region:",
362*7e6ad469SVishal Kulkarni 	"DBVFIFO region:", "ULPRX state:", "ULPTX state:",
363*7e6ad469SVishal Kulkarni #ifndef __NO_DRIVER_OCQ_SUPPORT__
364*7e6ad469SVishal Kulkarni 	"On-chip queues:"
365*7e6ad469SVishal Kulkarni #endif
366*7e6ad469SVishal Kulkarni };
367*7e6ad469SVishal Kulkarni 
368*7e6ad469SVishal Kulkarni /* Info relative to memory region (i.e. wrt 0). */
369*7e6ad469SVishal Kulkarni struct struct_region_info {
370*7e6ad469SVishal Kulkarni 	bool exist; /* Does region exists in current memory region? */
371*7e6ad469SVishal Kulkarni 	u32 start;  /* Start wrt 0 */
372*7e6ad469SVishal Kulkarni 	u32 end;    /* End wrt 0 */
373*7e6ad469SVishal Kulkarni };
374*7e6ad469SVishal Kulkarni 
375*7e6ad469SVishal Kulkarni struct struct_port_usage {
376*7e6ad469SVishal Kulkarni 	u32 id;
377*7e6ad469SVishal Kulkarni 	u32 used;
378*7e6ad469SVishal Kulkarni 	u32 alloc;
379*7e6ad469SVishal Kulkarni };
380*7e6ad469SVishal Kulkarni 
381*7e6ad469SVishal Kulkarni struct struct_lpbk_usage {
382*7e6ad469SVishal Kulkarni 	u32 id;
383*7e6ad469SVishal Kulkarni 	u32 used;
384*7e6ad469SVishal Kulkarni 	u32 alloc;
385*7e6ad469SVishal Kulkarni };
386*7e6ad469SVishal Kulkarni 
387*7e6ad469SVishal Kulkarni struct struct_mem_desc {
388*7e6ad469SVishal Kulkarni 	u32 base;
389*7e6ad469SVishal Kulkarni 	u32 limit;
390*7e6ad469SVishal Kulkarni 	u32 idx;
391*7e6ad469SVishal Kulkarni };
392*7e6ad469SVishal Kulkarni 
393*7e6ad469SVishal Kulkarni enum string_size_units {
394*7e6ad469SVishal Kulkarni 	STRING_UNITS_10,	 /* use powers of 10^3 (standard SI) */
395*7e6ad469SVishal Kulkarni 	STRING_UNITS_2,		/* use binary powers of 2^10 */
396*7e6ad469SVishal Kulkarni };
397*7e6ad469SVishal Kulkarni 
398*7e6ad469SVishal Kulkarni struct struct_meminfo {
399*7e6ad469SVishal Kulkarni 	struct struct_mem_desc avail[4];
400*7e6ad469SVishal Kulkarni 	struct struct_mem_desc mem[ARRAY_SIZE(region) + 3];
401*7e6ad469SVishal Kulkarni 	u32 avail_c;
402*7e6ad469SVishal Kulkarni 	u32 mem_c;
403*7e6ad469SVishal Kulkarni 	u32 up_ram_lo;
404*7e6ad469SVishal Kulkarni 	u32 up_ram_hi;
405*7e6ad469SVishal Kulkarni 	u32 up_extmem2_lo;
406*7e6ad469SVishal Kulkarni 	u32 up_extmem2_hi;
407*7e6ad469SVishal Kulkarni 	u32 rx_pages_data[3];
408*7e6ad469SVishal Kulkarni 	u32 tx_pages_data[4];
409*7e6ad469SVishal Kulkarni 	u32 p_structs;
410*7e6ad469SVishal Kulkarni 	struct struct_port_usage port_data[4];
411*7e6ad469SVishal Kulkarni 	u32 port_used[4];
412*7e6ad469SVishal Kulkarni 	u32 port_alloc[4];
413*7e6ad469SVishal Kulkarni 	u32 loopback_used[NCHAN];
414*7e6ad469SVishal Kulkarni 	u32 loopback_alloc[NCHAN];
415*7e6ad469SVishal Kulkarni 	u32 pstructs_free_cnt;
416*7e6ad469SVishal Kulkarni 	u32 free_rx_cnt;
417*7e6ad469SVishal Kulkarni 	u32 free_tx_cnt;
418*7e6ad469SVishal Kulkarni };
419*7e6ad469SVishal Kulkarni 
420*7e6ad469SVishal Kulkarni #ifndef __GNUC__
421*7e6ad469SVishal Kulkarni #pragma warning(disable : 4200)
422*7e6ad469SVishal Kulkarni #endif
423*7e6ad469SVishal Kulkarni 
424*7e6ad469SVishal Kulkarni struct struct_lb_stats {
425*7e6ad469SVishal Kulkarni 	int nchan;
426*7e6ad469SVishal Kulkarni 	struct lb_port_stats s[0];
427*7e6ad469SVishal Kulkarni };
428*7e6ad469SVishal Kulkarni 
429*7e6ad469SVishal Kulkarni struct struct_clk_info {
430*7e6ad469SVishal Kulkarni 	u64 retransmit_min;
431*7e6ad469SVishal Kulkarni 	u64 retransmit_max;
432*7e6ad469SVishal Kulkarni 	u64 persist_timer_min;
433*7e6ad469SVishal Kulkarni 	u64 persist_timer_max;
434*7e6ad469SVishal Kulkarni 	u64 keepalive_idle_timer;
435*7e6ad469SVishal Kulkarni 	u64 keepalive_interval;
436*7e6ad469SVishal Kulkarni 	u64 initial_srtt;
437*7e6ad469SVishal Kulkarni 	u64 finwait2_timer;
438*7e6ad469SVishal Kulkarni 	u32 dack_timer;
439*7e6ad469SVishal Kulkarni 	u32 res;
440*7e6ad469SVishal Kulkarni 	u32 cclk_ps;
441*7e6ad469SVishal Kulkarni 	u32 tre;
442*7e6ad469SVishal Kulkarni 	u32 dack_re;
443*7e6ad469SVishal Kulkarni 	char core_clk_period[32];
444*7e6ad469SVishal Kulkarni 	char tp_timer_tick[32];
445*7e6ad469SVishal Kulkarni 	char tcp_tstamp_tick[32];
446*7e6ad469SVishal Kulkarni 	char dack_tick[32];
447*7e6ad469SVishal Kulkarni };
448*7e6ad469SVishal Kulkarni 
449*7e6ad469SVishal Kulkarni struct cim_pif_la {
450*7e6ad469SVishal Kulkarni 	int size;
451*7e6ad469SVishal Kulkarni 	u8 data[0];
452*7e6ad469SVishal Kulkarni };
453*7e6ad469SVishal Kulkarni 
454*7e6ad469SVishal Kulkarni struct struct_tp_la {
455*7e6ad469SVishal Kulkarni 	u32 size;
456*7e6ad469SVishal Kulkarni 	u32 mode;
457*7e6ad469SVishal Kulkarni 	u8 data[0];
458*7e6ad469SVishal Kulkarni };
459*7e6ad469SVishal Kulkarni 
460*7e6ad469SVishal Kulkarni struct field_desc {
461*7e6ad469SVishal Kulkarni 	const char *name;
462*7e6ad469SVishal Kulkarni 	u32 start;
463*7e6ad469SVishal Kulkarni 	u32 width;
464*7e6ad469SVishal Kulkarni };
465*7e6ad469SVishal Kulkarni 
466*7e6ad469SVishal Kulkarni struct tp_mib_type {
467*7e6ad469SVishal Kulkarni 	char *key;
468*7e6ad469SVishal Kulkarni 	u32 addr;
469*7e6ad469SVishal Kulkarni 	u32 value;
470*7e6ad469SVishal Kulkarni };
471*7e6ad469SVishal Kulkarni 
472*7e6ad469SVishal Kulkarni struct wtp_type_0 {
473*7e6ad469SVishal Kulkarni 	u32   sop;
474*7e6ad469SVishal Kulkarni 	u32   eop;
475*7e6ad469SVishal Kulkarni };
476*7e6ad469SVishal Kulkarni 
477*7e6ad469SVishal Kulkarni struct wtp_type_1 {
478*7e6ad469SVishal Kulkarni 	u32   sop[2];
479*7e6ad469SVishal Kulkarni 	u32   eop[2];
480*7e6ad469SVishal Kulkarni };
481*7e6ad469SVishal Kulkarni 
482*7e6ad469SVishal Kulkarni struct wtp_type_2 {
483*7e6ad469SVishal Kulkarni 	u32   sop[4];
484*7e6ad469SVishal Kulkarni 	u32   eop[4];
485*7e6ad469SVishal Kulkarni };
486*7e6ad469SVishal Kulkarni 
487*7e6ad469SVishal Kulkarni struct wtp_type_3 {
488*7e6ad469SVishal Kulkarni 	u32   sop[4];
489*7e6ad469SVishal Kulkarni 	u32   eop[4];
490*7e6ad469SVishal Kulkarni 	u32   drops;
491*7e6ad469SVishal Kulkarni };
492*7e6ad469SVishal Kulkarni 
493*7e6ad469SVishal Kulkarni struct wtp_data {
494*7e6ad469SVishal Kulkarni 	/*TX path, Request Work request sub-path:*/
495*7e6ad469SVishal Kulkarni 
496*7e6ad469SVishal Kulkarni 	struct wtp_type_1 sge_pcie_cmd_req;	  /*SGE_DEBUG	PC_Req_xOPn*/
497*7e6ad469SVishal Kulkarni 	struct wtp_type_1 pcie_core_cmd_req;	  /*PCIE_CMDR_REQ_CNT*/
498*7e6ad469SVishal Kulkarni 
499*7e6ad469SVishal Kulkarni 
500*7e6ad469SVishal Kulkarni 	/*TX path, Work request to uP sub-path*/
501*7e6ad469SVishal Kulkarni 	struct wtp_type_1 core_pcie_cmd_rsp;	  /*PCIE_CMDR_RSP_CNT*/
502*7e6ad469SVishal Kulkarni 	struct wtp_type_1 pcie_sge_cmd_rsp;	  /*SGE_DEBUG	PC_Rsp_xOPn*/
503*7e6ad469SVishal Kulkarni 	struct wtp_type_1 sge_cim;		  /*SGE_DEBUG CIM_xOPn*/
504*7e6ad469SVishal Kulkarni 
505*7e6ad469SVishal Kulkarni 	/*TX path, Data request path from ULP_TX to core*/
506*7e6ad469SVishal Kulkarni 	struct wtp_type_2 utx_sge_dma_req;	 /*SGE UD_Rx_xOPn*/
507*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_pcie_dma_req;	 /*SGE PD_Req_Rdn (no eops)*/
508*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_core_dma_req;	 /*PCIE_DMAR_REQ_CNT (no eops)*/
509*7e6ad469SVishal Kulkarni 
510*7e6ad469SVishal Kulkarni 	/*Main TX path, from core to wire*/
511*7e6ad469SVishal Kulkarni 	struct wtp_type_2 core_pcie_dma_rsp;	/*PCIE_DMAR_RSP_SOP_CNT/
512*7e6ad469SVishal Kulkarni 						  PCIE_DMAR_EOP_CNT*/
513*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_sge_dma_rsp;	/*SGE_DEBUG PD_Rsp_xOPn*/
514*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_utx;		/*SGE_DEBUG U_Tx_xOPn*/
515*7e6ad469SVishal Kulkarni 	struct wtp_type_2 utx_tp;	   /*ULP_TX_SE_CNT_CHn[xOP_CNT_ULP2TP]*/
516*7e6ad469SVishal Kulkarni 	struct wtp_type_2 utx_tpcside;	   /*TP_DBG_CSIDE_RXn[RxXoPCnt]*/
517*7e6ad469SVishal Kulkarni 
518*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpcside_rxpld;
519*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpcside_rxarb;       /*TP_DBG_CSIDE_RXn[RxArbXopCnt]*/
520*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpcside_rxcpl;
521*7e6ad469SVishal Kulkarni 
522*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpeside_mps;	       /*TP_DBG_ESDIE_PKT0[TxXoPCnt]*/
523*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpeside_pm;
524*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpeside_pld;
525*7e6ad469SVishal Kulkarni 
526*7e6ad469SVishal Kulkarni 	/*Tx path, PCIE t5 DMA stat*/
527*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_t5_dma_stat3;
528*7e6ad469SVishal Kulkarni 
529*7e6ad469SVishal Kulkarni 	/*Tx path, SGE debug data high index 6*/
530*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_debug_data_high_index_6;
531*7e6ad469SVishal Kulkarni 
532*7e6ad469SVishal Kulkarni 	/*Tx path, SGE debug data high index 3*/
533*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_debug_data_high_index_3;
534*7e6ad469SVishal Kulkarni 
535*7e6ad469SVishal Kulkarni 	/*Tx path, ULP SE CNT CHx*/
536*7e6ad469SVishal Kulkarni 	struct wtp_type_2 ulp_se_cnt_chx;
537*7e6ad469SVishal Kulkarni 
538*7e6ad469SVishal Kulkarni 	/*pcie cmd stat 2*/
539*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_cmd_stat2;
540*7e6ad469SVishal Kulkarni 
541*7e6ad469SVishal Kulkarni 	/*pcie cmd stat 3*/
542*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_cmd_stat3;
543*7e6ad469SVishal Kulkarni 
544*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_dma1_stat2_core;
545*7e6ad469SVishal Kulkarni 
546*7e6ad469SVishal Kulkarni 	struct wtp_type_1 sge_work_req_pkt;
547*7e6ad469SVishal Kulkarni 
548*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_debug_data_high_indx5;
549*7e6ad469SVishal Kulkarni 
550*7e6ad469SVishal Kulkarni 	/*Tx path, mac portx pkt count*/
551*7e6ad469SVishal Kulkarni 	struct wtp_type_2 mac_portx_pkt_count;
552*7e6ad469SVishal Kulkarni 
553*7e6ad469SVishal Kulkarni 	/*Rx path, mac porrx pkt count*/
554*7e6ad469SVishal Kulkarni 	struct wtp_type_2 mac_porrx_pkt_count;
555*7e6ad469SVishal Kulkarni 
556*7e6ad469SVishal Kulkarni 	/*Rx path, PCIE T5 dma1 stat 2*/
557*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_dma1_stat2;
558*7e6ad469SVishal Kulkarni 
559*7e6ad469SVishal Kulkarni 	/*Rx path, sge debug data high index 7*/
560*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_debug_data_high_indx7;
561*7e6ad469SVishal Kulkarni 
562*7e6ad469SVishal Kulkarni 	/*Rx path, sge debug data high index 1*/
563*7e6ad469SVishal Kulkarni 	struct wtp_type_1 sge_debug_data_high_indx1;
564*7e6ad469SVishal Kulkarni 
565*7e6ad469SVishal Kulkarni 	/*Rx path, TP debug CSIDE Tx register*/
566*7e6ad469SVishal Kulkarni 	struct wtp_type_1 utx_tpcside_tx;
567*7e6ad469SVishal Kulkarni 
568*7e6ad469SVishal Kulkarni 	/*Rx path, LE DB response count*/
569*7e6ad469SVishal Kulkarni 	struct wtp_type_0 le_db_rsp_cnt;
570*7e6ad469SVishal Kulkarni 
571*7e6ad469SVishal Kulkarni 	/*Rx path, TP debug Eside PKTx*/
572*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tp_dbg_eside_pktx;
573*7e6ad469SVishal Kulkarni 
574*7e6ad469SVishal Kulkarni 	/*Rx path, sge debug data high index 9*/
575*7e6ad469SVishal Kulkarni 	struct wtp_type_1 sge_debug_data_high_indx9;
576*7e6ad469SVishal Kulkarni 
577*7e6ad469SVishal Kulkarni 	/*Tx path, mac portx aFramesTransmittesok*/
578*7e6ad469SVishal Kulkarni 	struct wtp_type_2 mac_portx_aframestra_ok;
579*7e6ad469SVishal Kulkarni 
580*7e6ad469SVishal Kulkarni 	/*Rx path, mac portx aFramesTransmittesok*/
581*7e6ad469SVishal Kulkarni 	struct wtp_type_2 mac_porrx_aframestra_ok;
582*7e6ad469SVishal Kulkarni 
583*7e6ad469SVishal Kulkarni 	/*Tx path, MAC_PORT_MTIP_1G10G_RX_etherStatsPkts*/
584*7e6ad469SVishal Kulkarni 	struct wtp_type_1 mac_portx_etherstatspkts;
585*7e6ad469SVishal Kulkarni 
586*7e6ad469SVishal Kulkarni 	/*Rx path, MAC_PORT_MTIP_1G10G_RX_etherStatsPkts*/
587*7e6ad469SVishal Kulkarni 	struct wtp_type_1 mac_porrx_etherstatspkts;
588*7e6ad469SVishal Kulkarni 
589*7e6ad469SVishal Kulkarni 	struct wtp_type_3 tp_mps;	    /*MPS_TX_SE_CNT_TP01 and
590*7e6ad469SVishal Kulkarni 					      MPS_TX_SE_CNT_TP34*/
591*7e6ad469SVishal Kulkarni 	struct wtp_type_3 mps_xgm;	    /*MPS_TX_SE_CNT_MAC01 and
592*7e6ad469SVishal Kulkarni 					      MPS_TX_SE_CNT_MAC34*/
593*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tx_xgm_xgm;	    /*XGMAC_PORT_PKT_CNT_PORT_n*/
594*7e6ad469SVishal Kulkarni 	struct wtp_type_2 xgm_wire;   /*XGMAC_PORT_XGM_STAT_TX_FRAME_LOW_PORT_N
595*7e6ad469SVishal Kulkarni 				      (clear on read)*/
596*7e6ad469SVishal Kulkarni 
597*7e6ad469SVishal Kulkarni 	/*RX path, from wire to core.*/
598*7e6ad469SVishal Kulkarni 	struct wtp_type_2 wire_xgm;   /*XGMAC_PORT_XGM_STAT_RX_FRAMES_LOW_PORT_N
599*7e6ad469SVishal Kulkarni 					(clear on read)*/
600*7e6ad469SVishal Kulkarni 	struct wtp_type_2 rx_xgm_xgm;	    /*XGMAC_PORT_PKT_CNT_PORT_n*/
601*7e6ad469SVishal Kulkarni 	struct _xgm_mps {		    /*MPS_RX_SE_CNT_INn*/
602*7e6ad469SVishal Kulkarni 		u32   sop[8];		    /*	=> undef,*/
603*7e6ad469SVishal Kulkarni 		u32   eop[8];		    /*	=> undef,*/
604*7e6ad469SVishal Kulkarni 		u32   drop;		    /* => undef,*/
605*7e6ad469SVishal Kulkarni 		u32   cls_drop;		    /* => undef,*/
606*7e6ad469SVishal Kulkarni 		u32   err;		    /* => undef,*/
607*7e6ad469SVishal Kulkarni 		u32   bp;		    /*	 => undef,*/
608*7e6ad469SVishal Kulkarni 	} xgm_mps;
609*7e6ad469SVishal Kulkarni 
610*7e6ad469SVishal Kulkarni 	struct wtp_type_3 mps_tp;	    /*MPS_RX_SE_CNT_OUT01 and
611*7e6ad469SVishal Kulkarni 					      MPS_RX_SE_CNT_OUT23*/
612*7e6ad469SVishal Kulkarni 	struct wtp_type_2 mps_tpeside;	    /*TP_DBG_ESIDE_PKTn*/
613*7e6ad469SVishal Kulkarni 	struct wtp_type_1 tpeside_pmrx;	    /*???*/
614*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pmrx_ulprx;	    /*ULP_RX_SE_CNT_CHn[xOP_CNT_INn]*/
615*7e6ad469SVishal Kulkarni 	struct wtp_type_2 ulprx_tpcside;    /*ULP_RX_SE_CNT_CHn[xOP_CNT_OUTn]*/
616*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpcside_csw;	    /*TP_DBG_CSIDE_TXn[TxSopCnt]*/
617*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpcside_pm;
618*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpcside_uturn;
619*7e6ad469SVishal Kulkarni 	struct wtp_type_2 tpcside_txcpl;
620*7e6ad469SVishal Kulkarni 	struct wtp_type_1 tp_csw;	     /*SGE_DEBUG CPLSW_TP_Rx_xOPn*/
621*7e6ad469SVishal Kulkarni 	struct wtp_type_1 csw_sge;	     /*SGE_DEBUG T_Rx_xOPn*/
622*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_pcie;	     /*SGE_DEBUG PD_Req_SopN -
623*7e6ad469SVishal Kulkarni 					       PD_Req_RdN - PD_ReqIntN*/
624*7e6ad469SVishal Kulkarni 	struct wtp_type_2 sge_pcie_ints;     /*SGE_DEBUG PD_Req_IntN*/
625*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_core_dmaw;    /*PCIE_DMAW_SOP_CNT and
626*7e6ad469SVishal Kulkarni 					       PCIE_DMAW_EOP_CNT*/
627*7e6ad469SVishal Kulkarni 	struct wtp_type_2 pcie_core_dmai;    /*PCIE_DMAI_CNT*/
628*7e6ad469SVishal Kulkarni 
629*7e6ad469SVishal Kulkarni };
630*7e6ad469SVishal Kulkarni 
631*7e6ad469SVishal Kulkarni struct tp_mib_data {
632*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_MAC_IN_ERR_0;
633*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_MAC_IN_ERR_1;
634*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_MAC_IN_ERR_2;
635*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_MAC_IN_ERR_3;
636*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_HDR_IN_ERR_0;
637*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_HDR_IN_ERR_1;
638*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_HDR_IN_ERR_2;
639*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_HDR_IN_ERR_3;
640*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_IN_ERR_0;
641*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_IN_ERR_1;
642*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_IN_ERR_2;
643*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_IN_ERR_3;
644*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_OUT_RST;
645*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_IN_SEG_HI;
646*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_IN_SEG_LO;
647*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_OUT_SEG_HI;
648*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_OUT_SEG_LO;
649*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_RXT_SEG_HI;
650*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_RXT_SEG_LO;
651*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_CNG_DROP_0;
652*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_CNG_DROP_1;
653*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_CNG_DROP_2;
654*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_CNG_DROP_3;
655*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_CHN_DROP_0;
656*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_CHN_DROP_1;
657*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_CHN_DROP_2;
658*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_CHN_DROP_3;
659*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_OUT_PKT_0;
660*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_OUT_PKT_1;
661*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_OUT_PKT_2;
662*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_OUT_PKT_3;
663*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_IN_PKT_0;
664*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_IN_PKT_1;
665*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_IN_PKT_2;
666*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_IN_PKT_3;
667*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6IN_ERR_0;
668*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6IN_ERR_1;
669*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6IN_ERR_2;
670*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6IN_ERR_3;
671*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6OUT_RST;
672*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6IN_SEG_HI;
673*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6IN_SEG_LO;
674*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6OUT_SEG_HI;
675*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6OUT_SEG_LO;
676*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6RXT_SEG_HI;
677*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TCP_V6RXT_SEG_LO;
678*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_ARP_DROP;
679*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_DFR_DROP;
680*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_IN_REQ_0;
681*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_IN_REQ_1;
682*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_IN_REQ_2;
683*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_IN_REQ_3;
684*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_OUT_RSP_0;
685*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_OUT_RSP_1;
686*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_OUT_RSP_2;
687*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_CPL_OUT_RSP_3;
688*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_LPBK_0;
689*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_LPBK_1;
690*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_LPBK_2;
691*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_LPBK_3;
692*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_DROP_0;
693*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_DROP_1;
694*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_DROP_2;
695*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TNL_DROP_3;
696*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DDP_0;
697*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DDP_1;
698*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DDP_2;
699*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DDP_3;
700*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DROP_0;
701*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DROP_1;
702*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DROP_2;
703*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_DROP_3;
704*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_0_HI;
705*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_0_LO;
706*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_1_HI;
707*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_1_LO;
708*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_2_HI;
709*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_2_LO;
710*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_3_HI;
711*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_FCOE_BYTE_3_LO;
712*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_VLN_DROP_0;
713*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_VLN_DROP_1;
714*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_VLN_DROP_2;
715*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_OFD_VLN_DROP_3;
716*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_USM_PKTS;
717*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_USM_DROP;
718*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_USM_BYTES_HI;
719*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_USM_BYTES_LO;
720*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TID_DEL;
721*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TID_INV;
722*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TID_ACT;
723*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_TID_PAS;
724*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_RQE_DFR_MOD;
725*7e6ad469SVishal Kulkarni 	struct tp_mib_type TP_MIB_RQE_DFR_PKT;
726*7e6ad469SVishal Kulkarni };
727*7e6ad469SVishal Kulkarni 
728*7e6ad469SVishal Kulkarni struct cudbg_reg_info {
729*7e6ad469SVishal Kulkarni 	const char *name;
730*7e6ad469SVishal Kulkarni 	unsigned int addr;
731*7e6ad469SVishal Kulkarni 	unsigned int len;
732*7e6ad469SVishal Kulkarni };
733*7e6ad469SVishal Kulkarni 
734*7e6ad469SVishal Kulkarni struct tp1_reg_info {
735*7e6ad469SVishal Kulkarni 	char addr[10];
736*7e6ad469SVishal Kulkarni 	char name[40];
737*7e6ad469SVishal Kulkarni };
738*7e6ad469SVishal Kulkarni 
739*7e6ad469SVishal Kulkarni struct ireg_field {
740*7e6ad469SVishal Kulkarni 	u32 ireg_addr;
741*7e6ad469SVishal Kulkarni 	u32 ireg_data;
742*7e6ad469SVishal Kulkarni 	u32 ireg_local_offset;
743*7e6ad469SVishal Kulkarni 	u32 ireg_offset_range;
744*7e6ad469SVishal Kulkarni };
745*7e6ad469SVishal Kulkarni 
746*7e6ad469SVishal Kulkarni struct ireg_buf {
747*7e6ad469SVishal Kulkarni 	struct ireg_field tp_pio;
748*7e6ad469SVishal Kulkarni 	u32 outbuf[32];
749*7e6ad469SVishal Kulkarni };
750*7e6ad469SVishal Kulkarni 
751*7e6ad469SVishal Kulkarni struct tx_rate {
752*7e6ad469SVishal Kulkarni 	u64 nrate[NCHAN];
753*7e6ad469SVishal Kulkarni 	u64 orate[NCHAN];
754*7e6ad469SVishal Kulkarni 	u32 nchan;
755*7e6ad469SVishal Kulkarni };
756*7e6ad469SVishal Kulkarni 
757*7e6ad469SVishal Kulkarni struct tid_info_region {
758*7e6ad469SVishal Kulkarni 	u32 ntids;
759*7e6ad469SVishal Kulkarni 	u32 nstids;
760*7e6ad469SVishal Kulkarni 	u32 stid_base;
761*7e6ad469SVishal Kulkarni 	u32 hash_base;
762*7e6ad469SVishal Kulkarni 
763*7e6ad469SVishal Kulkarni 	u32 natids;
764*7e6ad469SVishal Kulkarni 	u32 nftids;
765*7e6ad469SVishal Kulkarni 	u32 ftid_base;
766*7e6ad469SVishal Kulkarni 	u32 aftid_base;
767*7e6ad469SVishal Kulkarni 	u32 aftid_end;
768*7e6ad469SVishal Kulkarni 
769*7e6ad469SVishal Kulkarni 	/* Server filter region */
770*7e6ad469SVishal Kulkarni 	u32 sftid_base;
771*7e6ad469SVishal Kulkarni 	u32 nsftids;
772*7e6ad469SVishal Kulkarni 
773*7e6ad469SVishal Kulkarni 	/* UO context range */
774*7e6ad469SVishal Kulkarni 	u32 uotid_base;
775*7e6ad469SVishal Kulkarni 	u32 nuotids;
776*7e6ad469SVishal Kulkarni 
777*7e6ad469SVishal Kulkarni 	u32 sb;
778*7e6ad469SVishal Kulkarni 	u32 flags;
779*7e6ad469SVishal Kulkarni 	u32 le_db_conf;
780*7e6ad469SVishal Kulkarni 	u32 IP_users;
781*7e6ad469SVishal Kulkarni 	u32 IPv6_users;
782*7e6ad469SVishal Kulkarni 
783*7e6ad469SVishal Kulkarni 	u32 hpftid_base;
784*7e6ad469SVishal Kulkarni 	u32 nhpftids;
785*7e6ad469SVishal Kulkarni };
786*7e6ad469SVishal Kulkarni 
787*7e6ad469SVishal Kulkarni struct tid_info_region_rev1 {
788*7e6ad469SVishal Kulkarni 	struct cudbg_ver_hdr ver_hdr;
789*7e6ad469SVishal Kulkarni 	struct tid_info_region tid;
790*7e6ad469SVishal Kulkarni 	u32 tid_start;
791*7e6ad469SVishal Kulkarni 	u32 reserved[16];
792*7e6ad469SVishal Kulkarni };
793*7e6ad469SVishal Kulkarni 
794*7e6ad469SVishal Kulkarni struct struct_vpd_data {
795*7e6ad469SVishal Kulkarni 	u8 sn[SN_MAX_LEN + 1];
796*7e6ad469SVishal Kulkarni 	u8 bn[BN_MAX_LEN + 1];
797*7e6ad469SVishal Kulkarni 	u8 na[NA_MAX_LEN + 1];
798*7e6ad469SVishal Kulkarni 	u8 mn[MN_MAX_LEN + 1];
799*7e6ad469SVishal Kulkarni 	u16 fw_major;
800*7e6ad469SVishal Kulkarni 	u16 fw_minor;
801*7e6ad469SVishal Kulkarni 	u16 fw_micro;
802*7e6ad469SVishal Kulkarni 	u16 fw_build;
803*7e6ad469SVishal Kulkarni 	u32 scfg_vers;
804*7e6ad469SVishal Kulkarni 	u32 vpd_vers;
805*7e6ad469SVishal Kulkarni };
806*7e6ad469SVishal Kulkarni 
807*7e6ad469SVishal Kulkarni struct sw_state {
808*7e6ad469SVishal Kulkarni 	u32 fw_state;
809*7e6ad469SVishal Kulkarni 	u8 caller_string[100];
810*7e6ad469SVishal Kulkarni 	u8 os_type;
811*7e6ad469SVishal Kulkarni 	u8 reserved[3];
812*7e6ad469SVishal Kulkarni 	u32 reserved1[16];
813*7e6ad469SVishal Kulkarni };
814*7e6ad469SVishal Kulkarni 
815*7e6ad469SVishal Kulkarni struct sge_qbase_reg_field {
816*7e6ad469SVishal Kulkarni 	u32 reg_addr;
817*7e6ad469SVishal Kulkarni 	u32 reg_data[4];
818*7e6ad469SVishal Kulkarni 	u32 pf_data_value[8][4]; /* [max pf][4 data reg SGE_QBASE_MAP[0-3] */
819*7e6ad469SVishal Kulkarni 	u32 vf_data_value[256][4]; /* [max vf][4 data reg SGE_QBASE_MAP[0-3] */
820*7e6ad469SVishal Kulkarni 	u32 vfcount;
821*7e6ad469SVishal Kulkarni };
822*7e6ad469SVishal Kulkarni 
823*7e6ad469SVishal Kulkarni struct cudbg_qdesc_entry {
824*7e6ad469SVishal Kulkarni 	u32 data_size;
825*7e6ad469SVishal Kulkarni 	u32 qtype;
826*7e6ad469SVishal Kulkarni 	u32 qid;
827*7e6ad469SVishal Kulkarni 	u32 desc_size;
828*7e6ad469SVishal Kulkarni 	u32 num_desc;
829*7e6ad469SVishal Kulkarni 	u8 data[0]; /* Must be last */
830*7e6ad469SVishal Kulkarni };
831*7e6ad469SVishal Kulkarni 
832*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t6_tp_pio_array[][4] = {
833*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x020, 28}, /* t6_tp_pio_regs_20_to_3b */
834*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x040, 10}, /* t6_tp_pio_regs_40_to_49 */
835*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x050, 10}, /* t6_tp_pio_regs_50_to_59 */
836*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x060, 14}, /* t6_tp_pio_regs_60_to_6d */
837*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x06F, 1}, /* t6_tp_pio_regs_6f */
838*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x070, 6}, /* t6_tp_pio_regs_70_to_75 */
839*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x130, 18},  /* t6_tp_pio_regs_130_to_141 */
840*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x145, 19}, /* t6_tp_pio_regs_145_to_157 */
841*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x160, 1}, /* t6_tp_pio_regs_160 */
842*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x230, 25}, /* t6_tp_pio_regs_230_to_248 */
843*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x24a, 3}, /* t6_tp_pio_regs_24c */
844*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x8C0, 1} /* t6_tp_pio_regs_8c0 */
845*7e6ad469SVishal Kulkarni };
846*7e6ad469SVishal Kulkarni 
847*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_tp_pio_array[][4] = {
848*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x020, 28}, /* t5_tp_pio_regs_20_to_3b */
849*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x040, 19}, /* t5_tp_pio_regs_40_to_52 */
850*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x054, 2}, /* t5_tp_pio_regs_54_to_55 */
851*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x060, 13}, /* t5_tp_pio_regs_60_to_6c */
852*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x06F, 1}, /* t5_tp_pio_regs_6f */
853*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x120, 4}, /* t5_tp_pio_regs_120_to_123 */
854*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x12b, 2},  /* t5_tp_pio_regs_12b_to_12c */
855*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x12f, 21}, /* t5_tp_pio_regs_12f_to_143 */
856*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x145, 19}, /* t5_tp_pio_regs_145_to_157 */
857*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x230, 25}, /* t5_tp_pio_regs_230_to_248 */
858*7e6ad469SVishal Kulkarni 	{0x7e40, 0x7e44, 0x8C0, 1} /* t5_tp_pio_regs_8c0 */
859*7e6ad469SVishal Kulkarni };
860*7e6ad469SVishal Kulkarni 
861*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t6_ma_ireg_array[][4] = {
862*7e6ad469SVishal Kulkarni 	{0x78f8, 0x78fc, 0xa000, 23}, /* t6_ma_regs_a000_to_a016 */
863*7e6ad469SVishal Kulkarni 	{0x78f8, 0x78fc, 0xa400, 30}, /* t6_ma_regs_a400_to_a41e */
864*7e6ad469SVishal Kulkarni 	{0x78f8, 0x78fc, 0xa800, 20}  /* t6_ma_regs_a800_to_a813 */
865*7e6ad469SVishal Kulkarni };
866*7e6ad469SVishal Kulkarni 
867*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t6_ma_ireg_array2[][4] = {
868*7e6ad469SVishal Kulkarni 	{0x78f8, 0x78fc, 0xe400, 17}, /* t6_ma_regs_e400_to_e600 */
869*7e6ad469SVishal Kulkarni 	{0x78f8, 0x78fc, 0xe640, 13} /* t6_ma_regs_e640_to_e7c0 */
870*7e6ad469SVishal Kulkarni };
871*7e6ad469SVishal Kulkarni 
872*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t6_hma_ireg_array[][4] = {
873*7e6ad469SVishal Kulkarni 	{0x51320, 0x51324, 0xa000, 32} /* t6_hma_regs_a000_to_a01f */
874*7e6ad469SVishal Kulkarni };
875*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_pcie_pdbg_array[][4] = {
876*7e6ad469SVishal Kulkarni 	{0x5a04, 0x5a0c, 0x00, 0x20}, /* t5_pcie_pdbg_regs_00_to_20 */
877*7e6ad469SVishal Kulkarni 	{0x5a04, 0x5a0c, 0x21, 0x20}, /* t5_pcie_pdbg_regs_21_to_40 */
878*7e6ad469SVishal Kulkarni 	{0x5a04, 0x5a0c, 0x41, 0x10}, /* t5_pcie_pdbg_regs_41_to_50 */
879*7e6ad469SVishal Kulkarni };
880*7e6ad469SVishal Kulkarni 
881*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_pcie_config_array[][2] = {
882*7e6ad469SVishal Kulkarni 	{0x0, 0x34},
883*7e6ad469SVishal Kulkarni 	{0x3c, 0x40},
884*7e6ad469SVishal Kulkarni 	{0x50, 0x64},
885*7e6ad469SVishal Kulkarni 	{0x70, 0x80},
886*7e6ad469SVishal Kulkarni 	{0x94, 0xa0},
887*7e6ad469SVishal Kulkarni 	{0xb0, 0xb8},
888*7e6ad469SVishal Kulkarni 	{0xd0, 0xd4},
889*7e6ad469SVishal Kulkarni 	{0x100, 0x128},
890*7e6ad469SVishal Kulkarni 	{0x140, 0x148},
891*7e6ad469SVishal Kulkarni 	{0x150, 0x164},
892*7e6ad469SVishal Kulkarni 	{0x170, 0x178},
893*7e6ad469SVishal Kulkarni 	{0x180, 0x194},
894*7e6ad469SVishal Kulkarni 	{0x1a0, 0x1b8},
895*7e6ad469SVishal Kulkarni 	{0x1c0, 0x208},
896*7e6ad469SVishal Kulkarni };
897*7e6ad469SVishal Kulkarni 
898*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_pcie_cdbg_array[][4] = {
899*7e6ad469SVishal Kulkarni 	{0x5a10, 0x5a18, 0x00, 0x20}, /* t5_pcie_cdbg_regs_00_to_20 */
900*7e6ad469SVishal Kulkarni 	{0x5a10, 0x5a18, 0x21, 0x18}, /* t5_pcie_cdbg_regs_21_to_37 */
901*7e6ad469SVishal Kulkarni };
902*7e6ad469SVishal Kulkarni 
903*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t6_tp_tm_pio_array[1][4] = {
904*7e6ad469SVishal Kulkarni 	{0x7e18, 0x7e1c, 0x0, 12}
905*7e6ad469SVishal Kulkarni };
906*7e6ad469SVishal Kulkarni 
907*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_tp_tm_pio_array[1][4] = {
908*7e6ad469SVishal Kulkarni 	{0x7e18, 0x7e1c, 0x0, 12}
909*7e6ad469SVishal Kulkarni };
910*7e6ad469SVishal Kulkarni 
911*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_pm_rx_array[][4] = {
912*7e6ad469SVishal Kulkarni 	{0x8FD0, 0x8FD4, 0x10000, 0x20}, /* t5_pm_rx_regs_10000_to_10020 */
913*7e6ad469SVishal Kulkarni 	{0x8FD0, 0x8FD4, 0x10021, 0x0D}, /* t5_pm_rx_regs_10021_to_1002c */
914*7e6ad469SVishal Kulkarni };
915*7e6ad469SVishal Kulkarni 
916*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_pm_tx_array[][4] = {
917*7e6ad469SVishal Kulkarni 	{0x8FF0, 0x8FF4, 0x10000, 0x20}, /* t5_pm_tx_regs_10000_to_10020 */
918*7e6ad469SVishal Kulkarni 	{0x8FF0, 0x8FF4, 0x10021, 0x1D}, /* t5_pm_tx_regs_10021_to_1003c */
919*7e6ad469SVishal Kulkarni };
920*7e6ad469SVishal Kulkarni 
921*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t6_tp_mib_index_array[6][4] = {
922*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x0, 13},
923*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x10, 6},
924*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x18, 21},
925*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x30, 32},
926*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x50, 22},
927*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x68, 12}
928*7e6ad469SVishal Kulkarni };
929*7e6ad469SVishal Kulkarni 
930*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_tp_mib_index_array[9][4] = {
931*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x0, 13},
932*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x10, 6},
933*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x18, 8},
934*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x20, 13},
935*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x30, 16},
936*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x40, 16},
937*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x50, 16},
938*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x60, 6},
939*7e6ad469SVishal Kulkarni 	{0x7e50, 0x7e54, 0x68, 4}
940*7e6ad469SVishal Kulkarni };
941*7e6ad469SVishal Kulkarni 
942*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_sge_dbg_index_array[9][4] = {
943*7e6ad469SVishal Kulkarni 	{0x10cc, 0x10d0, 0x0, 16},
944*7e6ad469SVishal Kulkarni 	{0x10cc, 0x10d4, 0x0, 16},
945*7e6ad469SVishal Kulkarni };
946*7e6ad469SVishal Kulkarni 
947*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t6_up_cim_reg_array[][4] = {
948*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x2000, 0x20},   /* up_cim_2000_to_207c */
949*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x2080, 0x1d},   /* up_cim_2080_to_20fc */
950*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x00, 0x20},     /* up_cim_00_to_7c */
951*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x80, 0x20},     /* up_cim_80_to_fc */
952*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x100, 0x11},    /* up_cim_100_to_14c */
953*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x200, 0x10},    /* up_cim_200_to_23c */
954*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x240, 0x2},     /* up_cim_240_to_244 */
955*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x250, 0x2},     /* up_cim_250_to_254 */
956*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x260, 0x2},     /* up_cim_260_to_264 */
957*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x270, 0x2},     /* up_cim_270_to_274 */
958*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x280, 0x20},    /* up_cim_280_to_2fc */
959*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x300, 0x20},    /* up_cim_300_to_37c */
960*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x380, 0x14},    /* up_cim_380_to_3cc */
961*7e6ad469SVishal Kulkarni 
962*7e6ad469SVishal Kulkarni };
963*7e6ad469SVishal Kulkarni 
964*7e6ad469SVishal Kulkarni static u32 ATTRIBUTE_UNUSED t5_up_cim_reg_array[][4] = {
965*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x2000, 0x20},   /* up_cim_2000_to_207c */
966*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x2080, 0x19},   /* up_cim_2080_to_20ec */
967*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x00, 0x20},     /* up_cim_00_to_7c */
968*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x80, 0x20},     /* up_cim_80_to_fc */
969*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x100, 0x11},    /* up_cim_100_to_14c */
970*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x200, 0x10},    /* up_cim_200_to_23c */
971*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x240, 0x2},     /* up_cim_240_to_244 */
972*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x250, 0x2},     /* up_cim_250_to_254 */
973*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x260, 0x2},     /* up_cim_260_to_264 */
974*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x270, 0x2},     /* up_cim_270_to_274 */
975*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x280, 0x20},    /* up_cim_280_to_2fc */
976*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x300, 0x20},    /* up_cim_300_to_37c */
977*7e6ad469SVishal Kulkarni 	{0x7b50, 0x7b54, 0x380, 0x14},    /* up_cim_380_to_3cc */
978*7e6ad469SVishal Kulkarni };
979*7e6ad469SVishal Kulkarni 
980*7e6ad469SVishal Kulkarni #endif
981