162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/* Huawei HiNIC PCI Express Linux driver
362306a36Sopenharmony_ci * Copyright(c) 2017 Huawei Technologies Co., Ltd
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef HINIC_DEBUGFS_H
762306a36Sopenharmony_ci#define HINIC_DEBUGFS_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include "hinic_dev.h"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define    TBL_ID_FUNC_CFG_SM_NODE                      11
1262306a36Sopenharmony_ci#define    TBL_ID_FUNC_CFG_SM_INST                      1
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define HINIC_FUNCTION_CONFIGURE_TABLE_SIZE             64
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistruct hinic_cmd_lt_rd {
1762306a36Sopenharmony_ci	u8	status;
1862306a36Sopenharmony_ci	u8	version;
1962306a36Sopenharmony_ci	u8	rsvd0[6];
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	unsigned char node;
2262306a36Sopenharmony_ci	unsigned char inst;
2362306a36Sopenharmony_ci	unsigned char entry_size;
2462306a36Sopenharmony_ci	unsigned char rsvd;
2562306a36Sopenharmony_ci	unsigned int lt_index;
2662306a36Sopenharmony_ci	unsigned int offset;
2762306a36Sopenharmony_ci	unsigned int len;
2862306a36Sopenharmony_ci	unsigned char data[100];
2962306a36Sopenharmony_ci};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_cistruct tag_sml_funcfg_tbl {
3262306a36Sopenharmony_ci	union {
3362306a36Sopenharmony_ci		struct {
3462306a36Sopenharmony_ci			u32 rsvd0            :8;
3562306a36Sopenharmony_ci			u32 nic_rx_mode      :5;
3662306a36Sopenharmony_ci			u32 rsvd1            :18;
3762306a36Sopenharmony_ci			u32 valid            :1;
3862306a36Sopenharmony_ci		} bs;
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci		u32 value;
4162306a36Sopenharmony_ci	} dw0;
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	union {
4462306a36Sopenharmony_ci		struct {
4562306a36Sopenharmony_ci			u32 vlan_id             :12;
4662306a36Sopenharmony_ci			u32 vlan_mode           :3;
4762306a36Sopenharmony_ci			u32 fast_recycled_mode  :1;
4862306a36Sopenharmony_ci			u32 mtu                 :16;
4962306a36Sopenharmony_ci		} bs;
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci		u32 value;
5262306a36Sopenharmony_ci	} dw1;
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	u32 dw2;
5562306a36Sopenharmony_ci	u32 dw3;
5662306a36Sopenharmony_ci	u32 dw4;
5762306a36Sopenharmony_ci	u32 dw5;
5862306a36Sopenharmony_ci	u32 dw6;
5962306a36Sopenharmony_ci	u32 dw7;
6062306a36Sopenharmony_ci	u32 dw8;
6162306a36Sopenharmony_ci	u32 dw9;
6262306a36Sopenharmony_ci	u32 dw10;
6362306a36Sopenharmony_ci	u32 dw11;
6462306a36Sopenharmony_ci	u32 dw12;
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	union {
6762306a36Sopenharmony_ci		struct {
6862306a36Sopenharmony_ci			u32 rsvd2               :15;
6962306a36Sopenharmony_ci			u32 cfg_q_num           :9;
7062306a36Sopenharmony_ci			u32 cfg_rq_depth        :6;
7162306a36Sopenharmony_ci			u32 vhd_type            :2;
7262306a36Sopenharmony_ci		} bs;
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci		u32 value;
7562306a36Sopenharmony_ci	} dw13;
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	u32 dw14;
7862306a36Sopenharmony_ci	u32 dw15;
7962306a36Sopenharmony_ci};
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ciint hinic_sq_debug_add(struct hinic_dev *dev, u16 sq_id);
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_civoid hinic_sq_debug_rem(struct hinic_sq *sq);
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciint hinic_rq_debug_add(struct hinic_dev *dev, u16 rq_id);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_civoid hinic_rq_debug_rem(struct hinic_rq *rq);
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ciint hinic_func_table_debug_add(struct hinic_dev *dev);
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_civoid hinic_func_table_debug_rem(struct hinic_dev *dev);
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_civoid hinic_sq_dbgfs_init(struct hinic_dev *nic_dev);
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_civoid hinic_sq_dbgfs_uninit(struct hinic_dev *nic_dev);
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_civoid hinic_rq_dbgfs_init(struct hinic_dev *nic_dev);
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_civoid hinic_rq_dbgfs_uninit(struct hinic_dev *nic_dev);
10062306a36Sopenharmony_ci
10162306a36Sopenharmony_civoid hinic_func_tbl_dbgfs_init(struct hinic_dev *nic_dev);
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_civoid hinic_func_tbl_dbgfs_uninit(struct hinic_dev *nic_dev);
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_civoid hinic_dbg_init(struct hinic_dev *nic_dev);
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_civoid hinic_dbg_uninit(struct hinic_dev *nic_dev);
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_civoid hinic_dbg_register_debugfs(const char *debugfs_dir_name);
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_civoid hinic_dbg_unregister_debugfs(void);
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci#endif
114