#include "api/commands.h"
#include "debugfs.h"
#include "dbg.h"
#include <linux/seq_file.h>
#define FWRT_DEBUGFS_OPEN_WRAPPER(name, buflen, argtype) …
#define FWRT_DEBUGFS_READ_WRAPPER(name) …
static int _iwl_dbgfs_release(struct inode *inode, struct file *file)
{ … }
#define _FWRT_DEBUGFS_READ_FILE_OPS(name, buflen, argtype) …
#define FWRT_DEBUGFS_WRITE_WRAPPER(name, buflen, argtype) …
#define _FWRT_DEBUGFS_READ_WRITE_FILE_OPS(name, buflen, argtype) …
#define _FWRT_DEBUGFS_WRITE_FILE_OPS(name, buflen, argtype) …
#define FWRT_DEBUGFS_READ_FILE_OPS(name, bufsz) …
#define FWRT_DEBUGFS_WRITE_FILE_OPS(name, bufsz) …
#define FWRT_DEBUGFS_READ_WRITE_FILE_OPS(name, bufsz) …
#define FWRT_DEBUGFS_ADD_FILE_ALIAS(alias, name, parent, mode) …
#define FWRT_DEBUGFS_ADD_FILE(name, parent, mode) …
static int iwl_dbgfs_enabled_severities_write(struct iwl_fw_runtime *fwrt,
char *buf, size_t count)
{ … }
FWRT_DEBUGFS_WRITE_FILE_OPS(…);
static void iwl_fw_timestamp_marker_wk(struct work_struct *work)
{ … }
void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt, u32 delay)
{ … }
static ssize_t iwl_dbgfs_timestamp_marker_write(struct iwl_fw_runtime *fwrt,
char *buf, size_t count)
{ … }
static ssize_t iwl_dbgfs_timestamp_marker_read(struct iwl_fw_runtime *fwrt,
size_t size, char *buf)
{ … }
FWRT_DEBUGFS_READ_WRITE_FILE_OPS(…);
struct hcmd_write_data { … } __packed;
static ssize_t iwl_dbgfs_send_hcmd_write(struct iwl_fw_runtime *fwrt, char *buf,
size_t count)
{ … }
FWRT_DEBUGFS_WRITE_FILE_OPS(…);
static ssize_t iwl_dbgfs_fw_dbg_domain_read(struct iwl_fw_runtime *fwrt,
size_t size, char *buf)
{ … }
FWRT_DEBUGFS_READ_FILE_OPS(…);
struct iwl_dbgfs_fw_info_priv { … };
struct iwl_dbgfs_fw_info_state { … };
static void *iwl_dbgfs_fw_info_seq_next(struct seq_file *seq,
void *v, loff_t *pos)
{ … }
static void iwl_dbgfs_fw_info_seq_stop(struct seq_file *seq,
void *v)
{ … }
static void *iwl_dbgfs_fw_info_seq_start(struct seq_file *seq, loff_t *pos)
{
struct iwl_dbgfs_fw_info_priv *priv = seq->private;
const struct iwl_fw *fw = priv->fwrt->fw;
struct iwl_dbgfs_fw_info_state *state;
if (*pos >= fw->ucode_capa.n_cmd_versions)
return NULL;
state = kzalloc(sizeof(*state), GFP_KERNEL);
if (!state)
return NULL;
state->pos = *pos;
return state;
};
static int iwl_dbgfs_fw_info_seq_show(struct seq_file *seq, void *v)
{ … }
static const struct seq_operations iwl_dbgfs_info_seq_ops = …;
static int iwl_dbgfs_fw_info_open(struct inode *inode, struct file *filp)
{ … }
static const struct file_operations iwl_dbgfs_fw_info_ops = …;
void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt,
struct dentry *dbgfs_dir)
{ … }