diff options
author | Seshendra Gadagottu <sgadagottu@nvidia.com> | 2011-08-26 19:28:35 +0530 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:49:09 -0800 |
commit | 9dede38157de44667019dbbf1a23709a5b2e67a7 (patch) | |
tree | 51783c28dc001d72749d7b01ee47be06e5666b83 /arch/arm/mach-tegra/baseband-xmm-power.c | |
parent | aa7c1a90e996fa6c9f0baa353b715cdacb6aeef9 (diff) |
arm: tegra: xmm : Changes for CP initiated system resume
Added the changes required for CP initiated L3 -> L0 resume.
BUG 828389
Reviewed-on: http://git-master/r/49462
(cherry picked from commit 58de177d5eb9ad81c6bfb25195a88011ce8622b9)
Change-Id: I423a7ff7cd6d5b1679b6f643337b28d2af5ce602
Reviewed-on: http://git-master/r/54198
Tested-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-by: Michael Hsu <mhsu@nvidia.com>
Tested-by: Michael Hsu <mhsu@nvidia.com>
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
Rebase-Id: R7a831e137f784d10c0914ac9226b86f2c99ee2b1
Diffstat (limited to 'arch/arm/mach-tegra/baseband-xmm-power.c')
-rw-r--r-- | arch/arm/mach-tegra/baseband-xmm-power.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/arch/arm/mach-tegra/baseband-xmm-power.c b/arch/arm/mach-tegra/baseband-xmm-power.c index b9ad58e89c70..f0cd18988e6b 100644 --- a/arch/arm/mach-tegra/baseband-xmm-power.c +++ b/arch/arm/mach-tegra/baseband-xmm-power.c @@ -514,19 +514,29 @@ static int baseband_xmm_power_driver_resume(struct platform_device *device) struct baseband_power_platform_data *data = (struct baseband_power_platform_data *) device->dev.platform_data; int value; + int delay = 10000; /* maxmum delay in msec */ pr_debug("%s\n", __func__); - /* wake bb */ - gpio_set_value(data->modem.xmm.ipc_bb_wake, 1); - - pr_debug("waiting for host wakeup\n"); - do { - mdelay(1); - value = gpio_get_value(baseband_power_driver_data - ->modem.xmm.ipc_ap_wake); - } while (!value); - pr_debug("gpio host wakeup high <-\n"); + value = gpio_get_value(data->modem.xmm.ipc_ap_wake); + if (!value) { + pr_info("AP Initiated L3 -> L0\n"); + /* wake bb */ + gpio_set_value(data->modem.xmm.ipc_bb_wake, 1); + + pr_debug("waiting for host wakeup\n"); + do { + mdelay(1); + value = gpio_get_value(data->modem.xmm.ipc_ap_wake); + delay--; + } while ((!value) && (delay)); + if (delay) + pr_debug("gpio host wakeup high <-\n"); + else + pr_err("%s host wakeup not happened\n", __func__); + } else { + pr_info("CP Initiated L3 -> L0\n"); + } /* signal bb to resume hsic */ gpio_set_value(data->modem.xmm.ipc_hsic_active, 1); |