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