Merge tag 'soc-drivers-6.9' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-block.git] / drivers / net / wireless / intel / iwlwifi / mvm / debugfs.h
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 };