162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */ 262306a36Sopenharmony_ci/* Copyright (c) 2021 Hisilicon Limited. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __HNS3_DEBUGFS_H 562306a36Sopenharmony_ci#define __HNS3_DEBUGFS_H 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include "hnae3.h" 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci#define HNS3_DBG_READ_LEN 65536 1062306a36Sopenharmony_ci#define HNS3_DBG_READ_LEN_128KB 0x20000 1162306a36Sopenharmony_ci#define HNS3_DBG_READ_LEN_1MB 0x100000 1262306a36Sopenharmony_ci#define HNS3_DBG_READ_LEN_4MB 0x400000 1362306a36Sopenharmony_ci#define HNS3_DBG_READ_LEN_5MB 0x500000 1462306a36Sopenharmony_ci#define HNS3_DBG_WRITE_LEN 1024 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#define HNS3_DBG_DATA_STR_LEN 32 1762306a36Sopenharmony_ci#define HNS3_DBG_INFO_LEN 256 1862306a36Sopenharmony_ci#define HNS3_DBG_ITEM_NAME_LEN 32 1962306a36Sopenharmony_ci#define HNS3_DBG_FILE_NAME_LEN 16 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistruct hns3_dbg_item { 2262306a36Sopenharmony_ci char name[HNS3_DBG_ITEM_NAME_LEN]; 2362306a36Sopenharmony_ci u16 interval; /* blank numbers after the item */ 2462306a36Sopenharmony_ci}; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_cistruct hns3_dbg_data { 2762306a36Sopenharmony_ci struct hnae3_handle *handle; 2862306a36Sopenharmony_ci enum hnae3_dbg_cmd cmd; 2962306a36Sopenharmony_ci u16 qid; 3062306a36Sopenharmony_ci}; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_cienum hns3_dbg_dentry_type { 3362306a36Sopenharmony_ci HNS3_DBG_DENTRY_TM, 3462306a36Sopenharmony_ci HNS3_DBG_DENTRY_TX_BD, 3562306a36Sopenharmony_ci HNS3_DBG_DENTRY_RX_BD, 3662306a36Sopenharmony_ci HNS3_DBG_DENTRY_MAC, 3762306a36Sopenharmony_ci HNS3_DBG_DENTRY_REG, 3862306a36Sopenharmony_ci HNS3_DBG_DENTRY_QUEUE, 3962306a36Sopenharmony_ci HNS3_DBG_DENTRY_FD, 4062306a36Sopenharmony_ci HNS3_DBG_DENTRY_COMMON, 4162306a36Sopenharmony_ci}; 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cistruct hns3_dbg_dentry_info { 4462306a36Sopenharmony_ci const char *name; 4562306a36Sopenharmony_ci struct dentry *dentry; 4662306a36Sopenharmony_ci}; 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_cistruct hns3_dbg_cmd_info { 4962306a36Sopenharmony_ci const char *name; 5062306a36Sopenharmony_ci enum hnae3_dbg_cmd cmd; 5162306a36Sopenharmony_ci enum hns3_dbg_dentry_type dentry; 5262306a36Sopenharmony_ci u32 buf_len; 5362306a36Sopenharmony_ci int (*init)(struct hnae3_handle *handle, unsigned int cmd); 5462306a36Sopenharmony_ci}; 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cistruct hns3_dbg_func { 5762306a36Sopenharmony_ci enum hnae3_dbg_cmd cmd; 5862306a36Sopenharmony_ci int (*dbg_dump)(struct hnae3_handle *handle, char *buf, int len); 5962306a36Sopenharmony_ci int (*dbg_dump_bd)(struct hns3_dbg_data *data, char *buf, int len); 6062306a36Sopenharmony_ci}; 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_cistruct hns3_dbg_cap_info { 6362306a36Sopenharmony_ci const char *name; 6462306a36Sopenharmony_ci enum HNAE3_DEV_CAP_BITS cap_bit; 6562306a36Sopenharmony_ci}; 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci#endif 68