diff options
| author | Ritesh Harjani <riteshh@codeaurora.org> | 2015-07-15 13:23:05 +0530 |
|---|---|---|
| committer | Subhash Jadavani <subhashj@codeaurora.org> | 2016-05-31 15:27:00 -0700 |
| commit | 48d05392f809b8245f3dce8eccd99bf2045393e6 (patch) | |
| tree | 6b39699d25178c2a53f9965c45d0f9eaf979eda3 /drivers/mmc | |
| parent | f89573d958c60c65c568af63cca8359595fbf45e (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.c | 5 | ||||
| -rw-r--r-- | drivers/mmc/host/cmdq_hci.h | 1 |
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); |
