sdhci: tegra: Switch OFF/ON power rails in suspend/resume
Pavan Kunapuli [Thu, 13 Oct 2011 14:48:54 +0000 (19:48 +0530)]
Switching OFF the sd power rails in suspend and switching
them ON in resume.

Change-Id: I5145e211111b8144f14ee0338388eeacb34bb003
Reviewed-on: http://git-master/r/57877
Tested-by: Pavan Kunapuli <pkunapuli@nvidia.com>
Reviewed-by: Sachin Nikam <snikam@nvidia.com>
Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com>

Rebase-Id: R527ae8de0561bfedd3afb2fce62ad4d2876575bc

drivers/mmc/host/sdhci-tegra.c

index 525e8bf..1b4739e 100644 (file)
@@ -288,13 +288,30 @@ static void tegra_sdhci_set_clock(struct sdhci_host *sdhci, unsigned int clock)
 
 static int tegra_sdhci_suspend(struct sdhci_host *sdhci, pm_message_t state)
 {
+       struct sdhci_pltfm_host *pltfm_host = sdhci_priv(sdhci);
+       struct tegra_sdhci_host *tegra_host = pltfm_host->priv;
+
        tegra_sdhci_set_clock(sdhci, 0);
 
+       /* Disable the power rails if any */
+       if (tegra_host->vdd_slot_reg)
+               regulator_disable(tegra_host->vdd_slot_reg);
+       if (tegra_host->vdd_io_reg)
+               regulator_disable(tegra_host->vdd_io_reg);
        return 0;
 }
 
 static int tegra_sdhci_resume(struct sdhci_host *sdhci)
 {
+       struct sdhci_pltfm_host *pltfm_host = sdhci_priv(sdhci);
+       struct tegra_sdhci_host *tegra_host = pltfm_host->priv;
+
+       /* Enable the power rails if any */
+       if (tegra_host->vdd_io_reg)
+               regulator_enable(tegra_host->vdd_io_reg);
+       if (tegra_host->vdd_slot_reg)
+               regulator_enable(tegra_host->vdd_slot_reg);
+
        /* Setting the min identification clock of freq 400KHz */
        tegra_sdhci_set_clock(sdhci, 400000);