From 58de177d5eb9ad81c6bfb25195a88011ce8622b9 Mon Sep 17 00:00:00 2001 From: Seshendra Gadagottu Date: Fri, 26 Aug 2011 19:28:35 +0530 Subject: arm: tegra: xmm : Changes for CP initiated system resume Added the changes required for CP initiated L3 -> L0 resume. BUG 828389 Change-Id: Ic6be39965f0f6b66db1f57fd8f860b6f7bb0d18b Reviewed-on: http://git-master/r/49462 Reviewed-by: Seshendra Gadagottu Tested-by: Seshendra Gadagottu Reviewed-by: Bharat Nihalani --- arch/arm/mach-tegra/baseband-xmm-power.c | 30 ++++++++++++++++++++---------- 1 file 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 0eb395f9ebfc..dc8f8191a95d 100644 --- a/arch/arm/mach-tegra/baseband-xmm-power.c +++ b/arch/arm/mach-tegra/baseband-xmm-power.c @@ -532,19 +532,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); -- cgit v1.2.3