summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2011-04-26 11:36:07 -0700
committerNiket Sirsi <nsirsi@nvidia.com>2011-07-12 15:04:34 -0700
commit4bb705abc7eeb3ddb4d64c76bea52f705cda4a17 (patch)
treeb011378bd1d994eb610ff73177c8464797a83716
parenta8fbdf9ff9dde552bf2049342b284a0667b2aedc (diff)
net: wireless: bcm4329: Prevent working thread to run during suspend path
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com> (cherry picked from commit c53be2ce81658292e6e1ef67c070c120d92e06c7) Change-Id: I29d7b8c9d09471850af44e7aefd88eb6395d04bf Reviewed-on: http://git-master/r/36699 Reviewed-by: Amit Kamath <akamath@nvidia.com> Tested-by: Amit Kamath <akamath@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
-rw-r--r--drivers/net/wireless/bcm4329/dhd.h2
-rw-r--r--drivers/net/wireless/bcm4329/dhd_linux.c7
2 files changed, 8 insertions, 1 deletions
diff --git a/drivers/net/wireless/bcm4329/dhd.h b/drivers/net/wireless/bcm4329/dhd.h
index c2bfc376f5b6..677393b7d4e6 100644
--- a/drivers/net/wireless/bcm4329/dhd.h
+++ b/drivers/net/wireless/bcm4329/dhd.h
@@ -186,7 +186,7 @@ typedef struct dhd_pub {
wait_event_interruptible_timeout(a, FALSE, 3 * HZ); \
} \
} while (0)
- #define DHD_PM_RESUME_WAIT(a) _DHD_PM_RESUME_WAIT(a, 30)
+ #define DHD_PM_RESUME_WAIT(a) _DHD_PM_RESUME_WAIT(a, 200)
#define DHD_PM_RESUME_WAIT_FOREVER(a) _DHD_PM_RESUME_WAIT(a, ~0)
#define DHD_PM_RESUME_RETURN_ERROR(a) do { if (dhd_mmc_suspend) return a; } while (0)
#define DHD_PM_RESUME_RETURN do { if (dhd_mmc_suspend) return; } while (0)
diff --git a/drivers/net/wireless/bcm4329/dhd_linux.c b/drivers/net/wireless/bcm4329/dhd_linux.c
index b77c1a59d597..ebe95a52d784 100644
--- a/drivers/net/wireless/bcm4329/dhd_linux.c
+++ b/drivers/net/wireless/bcm4329/dhd_linux.c
@@ -168,14 +168,21 @@ static int wifi_remove(struct platform_device *pdev)
up(&wifi_control_sem);
return 0;
}
+
static int wifi_suspend(struct platform_device *pdev, pm_message_t state)
{
DHD_TRACE(("##> %s\n", __FUNCTION__));
+#if defined(OOB_INTR_ONLY)
+ bcmsdh_oob_intr_set(0);
+#endif /* (OOB_INTR_ONLY) */
return 0;
}
static int wifi_resume(struct platform_device *pdev)
{
DHD_TRACE(("##> %s\n", __FUNCTION__));
+#if defined(OOB_INTR_ONLY)
+ bcmsdh_oob_intr_set(1);
+#endif /* (OOB_INTR_ONLY) */
return 0;
}