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