msm: board-7x30: Add support to use new SDIO LPM APIs
Allow usage of LPM APIs published by SDIO_AL layer by setting
->is_sdio_al_client = 1 for SDC2 slot in svlte targets.
Change-Id: I2d0e42d216dcadc35a33a2ee15ff2ee418802c45
Signed-off-by: Sujith Reddy Thumma <sthumma@codeaurora.org>
diff --git a/arch/arm/mach-msm/board-msm7x30.c b/arch/arm/mach-msm/board-msm7x30.c
index 9fb9fb6..9155e0c 100644
--- a/arch/arm/mach-msm/board-msm7x30.c
+++ b/arch/arm/mach-msm/board-msm7x30.c
@@ -6366,6 +6366,11 @@
#ifdef CONFIG_MMC_MSM_SDC2_SUPPORT
if (machine_is_msm8x55_svlte_surf())
msm7x30_sdc2_data.msmsdcc_fmax = 24576000;
+ if (machine_is_msm8x55_svlte_surf() ||
+ machine_is_msm8x55_svlte_ffa()) {
+ msm7x30_sdc2_data.sdiowakeup_irq = MSM_GPIO_TO_INT(68);
+ msm7x30_sdc2_data.is_sdio_al_client = 1;
+ }
sdcc_vreg_data[1].vreg_data = vreg_s3;
sdcc_vreg_data[1].level = 1800;
msm_add_sdcc(2, &msm7x30_sdc2_data);
diff --git a/drivers/mmc/host/msm_sdcc.c b/drivers/mmc/host/msm_sdcc.c
index 0bb8ac7..e639815 100644
--- a/drivers/mmc/host/msm_sdcc.c
+++ b/drivers/mmc/host/msm_sdcc.c
@@ -3527,9 +3527,10 @@
if (pdev->id < 1 || pdev->id > 5)
return -EINVAL;
- if (plat->is_sdio_al_client)
- if (!plat->sdio_lpm_gpio_setup || !plat->sdiowakeup_irq)
- return -EINVAL;
+ if (plat->is_sdio_al_client && !plat->sdiowakeup_irq) {
+ pr_err("%s: No wakeup IRQ for sdio_al client\n", __func__);
+ return -EINVAL;
+ }
if (pdev->resource == NULL || pdev->num_resources < 2) {
pr_err("%s: Invalid resource\n", __func__);
@@ -4099,7 +4100,8 @@
host->clks_on = 0;
}
- if (!host->sdio_gpio_lpm) {
+ if (host->plat->sdio_lpm_gpio_setup &&
+ !host->sdio_gpio_lpm) {
spin_unlock_irqrestore(&host->lock, flags);
host->plat->sdio_lpm_gpio_setup(mmc_dev(mmc), 0);
spin_lock_irqsave(&host->lock, flags);
@@ -4118,7 +4120,8 @@
msmsdcc_disable_irq_wake(host);
}
- if (host->sdio_gpio_lpm) {
+ if (host->plat->sdio_lpm_gpio_setup &&
+ host->sdio_gpio_lpm) {
spin_unlock_irqrestore(&host->lock, flags);
host->plat->sdio_lpm_gpio_setup(mmc_dev(mmc), 1);
spin_lock_irqsave(&host->lock, flags);