diff options
author | Michael Hsu <mhsu@nvidia.com> | 2013-06-06 21:13:08 -0700 |
---|---|---|
committer | Harshada Kale <hkale@nvidia.com> | 2013-07-25 02:01:15 -0700 |
commit | cf52b3f15c946348e0e196278be6039288c79902 (patch) | |
tree | cc30d6d00d09c8ebb45744cfe11e2b45a7058b8c /drivers/net | |
parent | e2e72f99bf2e14f2aa428210550f4875641cf312 (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/Makefile | 3 | ||||
-rw-r--r-- | drivers/net/wireless/bcmdhd/wl_android.c | 17 |
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); |