summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorKrishna Konda <kkonda@codeaurora.org>2015-06-29 19:20:05 -0700
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-31 15:26:55 -0700
commit62c8dce6e1b42fe6ee356550a3092ca2db90ec22 (patch)
treebda69d7554abc5abcf0bcd1e50f4bb0b70440d97 /include/linux
parentb6c1c166809f7141efb13c2805027f189a75597a (diff)
mmc: core: Update PON based on the system state
As per eMMC specification, the PON (Power Off Notification) must be sent by host to the card before turning off the power. This will allow card to prepare itself for the power off and may even reduce the initialization of eMMC upon next boot-up. Send long PON during system power off and send short PON during system reboot to reduce the reboot latency. Change-Id: If4188b8b80aaa0e6c4e00e1807aa9589d5e7efdb Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> Signed-off-by: Krishna Konda <kkonda@codeaurora.org> [subhashj@codeaurora.org: fixed trivial merge conflicts] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/mmc/card.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index 2430ba0e1182..c8faf8b146ee 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -324,6 +324,11 @@ struct mmc_bkops_info {
bool needs_manual;
};
+enum mmc_pon_type {
+ MMC_LONG_PON = 1,
+ MMC_SHRT_PON,
+};
+
/*
* MMC device
*/
@@ -411,7 +416,7 @@ struct mmc_card {
struct mmc_wr_pack_stats wr_pack_stats; /* packed commands stats*/
struct notifier_block reboot_notify;
- bool issue_long_pon;
+ enum mmc_pon_type pon_type;
u8 *cached_ext_csd;
bool cmdq_init;
struct mmc_bkops_info bkops;
@@ -691,6 +696,6 @@ extern void mmc_fixup_device(struct mmc_card *card,
extern struct mmc_wr_pack_stats *mmc_blk_get_packed_statistics(
struct mmc_card *card);
extern void mmc_blk_init_packed_statistics(struct mmc_card *card);
-extern int mmc_send_long_pon(struct mmc_card *card);
+extern int mmc_send_pon(struct mmc_card *card);
extern void mmc_blk_cmdq_req_done(struct mmc_request *mrq);
#endif /* LINUX_MMC_CARD_H */