summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorMichael Hsu <mhsu@nvidia.com>2013-06-06 21:13:08 -0700
committerHarshada Kale <hkale@nvidia.com>2013-07-25 02:01:15 -0700
commitcf52b3f15c946348e0e196278be6039288c79902 (patch)
treecc30d6d00d09c8ebb45744cfe11e2b45a7058b8c /drivers/net
parente2e72f99bf2e14f2aa428210550f4875641cf312 (diff)
arm: tegra: thor: fix wlan-bt power sequence
Use mutexes to prevent concurrent wifi / bluetooth turn on sequence. Bug 1302412 Bug 1215325 Change-Id: Icd086b616af2f5ccbff7968d613310c365ad549a Signed-off-by: Michael Hsu <mhsu@nvidia.com> Reviewed-on: http://git-master/r/236533 (cherry picked from commit 3d4c996407fc1b98464a2e148619f4b8fb6a8de0) Reviewed-on: http://git-master/r/238184 Reviewed-by: Bibhay Ranjan <bibhayr@nvidia.com> GVS: Gerrit_Virtual_Submit Tested-by: Bibhay Ranjan <bibhayr@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com> Reviewed-by: Rakesh Kumar <krakesh@nvidia.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/bcmdhd/Makefile3
-rw-r--r--drivers/net/wireless/bcmdhd/wl_android.c17
2 files changed, 20 insertions, 0 deletions
diff --git a/drivers/net/wireless/bcmdhd/Makefile b/drivers/net/wireless/bcmdhd/Makefile
index 289ac4f0eaac..8dcbc9dbe43b 100644
--- a/drivers/net/wireless/bcmdhd/Makefile
+++ b/drivers/net/wireless/bcmdhd/Makefile
@@ -21,6 +21,9 @@ DHDCFLAGS += -DNV_BCM943341_WBFGN_MULTI_MODULE_SUPPORT
ifeq ($(CONFIG_BCMDHD_WIFI_CONTROL_FUNC), y)
DHDCFLAGS += -DCONFIG_WIFI_CONTROL_FUNC
endif
+ifeq ($(CONFIG_BLUEDROID_PM),y)
+DHDCFLAGS += -DENABLE_WiFI_BT_TURN_ON_SYNC
+endif
#ifeq ($(CONFIG_BCM4334),y)
#DHDCFLAGS += -DPROP_TXSTATUS_VSDB
#DHDCFLAGS += -DCUSTOM_GLOM_SETTING=5
diff --git a/drivers/net/wireless/bcmdhd/wl_android.c b/drivers/net/wireless/bcmdhd/wl_android.c
index 6ef39311f3af..03fbfa9b3306 100644
--- a/drivers/net/wireless/bcmdhd/wl_android.c
+++ b/drivers/net/wireless/bcmdhd/wl_android.c
@@ -48,6 +48,9 @@
#endif
#endif /* CONFIG_WIFI_CONTROL_FUNC */
+#ifdef ENABLE_WiFI_BT_TURN_ON_SYNC
+#include <linux/delay.h>
+#endif
/*
* Android private command strings, PLEASE define new private commands here
* so they can be updated easily in the future (if needed)
@@ -195,6 +198,10 @@ extern int dhd_wlfc_init(dhd_pub_t *dhd);
extern void dhd_wlfc_deinit(dhd_pub_t *dhd);
#endif
+#ifdef ENABLE_WiFI_BT_TURN_ON_SYNC
+extern void bt_wlan_lock(void);
+extern void bt_wlan_unlock(void);
+#endif
extern bool ap_fw_loaded;
#if defined(CUSTOMER_HW2)
@@ -1254,7 +1261,17 @@ int wifi_set_power(int on, unsigned long msec)
{
DHD_ERROR(("%s = %d\n", __FUNCTION__, on));
if (wifi_control_data && wifi_control_data->set_power) {
+#ifdef ENABLE_WiFI_BT_TURN_ON_SYNC
+ bt_wlan_lock();
+ if (on)
+ msleep(600);
+ else
+ msleep(50);
+#endif
wifi_control_data->set_power(on);
+#ifdef ENABLE_WiFI_BT_TURN_ON_SYNC
+ bt_wlan_unlock();
+#endif
}
if (msec)
msleep(msec);