summaryrefslogtreecommitdiff
path: root/drivers/mmc/host/sdhci-tegra.c
diff options
context:
space:
mode:
authorMursalin Akon <makon@nvidia.com>2012-04-27 15:21:05 -0700
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-05-02 06:02:35 -0700
commit0467657691ba046b492504272baf7c626d9a3713 (patch)
treeb0fae4be18b74cc773d3034e1b0e8a8c9feb6118 /drivers/mmc/host/sdhci-tegra.c
parent2b4ccbfaaaeefcb89cc07504527a034d0f9140eb (diff)
mmc: host: Disable SDIO card clock when idle for Tegra 3 only
The CL disables SDIO card clock when idle for Tegra 3 only. Bonus: conditional build for some tegra 3 functionalities. Bug 975541 Change-Id: I097c4771f3565bf9137d7854ada10c1fe8535056 Signed-off-by: Mursalin Akon <makon@nvidia.com> Reviewed-on: http://git-master/r/99707 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Allen Martin <amartin@nvidia.com> Reviewed-by: Peer Chen <pchen@nvidia.com>
Diffstat (limited to 'drivers/mmc/host/sdhci-tegra.c')
-rw-r--r--drivers/mmc/host/sdhci-tegra.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/mmc/host/sdhci-tegra.c b/drivers/mmc/host/sdhci-tegra.c
index 5f8c4a809b97..b8f5630058f1 100644
--- a/drivers/mmc/host/sdhci-tegra.c
+++ b/drivers/mmc/host/sdhci-tegra.c
@@ -70,11 +70,14 @@
static unsigned int tegra_sdhost_min_freq;
static unsigned int tegra_sdhost_std_freq;
+
+#ifdef CONFIG_ARCH_TEGRA_3x_SOC
static void tegra_3x_sdhci_set_card_clock(struct sdhci_host *sdhci, unsigned int clock);
static void tegra3_sdhci_post_reset_init(struct sdhci_host *sdhci);
static unsigned int tegra3_sdhost_max_clk[4] = {
208000000, 104000000, 208000000, 104000000 };
+#endif
struct tegra_sdhci_hw_ops{
/* Set the internal clk and card clk.*/
@@ -183,6 +186,7 @@ static unsigned int tegra_sdhci_get_ro(struct sdhci_host *sdhci)
return gpio_get_value(plat->wp_gpio);
}
+#ifdef CONFIG_ARCH_TEGRA_3x_SOC
static void tegra3_sdhci_post_reset_init(struct sdhci_host *sdhci)
{
u16 misc_ctrl;
@@ -219,6 +223,7 @@ static void tegra3_sdhci_post_reset_init(struct sdhci_host *sdhci)
SDHCI_VENDOR_MISC_CNTRL_ENABLE_SDR50_SUPPORT;
sdhci_writew(sdhci, misc_ctrl, SDHCI_VENDOR_MISC_CNTRL);
}
+#endif
static int tegra_sdhci_set_uhs_signaling(struct sdhci_host *host,
unsigned int uhs)
@@ -395,6 +400,7 @@ static void tegra_sdhci_set_clk_rate(struct sdhci_host *sdhci,
sdhci->max_clk = clk_get_rate(pltfm_host->clk);
}
+#ifdef CONFIG_ARCH_TEGRA_3x_SOC
static void tegra_3x_sdhci_set_card_clock(struct sdhci_host *sdhci, unsigned int clock)
{
int div;
@@ -479,6 +485,7 @@ set_clk:
out:
sdhci->clock = clock;
}
+#endif
static void tegra_sdhci_set_clock(struct sdhci_host *sdhci, unsigned int clock)
{
@@ -881,6 +888,9 @@ static struct sdhci_ops tegra_sdhci_ops = {
.read_w = tegra_sdhci_readw,
.write_l = tegra_sdhci_writel,
.platform_8bit_width = tegra_sdhci_8bit,
+#ifdef CONFIG_ARCH_TEGRA_3x_SOC
+ .set_card_clock = tegra_3x_sdhci_set_card_clock,
+#endif
.set_clock = tegra_sdhci_set_clock,
.suspend = tegra_sdhci_suspend,
.resume = tegra_sdhci_resume,