summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorVinayak Pane <vpane@nvidia.com>2012-06-29 13:08:36 -0700
committerRohan Somvanshi <rsomvanshi@nvidia.com>2012-07-17 11:16:33 -0700
commit21aba41cb87afea59e1ee9aa9e1ef5ce7fd66ee8 (patch)
treeccca07795f5c51102f001a5e1d94a9ace449c3ec /arch
parent2a498649ecd1743756a42ff393cbe40795ac5180 (diff)
arm: tegra: xmm: flashed modem start with hsic_active low
Flashed modem should start with hsic_active signal as low. The hsic register is done at falling edge of ap_wake. Bug 1006183 Signed-off-by: Vinayak Pane <vpane@nvidia.com> Reviewed-on: http://git-master/r/112781 (cherry picked from commit 6437d1453d2a7694c2efa183cff135297f9f45e3) Change-Id: I7bf355088096788b030fd861ef257a9f635c66e7 Reviewed-on: http://git-master/r/115610 Tested-by: Vinayak Pane <vpane@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Steve Lin <stlin@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/baseband-xmm-power.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/arch/arm/mach-tegra/baseband-xmm-power.c b/arch/arm/mach-tegra/baseband-xmm-power.c
index 36f5fc6611f9..9482bbecc77d 100644
--- a/arch/arm/mach-tegra/baseband-xmm-power.c
+++ b/arch/arm/mach-tegra/baseband-xmm-power.c
@@ -1,7 +1,7 @@
/*
* arch/arm/mach-tegra/baseband-xmm-power.c
*
- * Copyright (C) 2011 NVIDIA Corporation
+ * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
*
* This software is licensed under the terms of the GNU General Public
* License version 2, as published by the Free Software Foundation, and
@@ -78,7 +78,7 @@ static struct gpio tegra_baseband_gpios[] = {
{ -1, GPIOF_OUT_INIT_LOW, "BB_ON" },
{ -1, GPIOF_OUT_INIT_LOW, "IPC_BB_WAKE" },
{ -1, GPIOF_IN, "IPC_AP_WAKE" },
- { -1, GPIOF_OUT_INIT_HIGH, "IPC_HSIC_ACTIVE" },
+ { -1, GPIOF_OUT_INIT_LOW, "IPC_HSIC_ACTIVE" },
{ -1, GPIOF_IN, "IPC_HSIC_SUS_REQ" },
};
@@ -559,15 +559,14 @@ irqreturn_t xmm_power_ipc_ap_wake_irq(int irq, void *dev_id)
return IRQ_HANDLED;
} else if (ipc_ap_wake_state == IPC_AP_WAKE_INIT1) {
if (!value) {
- pr_debug("%s - IPC_AP_WAKE_INIT2"
- " - wait for rising edge\n", __func__);
- } else {
- pr_debug("%s - IPC_AP_WAKE_INIT2"
- " - got rising edge\n", __func__);
+ pr_debug("%s - got falling edge at INIT1\n", __func__);
/* go to IPC_AP_WAKE_INIT2 state */
ipc_ap_wake_state = IPC_AP_WAKE_INIT2;
queue_work(workqueue, &init2_work);
- }
+
+ } else
+ pr_debug("%s - IPC_AP_WAKE_INIT1"
+ " - got rising edge\n", __func__);
return IRQ_HANDLED;
}
@@ -774,12 +773,11 @@ static void xmm_power_work_func(struct work_struct *work)
case BBXMM_WORK_INIT_FLASH_PM_STEP1:
pr_debug("BBXMM_WORK_INIT_FLASH_PM_STEP1\n");
pr_debug("%s: ipc_hsic_active -> 0\n", __func__);
- gpio_set_value(pdata->modem.xmm.ipc_hsic_active, 1);
+ gpio_set_value(pdata->modem.xmm.ipc_hsic_active, 0);
/* reset / power on sequence */
xmm_power_reset_on(pdata);
/* set power status as on */
power_onoff = 1;
- gpio_set_value(pdata->modem.xmm.ipc_hsic_active, 0);
/* expecting init2 performs register hsic to enumerate modem
* software directly.