Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1355225
| From | Yaniv Gardi <ygardi@codeaurora.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH v8 14/17] scsi: ufs: add device quirk delay before putting UFS rails in LPM |
| Date | 2016-03-10 16:50 +0100 |
| Message-ID | <rbb0C-AW-13@gated-at.bofh.it> (permalink) |
| References | <rbaQW-vD-17@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
We put the UFS device in sleep state & UFS link in hibern8 state during
runtime suspend. After this we put all the UFS rails in low power
modes immediately but it seems some devices may still draw more than
sleep current from UFS rails (especially from VCCQ rail) at-least for
500us.
To avoid this situation, this change adds 2ms delay before putting
these UFS rails in LPM mode.
Reviewed-by: Gilad Broner <gbroner@codeaurora.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Signed-off-by: Yaniv Gardi <ygardi@codeaurora.org>
---
drivers/scsi/ufs/ufs_quirks.h | 14 +++++++++++++-
drivers/scsi/ufs/ufshcd.c | 10 ++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/ufs/ufs_quirks.h b/drivers/scsi/ufs/ufs_quirks.h
index 62ebd89..ee4ab85 100644
--- a/drivers/scsi/ufs/ufs_quirks.h
+++ b/drivers/scsi/ufs/ufs_quirks.h
@@ -18,7 +18,7 @@
/* return true if s1 is a prefix of s2 */
#define STR_PRFX_EQUAL(s1, s2) !strncmp(s1, s2, strlen(s1))
-#define UFS_ANY_VENDOR -1
+#define UFS_ANY_VENDOR 0xFFFF
#define UFS_ANY_MODEL "ANY_MODEL"
#define MAX_MODEL_LEN 16
@@ -119,16 +119,28 @@ struct ufs_dev_fix {
*/
#define UFS_DEVICE_NO_FASTAUTO (1 << 5)
+/*
+ * It seems some UFS devices may keep drawing more than sleep current
+ * (atleast for 500us) from UFS rails (especially from VCCQ rail).
+ * To avoid this situation, add 2ms delay before putting these UFS
+ * rails in LPM mode.
+ */
+#define UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM (1 << 6)
+
struct ufs_hba;
void ufs_advertise_fixup_device(struct ufs_hba *hba);
static struct ufs_dev_fix ufs_fixups[] = {
/* UFS cards deviations table */
+ UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
+ UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM),
UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL, UFS_DEVICE_NO_VCCQ),
UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
UFS_DEVICE_QUIRK_RECOVERY_FROM_DL_NAC_ERRORS),
UFS_FIX(UFS_VENDOR_SAMSUNG, UFS_ANY_MODEL,
UFS_DEVICE_NO_FASTAUTO),
+ UFS_FIX(UFS_VENDOR_TOSHIBA, UFS_ANY_MODEL,
+ UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM),
UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9C8KBADG",
UFS_DEVICE_QUIRK_PA_TACTIVATE),
UFS_FIX(UFS_VENDOR_TOSHIBA, "THGLF2G9D8KBADG",
diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 93cc02f..f8fa72c 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -5716,6 +5716,16 @@ out:
static void ufshcd_vreg_set_lpm(struct ufs_hba *hba)
{
/*
+ * It seems some UFS devices may keep drawing more than sleep current
+ * (atleast for 500us) from UFS rails (especially from VCCQ rail).
+ * To avoid this situation, add 2ms delay before putting these UFS
+ * rails in LPM mode.
+ */
+ if (!ufshcd_is_link_active(hba) &&
+ hba->dev_quirks & UFS_DEVICE_QUIRK_DELAY_BEFORE_LPM)
+ usleep_range(2000, 2100);
+
+ /*
* If UFS device is either in UFS_Sleep turn off VCC rail to save some
* power.
*
--
1.8.5.2
--
QUALCOMM ISRAEL, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH v8 00/17] add fixes, device quirks, error recovery, Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 02/17] scsi: ufs: avoid spurious UFS host controller interrupts Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 17/17] scsi: ufs-qcom: add printouts of testbus debug registers Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 01/17] scsi: ufs-qcom: add number of lanes per direction Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 10/17] scsi: ufs: add retry for query descriptors Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 13/17] scsi: ufs: fix leakage during link off state Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 16/17] scsi: ufs-qcom: enable/disable the device ref clock Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 11/17] scsi: ufs: handle non spec compliant bkops behaviour by device Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 04/17] scsi: ufs: verify hba controller hce reg value Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 15/17] scsi: ufs-qcom: set PA_Local_TX_LCC_Enable before link startup Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:40 +0100
[PATCH v8 08/17] scsi: ufs: make error handling bit faster Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
[PATCH v8 14/17] scsi: ufs: add device quirk delay before putting UFS rails in LPM Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
[PATCH v8 07/17] scsi: ufs: disable vccq if it's not needed by UFS device Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
[PATCH v8 05/17] scsi: ufs: add support to read device and string descriptors Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
[PATCH v8 09/17] scsi: ufs: add error recovery after DL NAC error Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
[PATCH v8 06/17] scsi: ufs: separate device and host quirks Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
[PATCH v8 03/17] scsi: ufs: implement scsi host timeout handler Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
[PATCH v8 12/17] scsi: ufs: tune UniPro parameters to optimize hibern8 exit time Yaniv Gardi <ygardi@codeaurora.org> - 2016-03-10 16:50 +0100
Re: [PATCH v8 00/17] add fixes, device quirks, error recovery, "Martin K. Petersen" <martin.petersen@oracle.com> - 2016-03-11 03:40 +0100
Re: [PATCH v8 00/17] add fixes, device quirks, error recovery, Hannes Reinecke <hare@suse.de> - 2016-03-11 10:00 +0100
Re: [PATCH v8 00/17] add fixes, device quirks, error recovery, "Martin K. Petersen" <martin.petersen@oracle.com> - 2016-03-14 21:10 +0100
csiph-web