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