On 9/05/22 12:42, Sajida Bhanu (Temp) wrote:Sure Thanks
Hi,So err_stats[MMC_ERR_ICE_CFG] would be zero and make
Thank you for the review.
Please find the inline comments.
Thanks,
Sajida
On 4/26/2022 1:24 PM, Adrian Hunter wrote:
On 25/04/22 19:00, Shaik Sajida Bhanu wrote:Sure
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");
MMC_ERR_ICE_CFG --> we don't have ICE config.+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.
no difference.
If you are going to check all then you could loop
through them
*val = 0;
for (i = 0; i < MMC_ERR_MAX; i++) {
if (host->err_stats[i]) {
*val = 1;
break;
}
}
Remaining we need to update, Thank you for pointing.
+ *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");
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);