summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSayali Lokhande <sayalil@codeaurora.org>2017-09-20 19:39:18 +0530
committerSayali Lokhande <sayalil@codeaurora.org>2017-11-29 11:11:42 +0530
commitcf2ea6ea6a74e26f2d3edad18a6e261e27978c26 (patch)
treef5df8b8ecf8d4302e51aba2f4951241b31b79f58 /drivers
parent2e22873571a7e0d6b8e9f54943de851598c8863c (diff)
scsi: ufs: Add counter for hibernate and gear switch
This change adds few more debugfs entries to capture statistics regarding the ufs driver. This information include: 1. ufs hibernate exit count 2. ufs power mode change count usage : cat /sys/kernel/debug/ufshcd0/show_hba Change-Id: I75ac694c1f7e98d527392372300d16ad911ac512 Signed-off-by: Sayali Lokhande <sayalil@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/ufs/ufs-debugfs.c6
-rw-r--r--drivers/scsi/ufs/ufshcd.c4
-rw-r--r--drivers/scsi/ufs/ufshcd.h1
3 files changed, 7 insertions, 4 deletions
diff --git a/drivers/scsi/ufs/ufs-debugfs.c b/drivers/scsi/ufs/ufs-debugfs.c
index 0547853c4f3a..51eef0d5e95c 100644
--- a/drivers/scsi/ufs/ufs-debugfs.c
+++ b/drivers/scsi/ufs/ufs-debugfs.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2013-2016, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -950,6 +950,10 @@ static int ufsdbg_show_hba_show(struct seq_file *file, void *data)
seq_printf(file, "hba->saved_err = 0x%x\n", hba->saved_err);
seq_printf(file, "hba->saved_uic_err = 0x%x\n", hba->saved_uic_err);
+ seq_printf(file, "power_mode_change_cnt = %d\n",
+ hba->ufs_stats.power_mode_change_cnt);
+ seq_printf(file, "hibern8_exit_cnt = %d\n",
+ hba->ufs_stats.hibern8_exit_cnt);
return 0;
}
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 34109bbe69ac..7fd8ffe17707 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -4729,6 +4729,7 @@ int ufshcd_change_power_mode(struct ufs_hba *hba,
memcpy(&hba->pwr_info, pwr_mode,
sizeof(struct ufs_pa_layer_attr));
+ hba->ufs_stats.power_mode_change_cnt++;
}
return ret;
@@ -7450,9 +7451,6 @@ static void ufshcd_clear_dbg_ufs_stats(struct ufs_hba *hba)
{
int err_reg_hist_size = sizeof(struct ufs_uic_err_reg_hist);
- hba->ufs_stats.hibern8_exit_cnt = 0;
- hba->ufs_stats.last_hibern8_exit_tstamp = ktime_set(0, 0);
-
memset(&hba->ufs_stats.pa_err, 0, err_reg_hist_size);
memset(&hba->ufs_stats.dl_err, 0, err_reg_hist_size);
memset(&hba->ufs_stats.nl_err, 0, err_reg_hist_size);
diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index dbc80848ed8b..5a7cf839b4fd 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -638,6 +638,7 @@ struct ufs_stats {
struct ufshcd_clk_ctx clk_rel;
u32 hibern8_exit_cnt;
ktime_t last_hibern8_exit_tstamp;
+ u32 power_mode_change_cnt;
struct ufs_uic_err_reg_hist pa_err;
struct ufs_uic_err_reg_hist dl_err;
struct ufs_uic_err_reg_hist nl_err;