xref: /linux/drivers/net/wireless/intel/iwlwifi/mvm/debugfs.h (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2 /*
3  * Copyright (C) 2023 Intel Corporation
4  * Copyright (C) 2012-2014 Intel Corporation
5  * Copyright (C) 2013-2014 Intel Mobile Communications GmbH
6  */
7 #define MVM_DEBUGFS_READ_FILE_OPS(name)					\
8 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
9 	.read = iwl_dbgfs_##name##_read,				\
10 	.open = simple_open,						\
11 	.llseek = generic_file_llseek,					\
12 }
13 
14 #define MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype)		\
15 static ssize_t _iwl_dbgfs_##name##_write(struct file *file,		\
16 					 const char __user *user_buf,	\
17 					 size_t count, loff_t *ppos)	\
18 {									\
19 	argtype *arg = file->private_data;				\
20 	char buf[buflen] = {};						\
21 	size_t buf_size = min(count, sizeof(buf) -  1);			\
22 									\
23 	if (copy_from_user(buf, user_buf, buf_size))			\
24 		return -EFAULT;						\
25 									\
26 	return iwl_dbgfs_##name##_write(arg, buf, buf_size, ppos);	\
27 }									\
28 
29 #define _MVM_DEBUGFS_READ_WRITE_FILE_OPS(name, buflen, argtype)		\
30 MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype)			\
31 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
32 	.write = _iwl_dbgfs_##name##_write,				\
33 	.read = iwl_dbgfs_##name##_read,				\
34 	.open = simple_open,						\
35 	.llseek = generic_file_llseek,					\
36 };
37 
38 #define _MVM_DEBUGFS_WRITE_FILE_OPS(name, buflen, argtype)		\
39 MVM_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype)			\
40 static const struct file_operations iwl_dbgfs_##name##_ops = {		\
41 	.write = _iwl_dbgfs_##name##_write,				\
42 	.open = simple_open,						\
43 	.llseek = generic_file_llseek,					\
44 };
45