summaryrefslogtreecommitdiff
path: root/drivers/mmc
diff options
context:
space:
mode:
authorRitesh Harjani <riteshh@codeaurora.org>2015-07-15 13:23:05 +0530
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-31 15:27:00 -0700
commit48d05392f809b8245f3dce8eccd99bf2045393e6 (patch)
tree6b39699d25178c2a53f9965c45d0f9eaf979eda3 /drivers/mmc
parentf89573d958c60c65c568af63cca8359595fbf45e (diff)
mmc: cmdq_hci: Notify sdhci for enhanced strobe
Provide cmdq_host ops of enhanced strobe to notify sdhci on enabling/disabling cmdq. This is needed because of following: Before running CMDQ transfers in HS400 Enhanced Strobe mode, SW should write 3 to HC_VENDOR_SPECIFIC_FUNC3.CMDEN_HS400_INPUT_MASK_CNT register. Default reset value of this register is 2. Change-Id: I36ead91ca8c9aeed967f120f8bdc3d2180af7746 Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org>
Diffstat (limited to 'drivers/mmc')
-rw-r--r--drivers/mmc/host/cmdq_hci.c5
-rw-r--r--drivers/mmc/host/cmdq_hci.h1
2 files changed, 6 insertions, 0 deletions
diff --git a/drivers/mmc/host/cmdq_hci.c b/drivers/mmc/host/cmdq_hci.c
index a1a40a70e659..a0f71934f620 100644
--- a/drivers/mmc/host/cmdq_hci.c
+++ b/drivers/mmc/host/cmdq_hci.c
@@ -361,6 +361,8 @@ static int cmdq_enable(struct mmc_host *mmc)
if (cq_host->ops->clear_set_dumpregs)
cq_host->ops->clear_set_dumpregs(mmc, 1);
+ if (cq_host->ops->enhanced_strobe_mask)
+ cq_host->ops->enhanced_strobe_mask(mmc, true);
out:
cmdq_runtime_pm_put(cq_host);
return err;
@@ -376,6 +378,9 @@ static void cmdq_disable(struct mmc_host *mmc, bool soft)
cq_host, CQCFG) & ~(CQ_ENABLE),
CQCFG);
}
+ if (cq_host->ops->enhanced_strobe_mask)
+ cq_host->ops->enhanced_strobe_mask(mmc, false);
+
cmdq_runtime_pm_put(cq_host);
cq_host->enabled = false;
}
diff --git a/drivers/mmc/host/cmdq_hci.h b/drivers/mmc/host/cmdq_hci.h
index d91f542779a4..cbae969f9f60 100644
--- a/drivers/mmc/host/cmdq_hci.h
+++ b/drivers/mmc/host/cmdq_hci.h
@@ -199,6 +199,7 @@ struct cmdq_host_ops {
void (*write_l)(struct cmdq_host *host, u32 val, int reg);
u32 (*read_l)(struct cmdq_host *host, int reg);
void (*clear_set_dumpregs)(struct mmc_host *mmc, bool set);
+ void (*enhanced_strobe_mask)(struct mmc_host *mmc, bool set);
int (*reset)(struct mmc_host *mmc);
int (*crypto_cfg)(struct mmc_host *mmc, struct mmc_request *mrq,
u32 slot);