+++ b/drivers/net/wireless/bcmdhd_b1/src/dhd/sys/dhd_linux.c
@@ -526,6 +526,7 @@ static int dhd_wl_host_event(dhd_info_t *dhd, int *ifidx, void *pktdata,
wl_event_msg_t *event_ptr, void **data_ptr);
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 27)) && defined(CONFIG_PM_SLEEP)
+extern void bcmsdh_set_irq(int flag);
static int dhd_sleep_pm_callback(struct notifier_block *nfb, unsigned long action, void *ignored)
{
int ret = NOTIFY_DONE;
@@ -534,13 +535,21 @@ static int dhd_sleep_pm_callback(struct notifier_block *nfb, unsigned long actio
#if 1 //(LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 39))
switch (action) {
case PM_HIBERNATION_PREPARE:
+ printk(KERN_INFO "dhd_sleep_pm_callback: action=PM_HIBERNATION_PREPARE\n");
case PM_SUSPEND_PREPARE:
+ printk(KERN_INFO "dhd_sleep_pm_callback: action=PM_SUSPEND_PREPARE\n");
dhd_mmc_suspend = TRUE;
+ bcmsdh_oob_intr_set(0);
+ dhd_customer_gpio_wlan_ctrl(WLAN_POWER_OFF);
ret = NOTIFY_OK;
break;
case PM_POST_HIBERNATION:
+ printk(KERN_INFO "dhd_sleep_pm_callback: action=PM_POST_HIBERNATION\n");
case PM_POST_SUSPEND:
+ printk(KERN_INFO "dhd_sleep_pm_callback: action=PM_POST_SUSPEND\n");
dhd_mmc_suspend = FALSE;
+ dhd_customer_gpio_wlan_ctrl(WLAN_POWER_ON);
+ bcmsdh_oob_intr_set(1);
ret = NOTIFY_OK;
break;
}