162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright(c) 2015, 2016, 2018 Intel Corporation.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef _HFI1_DEBUGFS_H
762306a36Sopenharmony_ci#define _HFI1_DEBUGFS_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_cistruct hfi1_ibdev;
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define DEBUGFS_SEQ_FILE_OPS(name) \
1262306a36Sopenharmony_cistatic const struct seq_operations _##name##_seq_ops = { \
1362306a36Sopenharmony_ci	.start = _##name##_seq_start, \
1462306a36Sopenharmony_ci	.next  = _##name##_seq_next, \
1562306a36Sopenharmony_ci	.stop  = _##name##_seq_stop, \
1662306a36Sopenharmony_ci	.show  = _##name##_seq_show \
1762306a36Sopenharmony_ci}
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#define DEBUGFS_SEQ_FILE_OPEN(name) \
2062306a36Sopenharmony_cistatic int _##name##_open(struct inode *inode, struct file *s) \
2162306a36Sopenharmony_ci{ \
2262306a36Sopenharmony_ci	struct seq_file *seq; \
2362306a36Sopenharmony_ci	int ret; \
2462306a36Sopenharmony_ci	ret =  seq_open(s, &_##name##_seq_ops); \
2562306a36Sopenharmony_ci	if (ret) \
2662306a36Sopenharmony_ci		return ret; \
2762306a36Sopenharmony_ci	seq = s->private_data; \
2862306a36Sopenharmony_ci	seq->private = inode->i_private; \
2962306a36Sopenharmony_ci	return 0; \
3062306a36Sopenharmony_ci}
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_ci#define DEBUGFS_FILE_OPS(name) \
3362306a36Sopenharmony_cistatic const struct file_operations _##name##_file_ops = { \
3462306a36Sopenharmony_ci	.owner   = THIS_MODULE, \
3562306a36Sopenharmony_ci	.open    = _##name##_open, \
3662306a36Sopenharmony_ci	.read    = hfi1_seq_read, \
3762306a36Sopenharmony_ci	.llseek  = hfi1_seq_lseek, \
3862306a36Sopenharmony_ci	.release = seq_release \
3962306a36Sopenharmony_ci}
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_cissize_t hfi1_seq_read(struct file *file, char __user *buf, size_t size,
4362306a36Sopenharmony_ci		      loff_t *ppos);
4462306a36Sopenharmony_ciloff_t hfi1_seq_lseek(struct file *file, loff_t offset, int whence);
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#ifdef CONFIG_DEBUG_FS
4762306a36Sopenharmony_civoid hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd);
4862306a36Sopenharmony_civoid hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd);
4962306a36Sopenharmony_civoid hfi1_dbg_init(void);
5062306a36Sopenharmony_civoid hfi1_dbg_exit(void);
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci#else
5362306a36Sopenharmony_cistatic inline void hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd)
5462306a36Sopenharmony_ci{
5562306a36Sopenharmony_ci}
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cistatic inline void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd)
5862306a36Sopenharmony_ci{
5962306a36Sopenharmony_ci}
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_cistatic inline void hfi1_dbg_init(void)
6262306a36Sopenharmony_ci{
6362306a36Sopenharmony_ci}
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_cistatic inline void hfi1_dbg_exit(void)
6662306a36Sopenharmony_ci{
6762306a36Sopenharmony_ci}
6862306a36Sopenharmony_ci#endif
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#endif                          /* _HFI1_DEBUGFS_H */
71