From: Kevin Liu <kl...@marvell.com>

Some soc/platform need specific handling for signal voltage
switch. For example, mmp2/mmp3 need to set the AIB IO domain
control register accordingly.

Signed-off-by: Bin Wang <b...@marvell.com>
Signed-off-by: Philip Rakity <prak...@marvell.com>
Signed-off-by: Kevin Liu <kl...@marvell.com>
---
 drivers/mmc/host/sdhci.c |   17 +++++++++++++++++
 drivers/mmc/host/sdhci.h |    1 +
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 54644b8..1faa5ec 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -1684,6 +1684,15 @@ static int sdhci_do_3_3v_signal_voltage_switch(struct 
sdhci_host *host,
                        return -EIO;
                }
        }
+
+       /*
+        * May need to apply soc/platfrom settings for the
+        * voltage switch
+        */
+       if (host->ops->signal_voltage_switch)
+               host->ops->signal_voltage_switch(host,
+                               host->mmc->ios.signal_voltage);
+
        /* Wait for 5ms */
        usleep_range(5000, 5500);
 
@@ -1726,6 +1735,14 @@ static int sdhci_do_1_8v_signal_voltage_switch(struct 
sdhci_host *host,
                        ret = 0;
 
                if (!ret) {
+                       /*
+                        * May need to apply soc/platfrom settings for the
+                        * voltage switch
+                        */
+                       if (host->ops->signal_voltage_switch)
+                               host->ops->signal_voltage_switch(host,
+                                       host->mmc->ios.signal_voltage);
+
                        ctrl |= SDHCI_CTRL_VDD_180;
                        sdhci_writew(host, ctrl, SDHCI_HOST_CONTROL2);
 
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 5eb27bf..5f20d32 100644
--- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h
@@ -290,6 +290,7 @@ struct sdhci_ops {
        void    (*hw_reset)(struct sdhci_host *host);
        void    (*platform_suspend)(struct sdhci_host *host);
        void    (*platform_resume)(struct sdhci_host *host);
+       void    (*signal_voltage_switch)(struct sdhci_host *host, u8 vol);
 };
 
 #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
-- 
1.7.0.4

--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to