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