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) 2019 by Chelsio Communications, Inc.
14*7e6ad469SVishal Kulkarni  */
15*7e6ad469SVishal Kulkarni 
16*7e6ad469SVishal Kulkarni #ifndef __CUDBG_VIEW_H__
17*7e6ad469SVishal Kulkarni #define __CUDBG_VIEW_H__
18*7e6ad469SVishal Kulkarni 
19*7e6ad469SVishal Kulkarni #include "t4_hw.h"
20*7e6ad469SVishal Kulkarni #include "cudbg_lib_common.h"
21*7e6ad469SVishal Kulkarni 
22*7e6ad469SVishal Kulkarni #if defined(WIN32) || defined(__NT__) || defined(_WIN32) || defined(__WIN32__)
23*7e6ad469SVishal Kulkarni typedef boolean_t bool;
24*7e6ad469SVishal Kulkarni #endif
25*7e6ad469SVishal Kulkarni 
26*7e6ad469SVishal Kulkarni #define DECLARE_VIEW_FUNC(FOO)				\
27*7e6ad469SVishal Kulkarni 	int view_##FOO(char *, struct cudbg_entity_hdr *, \
28*7e6ad469SVishal Kulkarni  		     struct cudbg_buffer *, enum chip_type);
29*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(cim_q);
30*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(cim_la);
31*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(reg_dump);
32*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(cim_qcfg);
33*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(mc0_data);
34*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(mc1_data);
35*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(fw_devlog);
36*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(cim_ma_la);
37*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(edc0_data);
38*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(edc1_data);
39*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(rss);
40*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(rss_pf_config);
41*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(rss_key);
42*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(rss_vf_config);
43*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(rss_config);
44*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(path_mtu);
45*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(sw_state);
46*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(wtp);
47*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(pm_stats);
48*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(tcp_stats);
49*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(hw_sched);
50*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(tp_err_stats_show);
51*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(fcoe_stats);
52*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(rdma_stats);
53*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(tp_indirect);
54*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(sge_indirect);
55*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(cpl_stats);
56*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(ddp_stats);
57*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(wc_stats);
58*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(ulprx_la);
59*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(lb_stats);
60*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(tp_la);
61*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(meminfo);
62*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(cim_pif_la);
63*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(clk_info);
64*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(macstats);
65*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(pcie_indirect);
66*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(pm_indirect);
67*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(full);
68*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(tx_rate);
69*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(tid);
70*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(pcie_config);
71*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(dump_context);
72*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(mps_tcam);
73*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(vpd_data);
74*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(le_tcam);
75*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(cctrl);
76*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(ma_indirect);
77*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(ulptx_la);
78*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(ext_entity);
79*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(up_cim_indirect);
80*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(pbt_tables);
81*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(mbox_log);
82*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(hma_indirect);
83*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(hma_data);
84*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(upload);
85*7e6ad469SVishal Kulkarni DECLARE_VIEW_FUNC(qdesc);
86*7e6ad469SVishal Kulkarni 
87*7e6ad469SVishal Kulkarni static int (*view_entity[]) (char *, struct cudbg_entity_hdr *,
88*7e6ad469SVishal Kulkarni 			     struct cudbg_buffer *, enum chip_type) = {
89*7e6ad469SVishal Kulkarni 	view_reg_dump,
90*7e6ad469SVishal Kulkarni 	view_fw_devlog,
91*7e6ad469SVishal Kulkarni 	view_cim_la,
92*7e6ad469SVishal Kulkarni 	view_cim_ma_la,
93*7e6ad469SVishal Kulkarni 	view_cim_qcfg,
94*7e6ad469SVishal Kulkarni 	view_cim_q,
95*7e6ad469SVishal Kulkarni 	view_cim_q,
96*7e6ad469SVishal Kulkarni 	view_cim_q,
97*7e6ad469SVishal Kulkarni 	view_cim_q,
98*7e6ad469SVishal Kulkarni 	view_cim_q,
99*7e6ad469SVishal Kulkarni 	view_cim_q,
100*7e6ad469SVishal Kulkarni 	view_cim_q,
101*7e6ad469SVishal Kulkarni 	view_cim_q,
102*7e6ad469SVishal Kulkarni 	view_cim_q,
103*7e6ad469SVishal Kulkarni 	view_cim_q,
104*7e6ad469SVishal Kulkarni 	view_cim_q,
105*7e6ad469SVishal Kulkarni 	view_cim_q,
106*7e6ad469SVishal Kulkarni 	view_edc0_data,
107*7e6ad469SVishal Kulkarni 	view_edc1_data,
108*7e6ad469SVishal Kulkarni 	view_mc0_data,
109*7e6ad469SVishal Kulkarni 	view_mc1_data,
110*7e6ad469SVishal Kulkarni 	view_rss,	    /*22*/
111*7e6ad469SVishal Kulkarni 	view_rss_pf_config, /*23*/
112*7e6ad469SVishal Kulkarni 	view_rss_key,	    /*24*/
113*7e6ad469SVishal Kulkarni 	view_rss_vf_config,
114*7e6ad469SVishal Kulkarni 	view_rss_config,
115*7e6ad469SVishal Kulkarni 	view_path_mtu,
116*7e6ad469SVishal Kulkarni 	view_sw_state,
117*7e6ad469SVishal Kulkarni 	view_wtp,
118*7e6ad469SVishal Kulkarni 	view_pm_stats,
119*7e6ad469SVishal Kulkarni 	view_hw_sched,
120*7e6ad469SVishal Kulkarni 	view_tcp_stats,
121*7e6ad469SVishal Kulkarni 	view_tp_err_stats_show,
122*7e6ad469SVishal Kulkarni 	view_fcoe_stats,
123*7e6ad469SVishal Kulkarni 	view_rdma_stats,
124*7e6ad469SVishal Kulkarni 	view_tp_indirect,
125*7e6ad469SVishal Kulkarni 	view_sge_indirect,
126*7e6ad469SVishal Kulkarni 	view_cpl_stats,
127*7e6ad469SVishal Kulkarni 	view_ddp_stats,
128*7e6ad469SVishal Kulkarni 	view_wc_stats,
129*7e6ad469SVishal Kulkarni 	view_ulprx_la,
130*7e6ad469SVishal Kulkarni 	view_lb_stats,
131*7e6ad469SVishal Kulkarni 	view_tp_la,
132*7e6ad469SVishal Kulkarni 	view_meminfo,
133*7e6ad469SVishal Kulkarni 	view_cim_pif_la,
134*7e6ad469SVishal Kulkarni 	view_clk_info,
135*7e6ad469SVishal Kulkarni 	view_cim_q,
136*7e6ad469SVishal Kulkarni 	view_cim_q,
137*7e6ad469SVishal Kulkarni 	view_macstats,
138*7e6ad469SVishal Kulkarni 	view_pcie_indirect,
139*7e6ad469SVishal Kulkarni 	view_pm_indirect,
140*7e6ad469SVishal Kulkarni 	view_full,
141*7e6ad469SVishal Kulkarni 	view_tx_rate,
142*7e6ad469SVishal Kulkarni 	view_tid,
143*7e6ad469SVishal Kulkarni 	view_pcie_config,
144*7e6ad469SVishal Kulkarni 	view_dump_context,
145*7e6ad469SVishal Kulkarni 	view_mps_tcam,
146*7e6ad469SVishal Kulkarni 	view_vpd_data,
147*7e6ad469SVishal Kulkarni 	view_le_tcam,
148*7e6ad469SVishal Kulkarni 	view_cctrl,
149*7e6ad469SVishal Kulkarni 	view_ma_indirect,
150*7e6ad469SVishal Kulkarni 	view_ulptx_la,
151*7e6ad469SVishal Kulkarni 	view_ext_entity,
152*7e6ad469SVishal Kulkarni 	view_up_cim_indirect,
153*7e6ad469SVishal Kulkarni 	view_pbt_tables,
154*7e6ad469SVishal Kulkarni 	view_mbox_log,
155*7e6ad469SVishal Kulkarni 	view_hma_indirect,
156*7e6ad469SVishal Kulkarni 	view_hma_data,
157*7e6ad469SVishal Kulkarni 	view_upload,
158*7e6ad469SVishal Kulkarni 	view_qdesc,
159*7e6ad469SVishal Kulkarni };
160*7e6ad469SVishal Kulkarni 
161*7e6ad469SVishal Kulkarni struct reg_info {
162*7e6ad469SVishal Kulkarni 	const char *name;
163*7e6ad469SVishal Kulkarni 	uint32_t addr;
164*7e6ad469SVishal Kulkarni 	uint32_t len;
165*7e6ad469SVishal Kulkarni };
166*7e6ad469SVishal Kulkarni 
167*7e6ad469SVishal Kulkarni struct mod_regs {
168*7e6ad469SVishal Kulkarni 	const char *name;
169*7e6ad469SVishal Kulkarni 	const struct reg_info *ri;
170*7e6ad469SVishal Kulkarni 	unsigned int offset;
171*7e6ad469SVishal Kulkarni };
172*7e6ad469SVishal Kulkarni 
173*7e6ad469SVishal Kulkarni static const char *yesno(int);
174*7e6ad469SVishal Kulkarni void translate_fw_devlog(void *, u32, u32 *, u32 *);
175*7e6ad469SVishal Kulkarni #define BIT(n)	(1U << n)
176*7e6ad469SVishal Kulkarni 
177*7e6ad469SVishal Kulkarni void cudbg_view_release_buff(char *pbuf, struct cudbg_buffer *dc_buff);
178*7e6ad469SVishal Kulkarni void cudbg_print_flash_header(void *pinbuf);
179*7e6ad469SVishal Kulkarni #endif
180