summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSahitya Tummala <stummala@codeaurora.org>2013-02-25 15:45:32 +0530
committerSubhash Jadavani <subhashj@codeaurora.org>2016-05-27 10:28:55 -0700
commit29ff0494897e8afdf44d42e095174de1685eeb23 (patch)
tree42e7406c7ebeabeeb5a4fd3e80da3352ae617f2b /drivers
parentf9359ba80e55fba4612d2b627c079bcc61e60444 (diff)
mmc: sdhci: Add new callback to enable/disable CDR
MSM SDHCI has CDR mechanism (clock-data recovery) to automatically adjust the sampling point based on the voltage/temperature variations. This must be enabled for only read. Hence, add new host op toggle_cdr to control CDR. Change-Id: I75940cfca15fe88de6d46fe58cb33620a3b7ced1 Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> [subhashj@codeaurora.org: fixed minor merge conflict] Signed-off-by: Subhash Jadavani <subhashj@codeaurora.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/mmc/host/sdhci.c7
-rw-r--r--drivers/mmc/host/sdhci.h1
2 files changed, 7 insertions, 1 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 4930d9f09d7f..0a7a599588df 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1009,8 +1009,13 @@ static void sdhci_set_transfer_mode(struct sdhci_host *host,
}
}
- if (data->flags & MMC_DATA_READ)
+ if (data->flags & MMC_DATA_READ) {
mode |= SDHCI_TRNS_READ;
+ if (host->ops->toggle_cdr)
+ host->ops->toggle_cdr(host, true);
+ }
+ if (host->ops->toggle_cdr && (data->flags & MMC_DATA_WRITE))
+ host->ops->toggle_cdr(host, false);
if (host->flags & SDHCI_REQ_USE_DMA)
mode |= SDHCI_TRNS_DMA;
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 6d8ddfc07fb5..1430ca98dd94 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -641,6 +641,7 @@ struct sdhci_ops {
bool enable,
u32 type);
void (*dump_vendor_regs)(struct sdhci_host *host);
+ void (*toggle_cdr)(struct sdhci_host *host, bool enable);
void (*voltage_switch)(struct sdhci_host *host);
int (*select_drive_strength)(struct sdhci_host *host,
struct mmc_card *card,