From: Kevin Liu <kliu5@xxxxxxxxxxx> Signed-off-by: Bin Wang <binw@xxxxxxxxxxx> Signed-off-by: Philip Rakity <prakity@xxxxxxxxxxx> Signed-off-by: Kevin Liu <kliu5@xxxxxxxxxxx> --- 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html