summaryrefslogtreecommitdiff
path: root/drivers/mmc/host
diff options
context:
space:
mode:
authorPavan Kunapuli <pkunapuli@nvidia.com>2012-01-13 15:27:24 +0530
committerVarun Colbert <vcolbert@nvidia.com>2012-01-30 11:47:02 -0800
commit58858330fc4ed47e11c9214cc4b526bf714ee476 (patch)
tree5cd116f7e416284e08257b8dd7aaaca7fc144152 /drivers/mmc/host
parent789424fc3f1ee51b28e975a69621e95c6264a4d1 (diff)
sdhci: Add option for non std freq tuning
Adding option for non std freq tuning for host controllers that have deviation in the tuning procedure. Bug 920089 Change-Id: I8ca6962c6f0380c1160460e5094c47aee241d6e3 Reviewed-on: http://git-master/r/72603 Reviewed-by: Pradeep Goudagunta <pgoudagunta@nvidia.com> Reviewed-by: Sachin Nikam <snikam@nvidia.com> Signed-off-by: Pavan Kunapuli <pkunapuli@nvidia.com> Signed-off-by: Varun Wadekar <vwadekar@nvidia.com> Change-Id: I97cceb39fd27b159823ebce6706c5e74e53deccd Reviewed-on: http://git-master/r/77303 Reviewed-by: Automatic_Commit_Validation_User
Diffstat (limited to 'drivers/mmc/host')
-rw-r--r--drivers/mmc/host/sdhci.c8
-rw-r--r--drivers/mmc/host/sdhci.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 417fdd1721f2..b1dd628ac648 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1632,6 +1632,14 @@ static int sdhci_execute_tuning(struct mmc_host *mmc)
disable_irq(host->irq);
spin_lock(&host->lock);
+ if ((host->quirks & SDHCI_QUIRK_NON_STANDARD_TUNING) &&
+ host->ops->execute_freq_tuning) {
+ err = host->ops->execute_freq_tuning(host);
+ spin_unlock(&host->lock);
+ enable_irq(host->irq);
+ return err;
+ }
+
ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
/*
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 1c12419f9d64..bdf4b1055462 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -277,6 +277,7 @@ struct sdhci_ops {
int (*resume)(struct sdhci_host *host);
int (*switch_signal_voltage)(struct sdhci_host *host,
unsigned int signal_voltage);
+ int (*execute_freq_tuning)(struct sdhci_host *sdhci);
};
#ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS