15e69ea7eSYufeng Mo /* SPDX-License-Identifier: GPL-2.0+ */ 25e69ea7eSYufeng Mo /* Copyright (c) 2021 Hisilicon Limited. */ 35e69ea7eSYufeng Mo 45e69ea7eSYufeng Mo #ifndef __HNS3_DEBUGFS_H 55e69ea7eSYufeng Mo #define __HNS3_DEBUGFS_H 65e69ea7eSYufeng Mo 7184da9dcSJie Wang #include "hnae3.h" 8184da9dcSJie Wang 95e69ea7eSYufeng Mo #define HNS3_DBG_READ_LEN 65536 10e76e6886SJiaran Zhang #define HNS3_DBG_READ_LEN_128KB 0x20000 11e44c495dSHao Chen #define HNS3_DBG_READ_LEN_1MB 0x100000 1277e91848SHuazhong Tan #define HNS3_DBG_READ_LEN_4MB 0x400000 13*89f6bfb0SJie Wang #define HNS3_DBG_READ_LEN_5MB 0x500000 145e69ea7eSYufeng Mo #define HNS3_DBG_WRITE_LEN 1024 155e69ea7eSYufeng Mo 1677e91848SHuazhong Tan #define HNS3_DBG_DATA_STR_LEN 32 1777e91848SHuazhong Tan #define HNS3_DBG_INFO_LEN 256 1877e91848SHuazhong Tan #define HNS3_DBG_ITEM_NAME_LEN 32 1977e91848SHuazhong Tan #define HNS3_DBG_FILE_NAME_LEN 16 2077e91848SHuazhong Tan 2177e91848SHuazhong Tan struct hns3_dbg_item { 2277e91848SHuazhong Tan char name[HNS3_DBG_ITEM_NAME_LEN]; 2377e91848SHuazhong Tan u16 interval; /* blank numbers after the item */ 2477e91848SHuazhong Tan }; 2577e91848SHuazhong Tan 2677e91848SHuazhong Tan struct hns3_dbg_data { 2777e91848SHuazhong Tan struct hnae3_handle *handle; 2855649d56SYufeng Mo enum hnae3_dbg_cmd cmd; 2977e91848SHuazhong Tan u16 qid; 3077e91848SHuazhong Tan }; 3177e91848SHuazhong Tan 325e69ea7eSYufeng Mo enum hns3_dbg_dentry_type { 335e69ea7eSYufeng Mo HNS3_DBG_DENTRY_TM, 3477e91848SHuazhong Tan HNS3_DBG_DENTRY_TX_BD, 3577e91848SHuazhong Tan HNS3_DBG_DENTRY_RX_BD, 361556ea91SHuazhong Tan HNS3_DBG_DENTRY_MAC, 37d96b0e59SYufeng Mo HNS3_DBG_DENTRY_REG, 38d2f737cfSHao Chen HNS3_DBG_DENTRY_QUEUE, 39b5a0b70dSHao Chen HNS3_DBG_DENTRY_FD, 405e69ea7eSYufeng Mo HNS3_DBG_DENTRY_COMMON, 415e69ea7eSYufeng Mo }; 425e69ea7eSYufeng Mo 435e69ea7eSYufeng Mo struct hns3_dbg_dentry_info { 445e69ea7eSYufeng Mo const char *name; 455e69ea7eSYufeng Mo struct dentry *dentry; 465e69ea7eSYufeng Mo }; 475e69ea7eSYufeng Mo 485e69ea7eSYufeng Mo struct hns3_dbg_cmd_info { 495e69ea7eSYufeng Mo const char *name; 505e69ea7eSYufeng Mo enum hnae3_dbg_cmd cmd; 515e69ea7eSYufeng Mo enum hns3_dbg_dentry_type dentry; 525e69ea7eSYufeng Mo u32 buf_len; 535e69ea7eSYufeng Mo int (*init)(struct hnae3_handle *handle, unsigned int cmd); 545e69ea7eSYufeng Mo }; 555e69ea7eSYufeng Mo 56c929bc2aSJiaran Zhang struct hns3_dbg_func { 57c929bc2aSJiaran Zhang enum hnae3_dbg_cmd cmd; 58c929bc2aSJiaran Zhang int (*dbg_dump)(struct hnae3_handle *handle, char *buf, int len); 5977e91848SHuazhong Tan int (*dbg_dump_bd)(struct hns3_dbg_data *data, char *buf, int len); 60c929bc2aSJiaran Zhang }; 61c929bc2aSJiaran Zhang 62c929bc2aSJiaran Zhang struct hns3_dbg_cap_info { 63c929bc2aSJiaran Zhang const char *name; 64c929bc2aSJiaran Zhang enum HNAE3_DEV_CAP_BITS cap_bit; 65c929bc2aSJiaran Zhang }; 66c929bc2aSJiaran Zhang 675e69ea7eSYufeng Mo #endif 68