xref: /openbmc/linux/drivers/net/ethernet/huawei/hinic/hinic_debugfs.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1253ac3a9SLuo bin /* SPDX-License-Identifier: GPL-2.0-only */
2253ac3a9SLuo bin /* Huawei HiNIC PCI Express Linux driver
3253ac3a9SLuo bin  * Copyright(c) 2017 Huawei Technologies Co., Ltd
4253ac3a9SLuo bin  */
5253ac3a9SLuo bin 
6253ac3a9SLuo bin #ifndef HINIC_DEBUGFS_H
7253ac3a9SLuo bin #define HINIC_DEBUGFS_H
8253ac3a9SLuo bin 
9253ac3a9SLuo bin #include "hinic_dev.h"
10253ac3a9SLuo bin 
11*5215e162SLuo bin #define    TBL_ID_FUNC_CFG_SM_NODE                      11
12*5215e162SLuo bin #define    TBL_ID_FUNC_CFG_SM_INST                      1
13*5215e162SLuo bin 
14*5215e162SLuo bin #define HINIC_FUNCTION_CONFIGURE_TABLE_SIZE             64
15*5215e162SLuo bin 
16*5215e162SLuo bin struct hinic_cmd_lt_rd {
17*5215e162SLuo bin 	u8	status;
18*5215e162SLuo bin 	u8	version;
19*5215e162SLuo bin 	u8	rsvd0[6];
20*5215e162SLuo bin 
21*5215e162SLuo bin 	unsigned char node;
22*5215e162SLuo bin 	unsigned char inst;
23*5215e162SLuo bin 	unsigned char entry_size;
24*5215e162SLuo bin 	unsigned char rsvd;
25*5215e162SLuo bin 	unsigned int lt_index;
26*5215e162SLuo bin 	unsigned int offset;
27*5215e162SLuo bin 	unsigned int len;
28*5215e162SLuo bin 	unsigned char data[100];
29*5215e162SLuo bin };
30*5215e162SLuo bin 
31*5215e162SLuo bin struct tag_sml_funcfg_tbl {
32*5215e162SLuo bin 	union {
33*5215e162SLuo bin 		struct {
34*5215e162SLuo bin 			u32 rsvd0            :8;
35*5215e162SLuo bin 			u32 nic_rx_mode      :5;
36*5215e162SLuo bin 			u32 rsvd1            :18;
37*5215e162SLuo bin 			u32 valid            :1;
38*5215e162SLuo bin 		} bs;
39*5215e162SLuo bin 
40*5215e162SLuo bin 		u32 value;
41*5215e162SLuo bin 	} dw0;
42*5215e162SLuo bin 
43*5215e162SLuo bin 	union {
44*5215e162SLuo bin 		struct {
45*5215e162SLuo bin 			u32 vlan_id             :12;
46*5215e162SLuo bin 			u32 vlan_mode           :3;
47*5215e162SLuo bin 			u32 fast_recycled_mode  :1;
48*5215e162SLuo bin 			u32 mtu                 :16;
49*5215e162SLuo bin 		} bs;
50*5215e162SLuo bin 
51*5215e162SLuo bin 		u32 value;
52*5215e162SLuo bin 	} dw1;
53*5215e162SLuo bin 
54*5215e162SLuo bin 	u32 dw2;
55*5215e162SLuo bin 	u32 dw3;
56*5215e162SLuo bin 	u32 dw4;
57*5215e162SLuo bin 	u32 dw5;
58*5215e162SLuo bin 	u32 dw6;
59*5215e162SLuo bin 	u32 dw7;
60*5215e162SLuo bin 	u32 dw8;
61*5215e162SLuo bin 	u32 dw9;
62*5215e162SLuo bin 	u32 dw10;
63*5215e162SLuo bin 	u32 dw11;
64*5215e162SLuo bin 	u32 dw12;
65*5215e162SLuo bin 
66*5215e162SLuo bin 	union {
67*5215e162SLuo bin 		struct {
68*5215e162SLuo bin 			u32 rsvd2               :15;
69*5215e162SLuo bin 			u32 cfg_q_num           :9;
70*5215e162SLuo bin 			u32 cfg_rq_depth        :6;
71*5215e162SLuo bin 			u32 vhd_type            :2;
72*5215e162SLuo bin 		} bs;
73*5215e162SLuo bin 
74*5215e162SLuo bin 		u32 value;
75*5215e162SLuo bin 	} dw13;
76*5215e162SLuo bin 
77*5215e162SLuo bin 	u32 dw14;
78*5215e162SLuo bin 	u32 dw15;
79*5215e162SLuo bin };
80*5215e162SLuo bin 
81253ac3a9SLuo bin int hinic_sq_debug_add(struct hinic_dev *dev, u16 sq_id);
82253ac3a9SLuo bin 
83253ac3a9SLuo bin void hinic_sq_debug_rem(struct hinic_sq *sq);
84253ac3a9SLuo bin 
85626f0603SLuo bin int hinic_rq_debug_add(struct hinic_dev *dev, u16 rq_id);
86626f0603SLuo bin 
87626f0603SLuo bin void hinic_rq_debug_rem(struct hinic_rq *rq);
88626f0603SLuo bin 
89*5215e162SLuo bin int hinic_func_table_debug_add(struct hinic_dev *dev);
90*5215e162SLuo bin 
91*5215e162SLuo bin void hinic_func_table_debug_rem(struct hinic_dev *dev);
92*5215e162SLuo bin 
93253ac3a9SLuo bin void hinic_sq_dbgfs_init(struct hinic_dev *nic_dev);
94253ac3a9SLuo bin 
95253ac3a9SLuo bin void hinic_sq_dbgfs_uninit(struct hinic_dev *nic_dev);
96253ac3a9SLuo bin 
97626f0603SLuo bin void hinic_rq_dbgfs_init(struct hinic_dev *nic_dev);
98626f0603SLuo bin 
99626f0603SLuo bin void hinic_rq_dbgfs_uninit(struct hinic_dev *nic_dev);
100626f0603SLuo bin 
101*5215e162SLuo bin void hinic_func_tbl_dbgfs_init(struct hinic_dev *nic_dev);
102*5215e162SLuo bin 
103*5215e162SLuo bin void hinic_func_tbl_dbgfs_uninit(struct hinic_dev *nic_dev);
104*5215e162SLuo bin 
105253ac3a9SLuo bin void hinic_dbg_init(struct hinic_dev *nic_dev);
106253ac3a9SLuo bin 
107253ac3a9SLuo bin void hinic_dbg_uninit(struct hinic_dev *nic_dev);
108253ac3a9SLuo bin 
109253ac3a9SLuo bin void hinic_dbg_register_debugfs(const char *debugfs_dir_name);
110253ac3a9SLuo bin 
111253ac3a9SLuo bin void hinic_dbg_unregister_debugfs(void);
112253ac3a9SLuo bin 
113253ac3a9SLuo bin #endif
114