From 0631c3e37c36746b5a0c23c52fb6af50735812ea Mon Sep 17 00:00:00 2001
From: Zheng Guolin <zhengguolin@huawei.com>
Date: Thu, 9 Jul 2015 17:42:56 +0800
Subject: [PATCH] net:wireless:bcmdhd: Fix a bug of wifi suspend

add idlecount check watchdog when suspend to guarantee
enough time to process data before system suspend

Change-Id: I91115da18b18985232897d8ebf29bc7fafd8c904
Signed-off-by: Zheng Guolin <zhengguolin@huawei.com>
---
 drivers/net/wireless/bcmdhd/dhd_sdio.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/bcmdhd/dhd_sdio.c b/drivers/net/wireless/bcmdhd/dhd_sdio.c
index a96006c2dd2a..0789d6e7b9e7 100644
--- a/drivers/net/wireless/bcmdhd/dhd_sdio.c
+++ b/drivers/net/wireless/bcmdhd/dhd_sdio.c
@@ -7472,13 +7472,17 @@ dhdsdio_suspend(void *context)
 	}
 
 	ret = dhd_os_check_wakelock(bus->dhd);
-	if ((!ret) && (bus->dhd->up)) {
-		if (wait_event_timeout(bus->bus_sleep, bus->sleeping, wait_time) == 0) {
-			if (!bus->sleeping) {
-				return 0;
-				//return 1;
+	if(SLPAUTO_ENAB(bus)) {
+		if ((!ret) && (bus->dhd->up)) {
+			if (wait_event_timeout(bus->bus_sleep, bus->sleeping, wait_time) == 0) {
+				if (!bus->sleeping) {
+					return 1;
+				}
 			}
 		}
+	} else {
+		if(bus->clkstate != CLK_NONE)
+			return 1;
 	}
 	return ret;
 }
-- 
GitLab