summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/baseband-xmm-power.c
diff options
context:
space:
mode:
authorshawn joo <sjoo@nvidia.com>2012-02-13 14:30:23 +0900
committerSimone Willett <swillett@nvidia.com>2012-03-07 21:28:32 -0800
commit7feb24c911f64c9c950c364a44dab1972d0e4ef3 (patch)
tree9e04873ceeec4648e93c8fbc935175da81a5c4b7 /arch/arm/mach-tegra/baseband-xmm-power.c
parentbe971c964a63493e4c7f42015d6681a44b7d54b1 (diff)
arm: tegra: xmm: change irq handler to irq thread
since irq function has printk and long context. change the handler to irq thread for stable running. Bug 937413 Signed-off-by: shawn joo <sjoo@nvidia.com> Reviewed-on: http://git-master/r/83350 (cherry picked from commit 1bf117669ed8b4fdb854074aef26d1a568544616) Change-Id: Ib760e19903b7e9975a1ac7b8275537c75830764d Reviewed-on: http://git-master/r/87633 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/baseband-xmm-power.c')
-rw-r--r--arch/arm/mach-tegra/baseband-xmm-power.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/arm/mach-tegra/baseband-xmm-power.c b/arch/arm/mach-tegra/baseband-xmm-power.c
index 13a904dcf40d..51118f7a1c0f 100644
--- a/arch/arm/mach-tegra/baseband-xmm-power.c
+++ b/arch/arm/mach-tegra/baseband-xmm-power.c
@@ -376,13 +376,14 @@ irqreturn_t baseband_xmm_power_ipc_ap_wake_irq(int irq, void *dev_id)
{
int value;
- pr_debug("%s\n", __func__);
+ value = gpio_get_value(baseband_power_driver_data->
+ modem.xmm.ipc_ap_wake);
+
+ pr_debug("%s g(%d), wake_st(%d)\n", __func__, value, ipc_ap_wake_state);
if (ipc_ap_wake_state < IPC_AP_WAKE_IRQ_READY) {
pr_err("%s - spurious irq\n", __func__);
} else if (ipc_ap_wake_state == IPC_AP_WAKE_IRQ_READY) {
- value = gpio_get_value(baseband_power_driver_data->
- modem.xmm.ipc_ap_wake);
if (!value) {
pr_debug("%s - IPC_AP_WAKE_INIT1"
" - got falling edge\n",
@@ -397,8 +398,6 @@ irqreturn_t baseband_xmm_power_ipc_ap_wake_irq(int irq, void *dev_id)
__func__);
}
} else if (ipc_ap_wake_state == IPC_AP_WAKE_INIT1) {
- value = gpio_get_value(baseband_power_driver_data->
- modem.xmm.ipc_ap_wake);
if (!value) {
pr_debug("%s - IPC_AP_WAKE_INIT2"
" - wait for rising edge\n",
@@ -413,8 +412,6 @@ irqreturn_t baseband_xmm_power_ipc_ap_wake_irq(int irq, void *dev_id)
queue_work(workqueue, &init2_work);
}
} else {
- value = gpio_get_value(baseband_power_driver_data->
- modem.xmm.ipc_ap_wake);
if (!value) {
pr_debug("%s - falling\n", __func__);
/* [ver < 1130] gpio protocol falling edge */
@@ -827,7 +824,9 @@ static int baseband_xmm_power_driver_probe(struct platform_device *device)
if (modem_flash && modem_pm) {
pr_debug("%s: request_irq IPC_AP_WAKE_IRQ\n", __func__);
ipc_ap_wake_state = IPC_AP_WAKE_UNINIT;
- err = request_irq(gpio_to_irq(data->modem.xmm.ipc_ap_wake),
+ err = request_threaded_irq(
+ gpio_to_irq(data->modem.xmm.ipc_ap_wake),
+ NULL,
baseband_xmm_power_ipc_ap_wake_irq,
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
"IPC_AP_WAKE_IRQ",