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

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-pxav3.c          |   25 +++++++++++++++++++++++++
 include/linux/platform_data/pxa_sdhci.h |    2 ++
 2 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/drivers/mmc/host/sdhci-pxav3.c b/drivers/mmc/host/sdhci-pxav3.c
index 04db9f1..2746bb5 100644
--- a/drivers/mmc/host/sdhci-pxav3.c
+++ b/drivers/mmc/host/sdhci-pxav3.c
@@ -163,10 +163,35 @@ static int pxav3_set_uhs_signaling(struct sdhci_host 
*host, unsigned int uhs)
        return 0;
 }
 
+static void pxav3_signal_voltage_switch(struct sdhci_host *host, u8 vol)
+{
+       struct platform_device *pdev = to_platform_device(mmc_dev(host->mmc));
+       struct sdhci_pxa_platdata *pdata = pdev->dev.platform_data;
+       unsigned int set;
+
+       switch (vol) {
+       case MMC_SIGNAL_VOLTAGE_330:
+               set = 3300000;
+               break;
+       case MMC_SIGNAL_VOLTAGE_180:
+               set = 1800000;
+               break;
+       case MMC_SIGNAL_VOLTAGE_120:
+               set = 1200000;
+               break;
+       default:
+               set = 3300000;
+               break;
+       }
+       if (pdata && pdata->signal_voltage_switch)
+               pdata->signal_voltage_switch(set);
+}
+
 static struct sdhci_ops pxav3_sdhci_ops = {
        .platform_reset_exit = pxav3_set_private_registers,
        .set_uhs_signaling = pxav3_set_uhs_signaling,
        .platform_send_init_74_clocks = pxav3_gen_init_74_clocks,
+       .signal_voltage_switch = pxav3_signal_voltage_switch,
 };
 
 #ifdef CONFIG_OF
diff --git a/include/linux/platform_data/pxa_sdhci.h 
b/include/linux/platform_data/pxa_sdhci.h
index fdf38d6..3b94ab1 100644
--- a/include/linux/platform_data/pxa_sdhci.h
+++ b/include/linux/platform_data/pxa_sdhci.h
@@ -40,6 +40,7 @@
  * @quirks: quirks of platfrom
  * @quirks2: quirks2 of platfrom
  * @pm_caps: pm_caps of platfrom
+ * @signal_voltage_switch: soc/platfrom handling needed for voltage switch
  */
 struct sdhci_pxa_platdata {
        unsigned int    flags;
@@ -54,6 +55,7 @@ struct sdhci_pxa_platdata {
        unsigned int    quirks;
        unsigned int    quirks2;
        unsigned int    pm_caps;
+       void    (*signal_voltage_switch)(unsigned int set);
 };
 
 struct sdhci_pxa {
-- 
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