[PATCH 3/3] Use SMSM bus to send data frames

dreamfly281 at gmail.com dreamfly281 at gmail.com
Tue Jul 9 04:30:53 EDT 2013


From: Yanbo Li <yanbol at qti.qualcomm.com>

In connected state driver will enter BMPS mode and chip
can go to suspend. When driver will try to send a frame
chip can sleep at that time so wake it up through SMSM
bus.

Reset the power state when return from the suspend mode

Signed-off-by: Yanbo Li <yanbol at qti.qualcomm.com>
Signed-off-by: Eugene Krasnikov <k.eugene.e at gmail.com>
---
 dxe.c  |   20 +++++++++++++++++---
 main.c |    4 ++--
 2 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/dxe.c b/dxe.c
index 5e0dd89..0d9e26b 100644
--- a/dxe.c
+++ b/dxe.c
@@ -590,9 +590,23 @@ int wcn36xx_dxe_tx_frame(struct wcn36xx *wcn,
 	/* Move the head of the ring to the next empty descriptor */
 	 ch->head_blk_ctl = ctl->next;
 
-	/* indicate End Of Packet and generate interrupt on descriptor done */
-	wcn36xx_dxe_write_register(wcn,
-		ch->reg_ctrl, ch->def_ctrl);
+	/*
+	 * When connected and trying to send data frame chip can be in sleep
+	 * mode and writing to the register will not wake up the chip. Instead
+	 * notify chip about new frame through SMSM bus.
+	 */
+	if (wcn->pw_state == WCN36XX_BMPS) {
+		smsm_change_state(SMSM_APPS_STATE,
+				  0,
+				  WCN36XX_SMSM_WLAN_TX_RINGS_EMPTY |
+				  WCN36XX_SMSM_WLAN_TX_ENABLE);
+	} else {
+		/* indicate End Of Packet and generate interrupt on descriptor
+		 * done.
+		 */
+		wcn36xx_dxe_write_register(wcn,
+			ch->reg_ctrl, ch->def_ctrl);
+	}
 	return 0;
 }
 int wcn36xx_dxe_init(struct wcn36xx *wcn)
diff --git a/main.c b/main.c
index b59a885..4457979 100644
--- a/main.c
+++ b/main.c
@@ -741,8 +741,8 @@ static int wcn36xx_resume(struct ieee80211_hw *hw)
 	wcn36xx_dbg(WCN36XX_DBG_MAC, "mac resume");
 
 	wcn->is_suspended = false;
-	if (wcn->aid > 0)
-		wcn36xx_smd_exit_bmps(wcn);
+	if (wcn->pw_state == WCN36XX_BMPS)
+		wcn36xx_pmc_exit_bmps_state(wcn);
 
 	if (wcn->is_con_lost_pending) {
 		wcn36xx_dbg(WCN36XX_DBG_MAC, "report connection lost");
-- 
1.7.9.5




More information about the wcn36xx mailing list