aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnmin Hsu <anmin.hsu@mediatek.com>2015-09-19 03:21:08 +0800
committerMister Oyster <oysterized@gmail.com>2016-12-25 13:52:49 +0100
commit3c6de035146398370d29d45afb742b0f5ad9ffec (patch)
treedcabb7de41965bc2f332426a9287db873021a8e2
parent52c45c8da818116e7a8807144ddfac4ad083bce1 (diff)
c2k_ccci: mediatek: sdio timeout
[Detail] after suspend/resume, there may be sdio transfer timeout [Solution] add suspend/resume callback function in sdio client driver to avoid sd card remount after suspend/resume [Feature] SVLTE - C2K MTK-Commit-Id: d4c3967cdc7ac140c042e9f774f90a175783a257 Change-Id: I4173b2759886e4ca5d007a57c38fc64f5a65f885 Signed-off-by: Haow Wang <haow.wang@mediatek.com> CR-Id: ALPS02288503
-rw-r--r--drivers/misc/mediatek/c2k_ccci/modem_sdio.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/drivers/misc/mediatek/c2k_ccci/modem_sdio.c b/drivers/misc/mediatek/c2k_ccci/modem_sdio.c
index 232ff5de1..359c199d8 100644
--- a/drivers/misc/mediatek/c2k_ccci/modem_sdio.c
+++ b/drivers/misc/mediatek/c2k_ccci/modem_sdio.c
@@ -4730,11 +4730,37 @@ static const struct sdio_device_id modem_sdio_ids[] = {
MODULE_DEVICE_TABLE(sdio, modem_sdio_ids);
+static int c2k_sdio_suspend(struct device *dev)
+{
+ struct sdio_func *func = dev_to_sdio_func(dev);
+ int ret;
+
+ if (func) {
+ LOGPRT(LOG_INFO, "c2k_sdio_suspend\n");
+ ret = sdio_set_host_pm_flags(func, MMC_PM_KEEP_POWER);
+ }
+ return 0;
+}
+
+static int c2k_sdio_resume(struct device *dev)
+{
+ return 0;
+}
+
+static const struct dev_pm_ops c2k_sdio_pm_ops = {
+ .suspend = c2k_sdio_suspend,
+ .resume = c2k_sdio_resume,
+};
+
static struct sdio_driver modem_sdio_driver = {
.probe = modem_sdio_probe,
.remove = modem_sdio_remove,
.name = "modem_sdio",
.id_table = modem_sdio_ids,
+ .drv = {
+ .owner = THIS_MODULE,
+ .pm = &c2k_sdio_pm_ops,
+ }
};
#if ENABLE_CCMNI