From: Thierry Escande <thierry.escande@collabora.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: linux-mmc@vger.kernel.org
Subject: [PATCH] mmc: Hynix: add QUIRK_NOTIFY_POWEROFF_ON_SLEEP
Date: Mon, 3 Oct 2016 16:19:48 +0200 [thread overview]
Message-ID: <1475504388-31304-1-git-send-email-thierry.escande@collabora.com> (raw)
From: zhaojohn <john.zhao@intel.com>
Hynix eMMC devices sometimes take 50% longer to resume from sleep.
Based on a recommendation from Hynix, send a Power-Off Notification
before going to S3 to restore a resume time consistently within spec.
Signed-off-by: zhaojohn <john.zhao@intel.com>
Signed-off-by: Arindam Roy <arindam.roy@intel.com>
Tested-by: Freddy Paul <freddy.paul@intel.com>
Reviewed-by: Icarus W Sparry <icarus.w.sparry@intel.com>
Reviewed-by: Marc Herbert <marc.herbert@intel.com>
Reviewed-by: Eric Caruso <ejcaruso@chromium.org>
Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Thierry Escande <thierry.escande@collabora.com>
---
drivers/mmc/card/block.c | 8 ++++++++
drivers/mmc/core/mmc.c | 8 +++++++-
include/linux/mmc/card.h | 2 ++
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index 2206d44..cbc2d97 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -2572,6 +2572,14 @@ static const struct mmc_fixup blk_fixups[] =
MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc,
MMC_QUIRK_TRIM_BROKEN),
+ /*
+ * Hynix eMMC devices sometimes take 50% longer to resume from sleep.
+ * Based on a recommendation from Hynix, send a Power-Off Notification
+ * before going to S3 to restore a resume time consistently within spec.
+ */
+ MMC_FIXUP(CID_NAME_ANY, CID_MANFID_HYNIX, CID_OEMID_ANY, add_quirk_mmc,
+ MMC_QUIRK_NOTIFY_POWEROFF_ON_SLEEP),
+
END_FIXUP
};
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index f2d185c..46a4562 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1925,8 +1925,14 @@ static int _mmc_suspend(struct mmc_host *host, bool is_suspend)
if (mmc_can_poweroff_notify(host->card) &&
((host->caps2 & MMC_CAP2_FULL_PWR_CYCLE) || !is_suspend))
err = mmc_poweroff_notify(host->card, notify_type);
- else if (mmc_can_sleep(host->card))
+ else if (mmc_can_sleep(host->card)) {
+ if (host->card->quirks & MMC_QUIRK_NOTIFY_POWEROFF_ON_SLEEP) {
+ err = mmc_poweroff_notify(host->card, notify_type);
+ if (err)
+ goto out;
+ }
err = mmc_sleep(host);
+ }
else if (!mmc_host_is_spi(host))
err = mmc_deselect_cards(host);
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index d8673ca..30e34b0 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -281,6 +281,8 @@ struct mmc_card {
#define MMC_QUIRK_BROKEN_IRQ_POLLING (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */
#define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */
#define MMC_QUIRK_BROKEN_HPI (1<<13) /* Disable broken HPI support */
+#define MMC_QUIRK_NOTIFY_POWEROFF_ON_SLEEP \
+ (1<<14) /* Poweroff notification*/
unsigned int erase_size; /* erase size in sectors */
--
2.7.4
next reply other threads:[~2016-10-03 14:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-03 14:19 Thierry Escande [this message]
2016-10-25 10:03 ` [PATCH] mmc: Hynix: add QUIRK_NOTIFY_POWEROFF_ON_SLEEP Ulf Hansson
2016-10-27 15:06 ` Thierry Escande
2016-10-27 19:49 ` Ulf Hansson
2016-10-31 10:14 ` Alex Lemberg
2016-11-30 17:05 ` Thierry Escande
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1475504388-31304-1-git-send-email-thierry.escande@collabora.com \
--to=thierry.escande@collabora.com \
--cc=linux-mmc@vger.kernel.org \
--cc=ulf.hansson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.