Commit 1c09bf68 authored by Amitkumar Karwar's avatar Amitkumar Karwar Committed by John W. Linville

mwifiex: add fw_dump debugfs file

This option be useful to dump firmware memory for debugging
purpose. Actual code to dump firmware momory for SDIO and PCIe
chipsets will be added later.
Signed-off-by: default avatarAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: default avatarBing Zhao <bzhao@marvell.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent bc0df75a
...@@ -200,4 +200,11 @@ getlog ...@@ -200,4 +200,11 @@ getlog
cat getlog cat getlog
fw_dump
This command is used to dump firmware memory into files.
Separate file will be created for each memory segment.
Usage:
cat fw_dump
=============================================================================== ===============================================================================
...@@ -256,6 +256,29 @@ mwifiex_info_read(struct file *file, char __user *ubuf, ...@@ -256,6 +256,29 @@ mwifiex_info_read(struct file *file, char __user *ubuf,
return ret; return ret;
} }
/*
* Proc firmware dump read handler.
*
* This function is called when the 'fw_dump' file is opened for
* reading.
* This function dumps firmware memory in different files
* (ex. DTCM, ITCM, SQRAM etc.) based on the the segments for
* debugging.
*/
static ssize_t
mwifiex_fw_dump_read(struct file *file, char __user *ubuf,
size_t count, loff_t *ppos)
{
struct mwifiex_private *priv = file->private_data;
if (!priv->adapter->if_ops.fw_dump)
return -EIO;
priv->adapter->if_ops.fw_dump(priv->adapter);
return 0;
}
/* /*
* Proc getlog file read handler. * Proc getlog file read handler.
* *
...@@ -699,6 +722,7 @@ static const struct file_operations mwifiex_dfs_##name##_fops = { \ ...@@ -699,6 +722,7 @@ static const struct file_operations mwifiex_dfs_##name##_fops = { \
MWIFIEX_DFS_FILE_READ_OPS(info); MWIFIEX_DFS_FILE_READ_OPS(info);
MWIFIEX_DFS_FILE_READ_OPS(debug); MWIFIEX_DFS_FILE_READ_OPS(debug);
MWIFIEX_DFS_FILE_READ_OPS(getlog); MWIFIEX_DFS_FILE_READ_OPS(getlog);
MWIFIEX_DFS_FILE_READ_OPS(fw_dump);
MWIFIEX_DFS_FILE_OPS(regrdwr); MWIFIEX_DFS_FILE_OPS(regrdwr);
MWIFIEX_DFS_FILE_OPS(rdeeprom); MWIFIEX_DFS_FILE_OPS(rdeeprom);
...@@ -722,6 +746,7 @@ mwifiex_dev_debugfs_init(struct mwifiex_private *priv) ...@@ -722,6 +746,7 @@ mwifiex_dev_debugfs_init(struct mwifiex_private *priv)
MWIFIEX_DFS_ADD_FILE(getlog); MWIFIEX_DFS_ADD_FILE(getlog);
MWIFIEX_DFS_ADD_FILE(regrdwr); MWIFIEX_DFS_ADD_FILE(regrdwr);
MWIFIEX_DFS_ADD_FILE(rdeeprom); MWIFIEX_DFS_ADD_FILE(rdeeprom);
MWIFIEX_DFS_ADD_FILE(fw_dump);
} }
/* /*
......
...@@ -672,6 +672,7 @@ struct mwifiex_if_ops { ...@@ -672,6 +672,7 @@ struct mwifiex_if_ops {
int (*init_fw_port) (struct mwifiex_adapter *); int (*init_fw_port) (struct mwifiex_adapter *);
int (*dnld_fw) (struct mwifiex_adapter *, struct mwifiex_fw_image *); int (*dnld_fw) (struct mwifiex_adapter *, struct mwifiex_fw_image *);
void (*card_reset) (struct mwifiex_adapter *); void (*card_reset) (struct mwifiex_adapter *);
void (*fw_dump)(struct mwifiex_adapter *);
int (*clean_pcie_ring) (struct mwifiex_adapter *adapter); int (*clean_pcie_ring) (struct mwifiex_adapter *adapter);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment