On 26/04/22 10:54, Adrian Hunter wrote:Sure.. will use DEFINE_DEBUGFS_ATTRIBUTE
On 25/04/22 19:00, Shaik Sajida Bhanu wrote:Also, if possible, please use DEFINE_DEBUGFS_ATTRIBUTE / debugfs_create_file_unsafe
Add debug fs entry error state to query eMMC and SD card errors statistics.A blank line would be nice here
If any errors occurred in eMMC and SD card driver level then
err_state value will be set to 1.
Signed-off-by: Liangliang Lu <quic_luliang@xxxxxxxxxxx>
Signed-off-by: Sayali Lokhande <quic_sayalil@xxxxxxxxxxx>
Signed-off-by: Bao D. Nguyen <quic_nguyenb@xxxxxxxxxxx>
Signed-off-by: Shaik Sajida Bhanu <quic_c_sbhanu@xxxxxxxxxxx>
---
drivers/mmc/core/debugfs.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/drivers/mmc/core/debugfs.c b/drivers/mmc/core/debugfs.c
index 6aa5a60..2f5b63f 100644
--- a/drivers/mmc/core/debugfs.c
+++ b/drivers/mmc/core/debugfs.c
@@ -222,6 +222,29 @@ static int mmc_clock_opt_set(void *data, u64 val)
DEFINE_DEBUGFS_ATTRIBUTE(mmc_clock_fops, mmc_clock_opt_get, mmc_clock_opt_set,
"%llu\n");
+static int mmc_err_state_get(void *data, u64 *val)I am not sure why you have left out some err_stats[].
+{
+ struct mmc_host *host = data;
+
+ if (!host)
+ return -EINVAL;
+
Why not all of them? At least, it needs a comment to explain.
+ *val = host->err_stats[MMC_ERR_REQ_TIMEOUT] ||
+ host->err_stats[MMC_ERR_ADMA] ||
+ host->err_stats[MMC_ERR_CTRL_TIMEOUT] ||
+ host->err_stats[MMC_ERR_UNEXPECTED_IRQ] ||
+ host->err_stats[MMC_ERR_CMDQ_RED] ||
+ host->err_stats[MMC_ERR_CMDQ_GCE] ||
+ host->err_stats[MMC_ERR_CMDQ_ICCE] ||
+ host->err_stats[MMC_ERR_DAT_TIMEOUT] ||
+ host->err_stats[MMC_ERR_DAT_CRC] ||
+ host->err_stats[MMC_ERR_CMD_CRC] ||
+ host->err_stats[MMC_ERR_CMD_TIMEOUT];
+
+ return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(mmc_err_state, mmc_err_state_get, NULL, "%llu\n");
in this case
static int mmc_err_stats_show(struct seq_file *file, void *data)
{
@@ -289,6 +312,8 @@ void mmc_add_host_debugfs(struct mmc_host *host)
debugfs_create_file_unsafe("clock", S_IRUSR | S_IWUSR, root, host,
&mmc_clock_fops);
+ debugfs_create_file("err_state", 0600, root, host,
+ &mmc_err_state);
debugfs_create_file("err_stats", 0600, root, host,
&mmc_err_stats_fops);