linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC/WIP 15/22] ath9k_hw: Cleanup MCI function declarations
@ 2012-02-21  9:23 Sujith Manoharan
  2012-02-21 11:45 ` Mohammed Shafi
  0 siblings, 1 reply; 2+ messages in thread
From: Sujith Manoharan @ 2012-02-21  9:23 UTC (permalink / raw)
  To: linux-wireless; +Cc: ath9k-devel

This patch converts a few functions to static variants
and removes extraneous declarations.

Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
---
 drivers/net/wireless/ath/ath9k/ar9003_mci.c |  508 +++++++++++++-------------
 drivers/net/wireless/ath/ath9k/ar9003_mci.h |   13 -
 2 files changed, 254 insertions(+), 267 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.c b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
index 35299d5..e76ffcf 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
@@ -82,7 +82,7 @@ static int ar9003_mci_wait_for_interrupt(struct ath_hw *ah, u32 address,
 	return time_out;
 }
 
-void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done)
+static void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done)
 {
 	u32 payload[4] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff00};
 
@@ -94,7 +94,7 @@ void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done)
 	udelay(5);
 }
 
-void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done)
+static void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done)
 {
 	u32 payload = 0x00000000;
 
@@ -112,7 +112,7 @@ static void ar9003_mci_send_req_wake(struct ath_hw *ah, bool wait_done)
 	udelay(5);
 }
 
-void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done)
+static void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done)
 {
 	if (!ATH9K_HW_CAP_MCI)
 		return;
@@ -223,8 +223,8 @@ static void ar9003_mci_send_coex_bt_status_query(struct ath_hw *ah,
 	}
 }
 
-void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt,
-				      bool wait_done)
+static void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt,
+					     bool wait_done)
 {
 	struct ath_common *common = ath9k_hw_common(ah);
 	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
@@ -383,7 +383,7 @@ void ar9003_mci_set_full_sleep(struct ath_hw *ah)
 	REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2);
 }
 
-void ar9003_mci_disable_interrupt(struct ath_hw *ah)
+static void ar9003_mci_disable_interrupt(struct ath_hw *ah)
 {
 	if (!ATH9K_HW_CAP_MCI)
 		return;
@@ -392,7 +392,7 @@ void ar9003_mci_disable_interrupt(struct ath_hw *ah)
 	REG_WRITE(ah, AR_MCI_INTERRUPT_RX_MSG_EN, 0);
 }
 
-void ar9003_mci_enable_interrupt(struct ath_hw *ah)
+static void ar9003_mci_enable_interrupt(struct ath_hw *ah)
 {
 	if (!ATH9K_HW_CAP_MCI)
 		return;
@@ -402,7 +402,7 @@ void ar9003_mci_enable_interrupt(struct ath_hw *ah)
 		  AR_MCI_INTERRUPT_RX_MSG_DEFAULT);
 }
 
-bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints)
+static bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints)
 {
 	u32 intr;
 
@@ -455,7 +455,7 @@ void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
 	}
 }
 
-void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g)
+static void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g)
 {
 	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
 
@@ -568,6 +568,36 @@ static bool ar9003_mci_send_coex_bt_flags(struct ath_hw *ah, bool wait_done,
 							wait_done, true);
 }
 
+static void ar9003_mci_sync_bt_state(struct ath_hw *ah)
+{
+	struct ath_common *common = ath9k_hw_common(ah);
+	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
+	u32 cur_bt_state;
+
+	if (!ATH9K_HW_CAP_MCI)
+		return;
+
+	cur_bt_state = ar9003_mci_state(ah, MCI_STATE_REMOTE_SLEEP, NULL);
+
+	if (mci->bt_state != cur_bt_state) {
+		ath_dbg(common, MCI,
+			"MCI BT state mismatches. old: %d, new: %d\n",
+			mci->bt_state, cur_bt_state);
+		mci->bt_state = cur_bt_state;
+	}
+
+	if (mci->bt_state != MCI_BT_SLEEP) {
+
+		ar9003_mci_send_coex_version_query(ah, true);
+		ar9003_mci_send_coex_wlan_channels(ah, true);
+
+		if (mci->unhalt_bt_gpm == true) {
+			ath_dbg(common, MCI, "MCI unhalt BT GPM\n");
+			ar9003_mci_send_coex_halt_bt_gpm(ah, false, true);
+		}
+	}
+}
+
 void ar9003_mci_check_bt(struct ath_hw *ah)
 {
 	struct ath9k_hw_mci *mci_hw = &ah->btcoex_hw.mci;
@@ -588,6 +618,188 @@ void ar9003_mci_check_bt(struct ath_hw *ah)
 	}
 }
 
+static void ar9003_mci_process_gpm_extra(struct ath_hw *ah, u8 gpm_type,
+					 u8 gpm_opcode, u32 *p_gpm)
+{
+	struct ath_common *common = ath9k_hw_common(ah);
+	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
+	u8 *p_data = (u8 *) p_gpm;
+
+	if (gpm_type != MCI_GPM_COEX_AGENT)
+		return;
+
+	switch (gpm_opcode) {
+	case MCI_GPM_COEX_VERSION_QUERY:
+		ath_dbg(common, MCI, "MCI Recv GPM COEX Version Query\n");
+		ar9003_mci_send_coex_version_response(ah, true);
+		break;
+	case MCI_GPM_COEX_VERSION_RESPONSE:
+		ath_dbg(common, MCI, "MCI Recv GPM COEX Version Response\n");
+		mci->bt_ver_major =
+			*(p_data + MCI_GPM_COEX_B_MAJOR_VERSION);
+		mci->bt_ver_minor =
+			*(p_data + MCI_GPM_COEX_B_MINOR_VERSION);
+		mci->bt_version_known = true;
+		ath_dbg(common, MCI, "MCI BT Coex version: %d.%d\n",
+			mci->bt_ver_major, mci->bt_ver_minor);
+		break;
+	case MCI_GPM_COEX_STATUS_QUERY:
+		ath_dbg(common, MCI,
+			"MCI Recv GPM COEX Status Query = 0x%02X\n",
+			*(p_data + MCI_GPM_COEX_B_WLAN_BITMAP));
+		mci->wlan_channels_update = true;
+		ar9003_mci_send_coex_wlan_channels(ah, true);
+		break;
+	case MCI_GPM_COEX_BT_PROFILE_INFO:
+		mci->query_bt = true;
+		ath_dbg(common, MCI, "MCI Recv GPM COEX BT_Profile_Info\n");
+		break;
+	case MCI_GPM_COEX_BT_STATUS_UPDATE:
+		mci->query_bt = true;
+		ath_dbg(common, MCI,
+			"MCI Recv GPM COEX BT_Status_Update SEQ=%d (drop&query)\n",
+			*(p_gpm + 3));
+		break;
+	default:
+		break;
+	}
+}
+
+static u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type,
+				   u8 gpm_opcode, int time_out)
+{
+	struct ath_common *common = ath9k_hw_common(ah);
+	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
+	u32 *p_gpm = NULL, mismatch = 0, more_data;
+	u32 offset;
+	u8 recv_type = 0, recv_opcode = 0;
+	bool b_is_bt_cal_done = (gpm_type == MCI_GPM_BT_CAL_DONE);
+
+	if (!ATH9K_HW_CAP_MCI)
+		return 0;
+
+	more_data = time_out ? MCI_GPM_NOMORE : MCI_GPM_MORE;
+
+	while (time_out > 0) {
+		if (p_gpm) {
+			MCI_GPM_RECYCLE(p_gpm);
+			p_gpm = NULL;
+		}
+
+		if (more_data != MCI_GPM_MORE)
+			time_out = ar9003_mci_wait_for_interrupt(ah,
+					AR_MCI_INTERRUPT_RX_MSG_RAW,
+					AR_MCI_INTERRUPT_RX_MSG_GPM,
+					time_out);
+
+		if (!time_out)
+			break;
+
+		offset = ar9003_mci_state(ah,
+				MCI_STATE_NEXT_GPM_OFFSET, &more_data);
+
+		if (offset == MCI_GPM_INVALID)
+			continue;
+
+		p_gpm = (u32 *) (mci->gpm_buf + offset);
+		recv_type = MCI_GPM_TYPE(p_gpm);
+		recv_opcode = MCI_GPM_OPCODE(p_gpm);
+
+		if (MCI_GPM_IS_CAL_TYPE(recv_type)) {
+
+			if (recv_type == gpm_type) {
+
+				if ((gpm_type == MCI_GPM_BT_CAL_DONE) &&
+				    !b_is_bt_cal_done) {
+					gpm_type = MCI_GPM_BT_CAL_GRANT;
+					ath_dbg(common, MCI,
+						"MCI Recv BT_CAL_DONE wait BT_CAL_GRANT\n");
+					continue;
+				}
+
+				break;
+			}
+		} else if ((recv_type == gpm_type) &&
+			   (recv_opcode == gpm_opcode))
+			break;
+
+		/* not expected message */
+
+		/*
+		 * check if it's cal_grant
+		 *
+		 * When we're waiting for cal_grant in reset routine,
+		 * it's possible that BT sends out cal_request at the
+		 * same time. Since BT's calibration doesn't happen
+		 * that often, we'll let BT completes calibration then
+		 * we continue to wait for cal_grant from BT.
+		 * Orginal: Wait BT_CAL_GRANT.
+		 * New: Receive BT_CAL_REQ -> send WLAN_CAL_GRANT->wait
+		 * BT_CAL_DONE -> Wait BT_CAL_GRANT.
+		 */
+
+		if ((gpm_type == MCI_GPM_BT_CAL_GRANT) &&
+		    (recv_type == MCI_GPM_BT_CAL_REQ)) {
+
+			u32 payload[4] = {0, 0, 0, 0};
+
+			gpm_type = MCI_GPM_BT_CAL_DONE;
+			ath_dbg(common, MCI,
+				"MCI Rcv BT_CAL_REQ, send WLAN_CAL_GRANT\n");
+
+			MCI_GPM_SET_CAL_TYPE(payload,
+					MCI_GPM_WLAN_CAL_GRANT);
+
+			ar9003_mci_send_message(ah, MCI_GPM, 0, payload, 16,
+						false, false);
+
+			ath_dbg(common, MCI, "MCI now wait for BT_CAL_DONE\n");
+
+			continue;
+		} else {
+			ath_dbg(common, MCI, "MCI GPM subtype not match 0x%x\n",
+				*(p_gpm + 1));
+			mismatch++;
+			ar9003_mci_process_gpm_extra(ah, recv_type,
+					recv_opcode, p_gpm);
+		}
+	}
+	if (p_gpm) {
+		MCI_GPM_RECYCLE(p_gpm);
+		p_gpm = NULL;
+	}
+
+	if (time_out <= 0) {
+		time_out = 0;
+		ath_dbg(common, MCI,
+			"MCI GPM received timeout, mismatch = %d\n", mismatch);
+	} else
+		ath_dbg(common, MCI, "MCI Receive GPM type=0x%x, code=0x%x\n",
+			gpm_type, gpm_opcode);
+
+	while (more_data == MCI_GPM_MORE) {
+
+		ath_dbg(common, MCI, "MCI discard remaining GPM\n");
+		offset = ar9003_mci_state(ah, MCI_STATE_NEXT_GPM_OFFSET,
+					  &more_data);
+
+		if (offset == MCI_GPM_INVALID)
+			break;
+
+		p_gpm = (u32 *) (mci->gpm_buf + offset);
+		recv_type = MCI_GPM_TYPE(p_gpm);
+		recv_opcode = MCI_GPM_OPCODE(p_gpm);
+
+		if (!MCI_GPM_IS_CAL_TYPE(recv_type))
+			ar9003_mci_process_gpm_extra(ah, recv_type,
+						     recv_opcode, p_gpm);
+
+		MCI_GPM_RECYCLE(p_gpm);
+	}
+
+	return time_out;
+}
+
 bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan)
 {
 	struct ath_common *common = ath9k_hw_common(ah);
@@ -693,6 +905,39 @@ exit:
 	return 0;
 }
 
+static void ar9003_mci_mute_bt(struct ath_hw *ah)
+{
+	struct ath_common *common = ath9k_hw_common(ah);
+
+	if (!ATH9K_HW_CAP_MCI)
+		return;
+
+	/* disable all MCI messages */
+	REG_WRITE(ah, AR_MCI_MSG_ATTRIBUTES_TABLE, 0xffff0000);
+	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS0, 0xffffffff);
+	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS1, 0xffffffff);
+	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS2, 0xffffffff);
+	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS3, 0xffffffff);
+	REG_SET_BIT(ah, AR_MCI_TX_CTRL, AR_MCI_TX_CTRL_DISABLE_LNA_UPDATE);
+
+	/* wait pending HW messages to flush out */
+	udelay(10);
+
+	/*
+	 * Send LNA_TAKE and SYS_SLEEPING when
+	 * 1. reset not after resuming from full sleep
+	 * 2. before reset MCI RX, to quiet BT and avoid MCI RX misalignment
+	 */
+
+	ath_dbg(common, MCI, "MCI Send LNA take\n");
+	ar9003_mci_send_lna_take(ah, true);
+
+	udelay(5);
+
+	ath_dbg(common, MCI, "MCI Send sys sleeping\n");
+	ar9003_mci_send_sys_sleeping(ah, true);
+}
+
 void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
 		      bool is_full_sleep)
 {
@@ -838,69 +1083,6 @@ void ar9003_mci_stop_bt(struct ath_hw *ah, bool save_fullsleep)
 	mci_hw->ready = false;
 }
 
-void ar9003_mci_mute_bt(struct ath_hw *ah)
-{
-	struct ath_common *common = ath9k_hw_common(ah);
-
-	if (!ATH9K_HW_CAP_MCI)
-		return;
-
-	/* disable all MCI messages */
-	REG_WRITE(ah, AR_MCI_MSG_ATTRIBUTES_TABLE, 0xffff0000);
-	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS0, 0xffffffff);
-	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS1, 0xffffffff);
-	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS2, 0xffffffff);
-	REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS3, 0xffffffff);
-	REG_SET_BIT(ah, AR_MCI_TX_CTRL, AR_MCI_TX_CTRL_DISABLE_LNA_UPDATE);
-
-	/* wait pending HW messages to flush out */
-	udelay(10);
-
-	/*
-	 * Send LNA_TAKE and SYS_SLEEPING when
-	 * 1. reset not after resuming from full sleep
-	 * 2. before reset MCI RX, to quiet BT and avoid MCI RX misalignment
-	 */
-
-	ath_dbg(common, MCI, "MCI Send LNA take\n");
-	ar9003_mci_send_lna_take(ah, true);
-
-	udelay(5);
-
-	ath_dbg(common, MCI, "MCI Send sys sleeping\n");
-	ar9003_mci_send_sys_sleeping(ah, true);
-}
-
-void ar9003_mci_sync_bt_state(struct ath_hw *ah)
-{
-	struct ath_common *common = ath9k_hw_common(ah);
-	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
-	u32 cur_bt_state;
-
-	if (!ATH9K_HW_CAP_MCI)
-		return;
-
-	cur_bt_state = ar9003_mci_state(ah, MCI_STATE_REMOTE_SLEEP, NULL);
-
-	if (mci->bt_state != cur_bt_state) {
-		ath_dbg(common, MCI,
-			"MCI BT state mismatches. old: %d, new: %d\n",
-			mci->bt_state, cur_bt_state);
-		mci->bt_state = cur_bt_state;
-	}
-
-	if (mci->bt_state != MCI_BT_SLEEP) {
-
-		ar9003_mci_send_coex_version_query(ah, true);
-		ar9003_mci_send_coex_wlan_channels(ah, true);
-
-		if (mci->unhalt_bt_gpm == true) {
-			ath_dbg(common, MCI, "MCI unhalt BT GPM\n");
-			ar9003_mci_send_coex_halt_bt_gpm(ah, false, true);
-		}
-	}
-}
-
 static void ar9003_mci_send_2g5g_status(struct ath_hw *ah, bool wait_done)
 {
 	struct ath_common *common = ath9k_hw_common(ah);
@@ -1232,188 +1414,6 @@ void ar9003_mci_cleanup(struct ath_hw *ah)
 }
 EXPORT_SYMBOL(ar9003_mci_cleanup);
 
-static void ar9003_mci_process_gpm_extra(struct ath_hw *ah, u8 gpm_type,
-					 u8 gpm_opcode, u32 *p_gpm)
-{
-	struct ath_common *common = ath9k_hw_common(ah);
-	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
-	u8 *p_data = (u8 *) p_gpm;
-
-	if (gpm_type != MCI_GPM_COEX_AGENT)
-		return;
-
-	switch (gpm_opcode) {
-	case MCI_GPM_COEX_VERSION_QUERY:
-		ath_dbg(common, MCI, "MCI Recv GPM COEX Version Query\n");
-		ar9003_mci_send_coex_version_response(ah, true);
-		break;
-	case MCI_GPM_COEX_VERSION_RESPONSE:
-		ath_dbg(common, MCI, "MCI Recv GPM COEX Version Response\n");
-		mci->bt_ver_major =
-			*(p_data + MCI_GPM_COEX_B_MAJOR_VERSION);
-		mci->bt_ver_minor =
-			*(p_data + MCI_GPM_COEX_B_MINOR_VERSION);
-		mci->bt_version_known = true;
-		ath_dbg(common, MCI, "MCI BT Coex version: %d.%d\n",
-			mci->bt_ver_major, mci->bt_ver_minor);
-		break;
-	case MCI_GPM_COEX_STATUS_QUERY:
-		ath_dbg(common, MCI,
-			"MCI Recv GPM COEX Status Query = 0x%02X\n",
-			*(p_data + MCI_GPM_COEX_B_WLAN_BITMAP));
-		mci->wlan_channels_update = true;
-		ar9003_mci_send_coex_wlan_channels(ah, true);
-		break;
-	case MCI_GPM_COEX_BT_PROFILE_INFO:
-		mci->query_bt = true;
-		ath_dbg(common, MCI, "MCI Recv GPM COEX BT_Profile_Info\n");
-		break;
-	case MCI_GPM_COEX_BT_STATUS_UPDATE:
-		mci->query_bt = true;
-		ath_dbg(common, MCI,
-			"MCI Recv GPM COEX BT_Status_Update SEQ=%d (drop&query)\n",
-			*(p_gpm + 3));
-		break;
-	default:
-		break;
-	}
-}
-
-u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type,
-			    u8 gpm_opcode, int time_out)
-{
-	struct ath_common *common = ath9k_hw_common(ah);
-	struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
-	u32 *p_gpm = NULL, mismatch = 0, more_data;
-	u32 offset;
-	u8 recv_type = 0, recv_opcode = 0;
-	bool b_is_bt_cal_done = (gpm_type == MCI_GPM_BT_CAL_DONE);
-
-	if (!ATH9K_HW_CAP_MCI)
-		return 0;
-
-	more_data = time_out ? MCI_GPM_NOMORE : MCI_GPM_MORE;
-
-	while (time_out > 0) {
-		if (p_gpm) {
-			MCI_GPM_RECYCLE(p_gpm);
-			p_gpm = NULL;
-		}
-
-		if (more_data != MCI_GPM_MORE)
-			time_out = ar9003_mci_wait_for_interrupt(ah,
-					AR_MCI_INTERRUPT_RX_MSG_RAW,
-					AR_MCI_INTERRUPT_RX_MSG_GPM,
-					time_out);
-
-		if (!time_out)
-			break;
-
-		offset = ar9003_mci_state(ah,
-				MCI_STATE_NEXT_GPM_OFFSET, &more_data);
-
-		if (offset == MCI_GPM_INVALID)
-			continue;
-
-		p_gpm = (u32 *) (mci->gpm_buf + offset);
-		recv_type = MCI_GPM_TYPE(p_gpm);
-		recv_opcode = MCI_GPM_OPCODE(p_gpm);
-
-		if (MCI_GPM_IS_CAL_TYPE(recv_type)) {
-
-			if (recv_type == gpm_type) {
-
-				if ((gpm_type == MCI_GPM_BT_CAL_DONE) &&
-				    !b_is_bt_cal_done) {
-					gpm_type = MCI_GPM_BT_CAL_GRANT;
-					ath_dbg(common, MCI,
-						"MCI Recv BT_CAL_DONE wait BT_CAL_GRANT\n");
-					continue;
-				}
-
-				break;
-			}
-		} else if ((recv_type == gpm_type) &&
-			   (recv_opcode == gpm_opcode))
-			break;
-
-		/* not expected message */
-
-		/*
-		 * check if it's cal_grant
-		 *
-		 * When we're waiting for cal_grant in reset routine,
-		 * it's possible that BT sends out cal_request at the
-		 * same time. Since BT's calibration doesn't happen
-		 * that often, we'll let BT completes calibration then
-		 * we continue to wait for cal_grant from BT.
-		 * Orginal: Wait BT_CAL_GRANT.
-		 * New: Receive BT_CAL_REQ -> send WLAN_CAL_GRANT->wait
-		 * BT_CAL_DONE -> Wait BT_CAL_GRANT.
-		 */
-
-		if ((gpm_type == MCI_GPM_BT_CAL_GRANT) &&
-		    (recv_type == MCI_GPM_BT_CAL_REQ)) {
-
-			u32 payload[4] = {0, 0, 0, 0};
-
-			gpm_type = MCI_GPM_BT_CAL_DONE;
-			ath_dbg(common, MCI,
-				"MCI Rcv BT_CAL_REQ, send WLAN_CAL_GRANT\n");
-
-			MCI_GPM_SET_CAL_TYPE(payload,
-					MCI_GPM_WLAN_CAL_GRANT);
-
-			ar9003_mci_send_message(ah, MCI_GPM, 0, payload, 16,
-						false, false);
-
-			ath_dbg(common, MCI, "MCI now wait for BT_CAL_DONE\n");
-
-			continue;
-		} else {
-			ath_dbg(common, MCI, "MCI GPM subtype not match 0x%x\n",
-				*(p_gpm + 1));
-			mismatch++;
-			ar9003_mci_process_gpm_extra(ah, recv_type,
-					recv_opcode, p_gpm);
-		}
-	}
-	if (p_gpm) {
-		MCI_GPM_RECYCLE(p_gpm);
-		p_gpm = NULL;
-	}
-
-	if (time_out <= 0) {
-		time_out = 0;
-		ath_dbg(common, MCI,
-			"MCI GPM received timeout, mismatch = %d\n", mismatch);
-	} else
-		ath_dbg(common, MCI, "MCI Receive GPM type=0x%x, code=0x%x\n",
-			gpm_type, gpm_opcode);
-
-	while (more_data == MCI_GPM_MORE) {
-
-		ath_dbg(common, MCI, "MCI discard remaining GPM\n");
-		offset = ar9003_mci_state(ah, MCI_STATE_NEXT_GPM_OFFSET,
-					  &more_data);
-
-		if (offset == MCI_GPM_INVALID)
-			break;
-
-		p_gpm = (u32 *) (mci->gpm_buf + offset);
-		recv_type = MCI_GPM_TYPE(p_gpm);
-		recv_opcode = MCI_GPM_OPCODE(p_gpm);
-
-		if (!MCI_GPM_IS_CAL_TYPE(recv_type))
-			ar9003_mci_process_gpm_extra(ah, recv_type,
-						     recv_opcode, p_gpm);
-
-		MCI_GPM_RECYCLE(p_gpm);
-	}
-
-	return time_out;
-}
-
 u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type, u32 *p_data)
 {
 	struct ath_common *common = ath9k_hw_common(ah);
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.h b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
index 39bbf67..507527b 100644
--- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
@@ -258,21 +258,13 @@ bool ar9003_mci_send_message(struct ath_hw *ah, u8 header, u32 flag,
 			     u32 *payload, u8 len, bool wait_done,
 			     bool check_bt);
 void ar9003_mci_stop_bt(struct ath_hw *ah, bool sava_fullsleep);
-void ar9003_mci_mute_bt(struct ath_hw *ah);
 u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type, u32 *p_data);
 void ar9003_mci_init_cal_req(struct ath_hw *ah, bool *is_reusable);
 void ar9003_mci_init_cal_done(struct ath_hw *ah);
 void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
 		      u16 len, u32 sched_addr);
 void ar9003_mci_cleanup(struct ath_hw *ah);
-void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt,
-				      bool wait_done);
-u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type,
-			    u8 gpm_opcode, int time_out);
-void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g);
 void ar9003_mci_set_full_sleep(struct ath_hw *ah);
-void ar9003_mci_disable_interrupt(struct ath_hw *ah);
-void ar9003_mci_enable_interrupt(struct ath_hw *ah);
 void ar9003_mci_2g5g_switch(struct ath_hw *ah, bool wait_done);
 void ar9003_mci_check_bt(struct ath_hw *ah);
 bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan);
@@ -280,11 +272,6 @@ int ar9003_mci_end_reset(struct ath_hw *ah, struct ath9k_channel *chan,
 			 struct ath9k_hw_cal_data *caldata);
 void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
 		      bool is_full_sleep);
-bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints);
-void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done);
-void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done);
-void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done);
-void ar9003_mci_sync_bt_state(struct ath_hw *ah);
 void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr,
 			      u32 *rx_msg_intr);
 void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked);
-- 
1.7.9.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [RFC/WIP 15/22] ath9k_hw: Cleanup MCI function declarations
  2012-02-21  9:23 [RFC/WIP 15/22] ath9k_hw: Cleanup MCI function declarations Sujith Manoharan
@ 2012-02-21 11:45 ` Mohammed Shafi
  0 siblings, 0 replies; 2+ messages in thread
From: Mohammed Shafi @ 2012-02-21 11:45 UTC (permalink / raw)
  To: Sujith Manoharan; +Cc: linux-wireless, ath9k-devel

On Tue, Feb 21, 2012 at 2:53 PM, Sujith Manoharan
<c_manoha@qca.qualcomm.com> wrote:
> This patch converts a few functions to static variants
> and removes extraneous declarations.

thanks, with the help of new functions which you had introduced in
your previous patchs, which take care of calling few functions in
ar9003_mci.c  from hw.c helped to make them static

>
> Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
> ---
>  drivers/net/wireless/ath/ath9k/ar9003_mci.c |  508 +++++++++++++-------------
>  drivers/net/wireless/ath/ath9k/ar9003_mci.h |   13 -
>  2 files changed, 254 insertions(+), 267 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.c b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
> index 35299d5..e76ffcf 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9003_mci.c
> +++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.c
> @@ -82,7 +82,7 @@ static int ar9003_mci_wait_for_interrupt(struct ath_hw *ah, u32 address,
>        return time_out;
>  }
>
> -void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done)
> +static void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done)
>  {
>        u32 payload[4] = { 0xffffffff, 0xffffffff, 0xffffffff, 0xffffff00};
>
> @@ -94,7 +94,7 @@ void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done)
>        udelay(5);
>  }
>
> -void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done)
> +static void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done)
>  {
>        u32 payload = 0x00000000;
>
> @@ -112,7 +112,7 @@ static void ar9003_mci_send_req_wake(struct ath_hw *ah, bool wait_done)
>        udelay(5);
>  }
>
> -void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done)
> +static void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done)
>  {
>        if (!ATH9K_HW_CAP_MCI)
>                return;
> @@ -223,8 +223,8 @@ static void ar9003_mci_send_coex_bt_status_query(struct ath_hw *ah,
>        }
>  }
>
> -void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt,
> -                                     bool wait_done)
> +static void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt,
> +                                            bool wait_done)
>  {
>        struct ath_common *common = ath9k_hw_common(ah);
>        struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> @@ -383,7 +383,7 @@ void ar9003_mci_set_full_sleep(struct ath_hw *ah)
>        REG_WRITE(ah, AR_RTC_KEEP_AWAKE, 0x2);
>  }
>
> -void ar9003_mci_disable_interrupt(struct ath_hw *ah)
> +static void ar9003_mci_disable_interrupt(struct ath_hw *ah)
>  {
>        if (!ATH9K_HW_CAP_MCI)
>                return;
> @@ -392,7 +392,7 @@ void ar9003_mci_disable_interrupt(struct ath_hw *ah)
>        REG_WRITE(ah, AR_MCI_INTERRUPT_RX_MSG_EN, 0);
>  }
>
> -void ar9003_mci_enable_interrupt(struct ath_hw *ah)
> +static void ar9003_mci_enable_interrupt(struct ath_hw *ah)
>  {
>        if (!ATH9K_HW_CAP_MCI)
>                return;
> @@ -402,7 +402,7 @@ void ar9003_mci_enable_interrupt(struct ath_hw *ah)
>                  AR_MCI_INTERRUPT_RX_MSG_DEFAULT);
>  }
>
> -bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints)
> +static bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints)
>  {
>        u32 intr;
>
> @@ -455,7 +455,7 @@ void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked)
>        }
>  }
>
> -void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g)
> +static void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g)
>  {
>        struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
>
> @@ -568,6 +568,36 @@ static bool ar9003_mci_send_coex_bt_flags(struct ath_hw *ah, bool wait_done,
>                                                        wait_done, true);
>  }
>
> +static void ar9003_mci_sync_bt_state(struct ath_hw *ah)
> +{
> +       struct ath_common *common = ath9k_hw_common(ah);
> +       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> +       u32 cur_bt_state;
> +
> +       if (!ATH9K_HW_CAP_MCI)
> +               return;
> +
> +       cur_bt_state = ar9003_mci_state(ah, MCI_STATE_REMOTE_SLEEP, NULL);
> +
> +       if (mci->bt_state != cur_bt_state) {
> +               ath_dbg(common, MCI,
> +                       "MCI BT state mismatches. old: %d, new: %d\n",
> +                       mci->bt_state, cur_bt_state);
> +               mci->bt_state = cur_bt_state;
> +       }
> +
> +       if (mci->bt_state != MCI_BT_SLEEP) {
> +
> +               ar9003_mci_send_coex_version_query(ah, true);
> +               ar9003_mci_send_coex_wlan_channels(ah, true);
> +
> +               if (mci->unhalt_bt_gpm == true) {
> +                       ath_dbg(common, MCI, "MCI unhalt BT GPM\n");
> +                       ar9003_mci_send_coex_halt_bt_gpm(ah, false, true);
> +               }
> +       }
> +}
> +
>  void ar9003_mci_check_bt(struct ath_hw *ah)
>  {
>        struct ath9k_hw_mci *mci_hw = &ah->btcoex_hw.mci;
> @@ -588,6 +618,188 @@ void ar9003_mci_check_bt(struct ath_hw *ah)
>        }
>  }
>
> +static void ar9003_mci_process_gpm_extra(struct ath_hw *ah, u8 gpm_type,
> +                                        u8 gpm_opcode, u32 *p_gpm)
> +{
> +       struct ath_common *common = ath9k_hw_common(ah);
> +       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> +       u8 *p_data = (u8 *) p_gpm;
> +
> +       if (gpm_type != MCI_GPM_COEX_AGENT)
> +               return;
> +
> +       switch (gpm_opcode) {
> +       case MCI_GPM_COEX_VERSION_QUERY:
> +               ath_dbg(common, MCI, "MCI Recv GPM COEX Version Query\n");
> +               ar9003_mci_send_coex_version_response(ah, true);
> +               break;
> +       case MCI_GPM_COEX_VERSION_RESPONSE:
> +               ath_dbg(common, MCI, "MCI Recv GPM COEX Version Response\n");
> +               mci->bt_ver_major =
> +                       *(p_data + MCI_GPM_COEX_B_MAJOR_VERSION);
> +               mci->bt_ver_minor =
> +                       *(p_data + MCI_GPM_COEX_B_MINOR_VERSION);
> +               mci->bt_version_known = true;
> +               ath_dbg(common, MCI, "MCI BT Coex version: %d.%d\n",
> +                       mci->bt_ver_major, mci->bt_ver_minor);
> +               break;
> +       case MCI_GPM_COEX_STATUS_QUERY:
> +               ath_dbg(common, MCI,
> +                       "MCI Recv GPM COEX Status Query = 0x%02X\n",
> +                       *(p_data + MCI_GPM_COEX_B_WLAN_BITMAP));
> +               mci->wlan_channels_update = true;
> +               ar9003_mci_send_coex_wlan_channels(ah, true);
> +               break;
> +       case MCI_GPM_COEX_BT_PROFILE_INFO:
> +               mci->query_bt = true;
> +               ath_dbg(common, MCI, "MCI Recv GPM COEX BT_Profile_Info\n");
> +               break;
> +       case MCI_GPM_COEX_BT_STATUS_UPDATE:
> +               mci->query_bt = true;
> +               ath_dbg(common, MCI,
> +                       "MCI Recv GPM COEX BT_Status_Update SEQ=%d (drop&query)\n",
> +                       *(p_gpm + 3));
> +               break;
> +       default:
> +               break;
> +       }
> +}
> +
> +static u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type,
> +                                  u8 gpm_opcode, int time_out)
> +{
> +       struct ath_common *common = ath9k_hw_common(ah);
> +       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> +       u32 *p_gpm = NULL, mismatch = 0, more_data;
> +       u32 offset;
> +       u8 recv_type = 0, recv_opcode = 0;
> +       bool b_is_bt_cal_done = (gpm_type == MCI_GPM_BT_CAL_DONE);
> +
> +       if (!ATH9K_HW_CAP_MCI)
> +               return 0;
> +
> +       more_data = time_out ? MCI_GPM_NOMORE : MCI_GPM_MORE;
> +
> +       while (time_out > 0) {
> +               if (p_gpm) {
> +                       MCI_GPM_RECYCLE(p_gpm);
> +                       p_gpm = NULL;
> +               }
> +
> +               if (more_data != MCI_GPM_MORE)
> +                       time_out = ar9003_mci_wait_for_interrupt(ah,
> +                                       AR_MCI_INTERRUPT_RX_MSG_RAW,
> +                                       AR_MCI_INTERRUPT_RX_MSG_GPM,
> +                                       time_out);
> +
> +               if (!time_out)
> +                       break;
> +
> +               offset = ar9003_mci_state(ah,
> +                               MCI_STATE_NEXT_GPM_OFFSET, &more_data);
> +
> +               if (offset == MCI_GPM_INVALID)
> +                       continue;
> +
> +               p_gpm = (u32 *) (mci->gpm_buf + offset);
> +               recv_type = MCI_GPM_TYPE(p_gpm);
> +               recv_opcode = MCI_GPM_OPCODE(p_gpm);
> +
> +               if (MCI_GPM_IS_CAL_TYPE(recv_type)) {
> +
> +                       if (recv_type == gpm_type) {
> +
> +                               if ((gpm_type == MCI_GPM_BT_CAL_DONE) &&
> +                                   !b_is_bt_cal_done) {
> +                                       gpm_type = MCI_GPM_BT_CAL_GRANT;
> +                                       ath_dbg(common, MCI,
> +                                               "MCI Recv BT_CAL_DONE wait BT_CAL_GRANT\n");
> +                                       continue;
> +                               }
> +
> +                               break;
> +                       }
> +               } else if ((recv_type == gpm_type) &&
> +                          (recv_opcode == gpm_opcode))
> +                       break;
> +
> +               /* not expected message */
> +
> +               /*
> +                * check if it's cal_grant
> +                *
> +                * When we're waiting for cal_grant in reset routine,
> +                * it's possible that BT sends out cal_request at the
> +                * same time. Since BT's calibration doesn't happen
> +                * that often, we'll let BT completes calibration then
> +                * we continue to wait for cal_grant from BT.
> +                * Orginal: Wait BT_CAL_GRANT.
> +                * New: Receive BT_CAL_REQ -> send WLAN_CAL_GRANT->wait
> +                * BT_CAL_DONE -> Wait BT_CAL_GRANT.
> +                */
> +
> +               if ((gpm_type == MCI_GPM_BT_CAL_GRANT) &&
> +                   (recv_type == MCI_GPM_BT_CAL_REQ)) {
> +
> +                       u32 payload[4] = {0, 0, 0, 0};
> +
> +                       gpm_type = MCI_GPM_BT_CAL_DONE;
> +                       ath_dbg(common, MCI,
> +                               "MCI Rcv BT_CAL_REQ, send WLAN_CAL_GRANT\n");
> +
> +                       MCI_GPM_SET_CAL_TYPE(payload,
> +                                       MCI_GPM_WLAN_CAL_GRANT);
> +
> +                       ar9003_mci_send_message(ah, MCI_GPM, 0, payload, 16,
> +                                               false, false);
> +
> +                       ath_dbg(common, MCI, "MCI now wait for BT_CAL_DONE\n");
> +
> +                       continue;
> +               } else {
> +                       ath_dbg(common, MCI, "MCI GPM subtype not match 0x%x\n",
> +                               *(p_gpm + 1));
> +                       mismatch++;
> +                       ar9003_mci_process_gpm_extra(ah, recv_type,
> +                                       recv_opcode, p_gpm);
> +               }
> +       }
> +       if (p_gpm) {
> +               MCI_GPM_RECYCLE(p_gpm);
> +               p_gpm = NULL;
> +       }
> +
> +       if (time_out <= 0) {
> +               time_out = 0;
> +               ath_dbg(common, MCI,
> +                       "MCI GPM received timeout, mismatch = %d\n", mismatch);
> +       } else
> +               ath_dbg(common, MCI, "MCI Receive GPM type=0x%x, code=0x%x\n",
> +                       gpm_type, gpm_opcode);
> +
> +       while (more_data == MCI_GPM_MORE) {
> +
> +               ath_dbg(common, MCI, "MCI discard remaining GPM\n");
> +               offset = ar9003_mci_state(ah, MCI_STATE_NEXT_GPM_OFFSET,
> +                                         &more_data);
> +
> +               if (offset == MCI_GPM_INVALID)
> +                       break;
> +
> +               p_gpm = (u32 *) (mci->gpm_buf + offset);
> +               recv_type = MCI_GPM_TYPE(p_gpm);
> +               recv_opcode = MCI_GPM_OPCODE(p_gpm);
> +
> +               if (!MCI_GPM_IS_CAL_TYPE(recv_type))
> +                       ar9003_mci_process_gpm_extra(ah, recv_type,
> +                                                    recv_opcode, p_gpm);
> +
> +               MCI_GPM_RECYCLE(p_gpm);
> +       }
> +
> +       return time_out;
> +}
> +
>  bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan)
>  {
>        struct ath_common *common = ath9k_hw_common(ah);
> @@ -693,6 +905,39 @@ exit:
>        return 0;
>  }
>
> +static void ar9003_mci_mute_bt(struct ath_hw *ah)
> +{
> +       struct ath_common *common = ath9k_hw_common(ah);
> +
> +       if (!ATH9K_HW_CAP_MCI)
> +               return;
> +
> +       /* disable all MCI messages */
> +       REG_WRITE(ah, AR_MCI_MSG_ATTRIBUTES_TABLE, 0xffff0000);
> +       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS0, 0xffffffff);
> +       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS1, 0xffffffff);
> +       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS2, 0xffffffff);
> +       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS3, 0xffffffff);
> +       REG_SET_BIT(ah, AR_MCI_TX_CTRL, AR_MCI_TX_CTRL_DISABLE_LNA_UPDATE);
> +
> +       /* wait pending HW messages to flush out */
> +       udelay(10);
> +
> +       /*
> +        * Send LNA_TAKE and SYS_SLEEPING when
> +        * 1. reset not after resuming from full sleep
> +        * 2. before reset MCI RX, to quiet BT and avoid MCI RX misalignment
> +        */
> +
> +       ath_dbg(common, MCI, "MCI Send LNA take\n");
> +       ar9003_mci_send_lna_take(ah, true);
> +
> +       udelay(5);
> +
> +       ath_dbg(common, MCI, "MCI Send sys sleeping\n");
> +       ar9003_mci_send_sys_sleeping(ah, true);
> +}
> +
>  void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
>                      bool is_full_sleep)
>  {
> @@ -838,69 +1083,6 @@ void ar9003_mci_stop_bt(struct ath_hw *ah, bool save_fullsleep)
>        mci_hw->ready = false;
>  }
>
> -void ar9003_mci_mute_bt(struct ath_hw *ah)
> -{
> -       struct ath_common *common = ath9k_hw_common(ah);
> -
> -       if (!ATH9K_HW_CAP_MCI)
> -               return;
> -
> -       /* disable all MCI messages */
> -       REG_WRITE(ah, AR_MCI_MSG_ATTRIBUTES_TABLE, 0xffff0000);
> -       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS0, 0xffffffff);
> -       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS1, 0xffffffff);
> -       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS2, 0xffffffff);
> -       REG_WRITE(ah, AR_BTCOEX_WL_WEIGHTS3, 0xffffffff);
> -       REG_SET_BIT(ah, AR_MCI_TX_CTRL, AR_MCI_TX_CTRL_DISABLE_LNA_UPDATE);
> -
> -       /* wait pending HW messages to flush out */
> -       udelay(10);
> -
> -       /*
> -        * Send LNA_TAKE and SYS_SLEEPING when
> -        * 1. reset not after resuming from full sleep
> -        * 2. before reset MCI RX, to quiet BT and avoid MCI RX misalignment
> -        */
> -
> -       ath_dbg(common, MCI, "MCI Send LNA take\n");
> -       ar9003_mci_send_lna_take(ah, true);
> -
> -       udelay(5);
> -
> -       ath_dbg(common, MCI, "MCI Send sys sleeping\n");
> -       ar9003_mci_send_sys_sleeping(ah, true);
> -}
> -
> -void ar9003_mci_sync_bt_state(struct ath_hw *ah)
> -{
> -       struct ath_common *common = ath9k_hw_common(ah);
> -       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> -       u32 cur_bt_state;
> -
> -       if (!ATH9K_HW_CAP_MCI)
> -               return;
> -
> -       cur_bt_state = ar9003_mci_state(ah, MCI_STATE_REMOTE_SLEEP, NULL);
> -
> -       if (mci->bt_state != cur_bt_state) {
> -               ath_dbg(common, MCI,
> -                       "MCI BT state mismatches. old: %d, new: %d\n",
> -                       mci->bt_state, cur_bt_state);
> -               mci->bt_state = cur_bt_state;
> -       }
> -
> -       if (mci->bt_state != MCI_BT_SLEEP) {
> -
> -               ar9003_mci_send_coex_version_query(ah, true);
> -               ar9003_mci_send_coex_wlan_channels(ah, true);
> -
> -               if (mci->unhalt_bt_gpm == true) {
> -                       ath_dbg(common, MCI, "MCI unhalt BT GPM\n");
> -                       ar9003_mci_send_coex_halt_bt_gpm(ah, false, true);
> -               }
> -       }
> -}
> -
>  static void ar9003_mci_send_2g5g_status(struct ath_hw *ah, bool wait_done)
>  {
>        struct ath_common *common = ath9k_hw_common(ah);
> @@ -1232,188 +1414,6 @@ void ar9003_mci_cleanup(struct ath_hw *ah)
>  }
>  EXPORT_SYMBOL(ar9003_mci_cleanup);
>
> -static void ar9003_mci_process_gpm_extra(struct ath_hw *ah, u8 gpm_type,
> -                                        u8 gpm_opcode, u32 *p_gpm)
> -{
> -       struct ath_common *common = ath9k_hw_common(ah);
> -       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> -       u8 *p_data = (u8 *) p_gpm;
> -
> -       if (gpm_type != MCI_GPM_COEX_AGENT)
> -               return;
> -
> -       switch (gpm_opcode) {
> -       case MCI_GPM_COEX_VERSION_QUERY:
> -               ath_dbg(common, MCI, "MCI Recv GPM COEX Version Query\n");
> -               ar9003_mci_send_coex_version_response(ah, true);
> -               break;
> -       case MCI_GPM_COEX_VERSION_RESPONSE:
> -               ath_dbg(common, MCI, "MCI Recv GPM COEX Version Response\n");
> -               mci->bt_ver_major =
> -                       *(p_data + MCI_GPM_COEX_B_MAJOR_VERSION);
> -               mci->bt_ver_minor =
> -                       *(p_data + MCI_GPM_COEX_B_MINOR_VERSION);
> -               mci->bt_version_known = true;
> -               ath_dbg(common, MCI, "MCI BT Coex version: %d.%d\n",
> -                       mci->bt_ver_major, mci->bt_ver_minor);
> -               break;
> -       case MCI_GPM_COEX_STATUS_QUERY:
> -               ath_dbg(common, MCI,
> -                       "MCI Recv GPM COEX Status Query = 0x%02X\n",
> -                       *(p_data + MCI_GPM_COEX_B_WLAN_BITMAP));
> -               mci->wlan_channels_update = true;
> -               ar9003_mci_send_coex_wlan_channels(ah, true);
> -               break;
> -       case MCI_GPM_COEX_BT_PROFILE_INFO:
> -               mci->query_bt = true;
> -               ath_dbg(common, MCI, "MCI Recv GPM COEX BT_Profile_Info\n");
> -               break;
> -       case MCI_GPM_COEX_BT_STATUS_UPDATE:
> -               mci->query_bt = true;
> -               ath_dbg(common, MCI,
> -                       "MCI Recv GPM COEX BT_Status_Update SEQ=%d (drop&query)\n",
> -                       *(p_gpm + 3));
> -               break;
> -       default:
> -               break;
> -       }
> -}
> -
> -u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type,
> -                           u8 gpm_opcode, int time_out)
> -{
> -       struct ath_common *common = ath9k_hw_common(ah);
> -       struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci;
> -       u32 *p_gpm = NULL, mismatch = 0, more_data;
> -       u32 offset;
> -       u8 recv_type = 0, recv_opcode = 0;
> -       bool b_is_bt_cal_done = (gpm_type == MCI_GPM_BT_CAL_DONE);
> -
> -       if (!ATH9K_HW_CAP_MCI)
> -               return 0;
> -
> -       more_data = time_out ? MCI_GPM_NOMORE : MCI_GPM_MORE;
> -
> -       while (time_out > 0) {
> -               if (p_gpm) {
> -                       MCI_GPM_RECYCLE(p_gpm);
> -                       p_gpm = NULL;
> -               }
> -
> -               if (more_data != MCI_GPM_MORE)
> -                       time_out = ar9003_mci_wait_for_interrupt(ah,
> -                                       AR_MCI_INTERRUPT_RX_MSG_RAW,
> -                                       AR_MCI_INTERRUPT_RX_MSG_GPM,
> -                                       time_out);
> -
> -               if (!time_out)
> -                       break;
> -
> -               offset = ar9003_mci_state(ah,
> -                               MCI_STATE_NEXT_GPM_OFFSET, &more_data);
> -
> -               if (offset == MCI_GPM_INVALID)
> -                       continue;
> -
> -               p_gpm = (u32 *) (mci->gpm_buf + offset);
> -               recv_type = MCI_GPM_TYPE(p_gpm);
> -               recv_opcode = MCI_GPM_OPCODE(p_gpm);
> -
> -               if (MCI_GPM_IS_CAL_TYPE(recv_type)) {
> -
> -                       if (recv_type == gpm_type) {
> -
> -                               if ((gpm_type == MCI_GPM_BT_CAL_DONE) &&
> -                                   !b_is_bt_cal_done) {
> -                                       gpm_type = MCI_GPM_BT_CAL_GRANT;
> -                                       ath_dbg(common, MCI,
> -                                               "MCI Recv BT_CAL_DONE wait BT_CAL_GRANT\n");
> -                                       continue;
> -                               }
> -
> -                               break;
> -                       }
> -               } else if ((recv_type == gpm_type) &&
> -                          (recv_opcode == gpm_opcode))
> -                       break;
> -
> -               /* not expected message */
> -
> -               /*
> -                * check if it's cal_grant
> -                *
> -                * When we're waiting for cal_grant in reset routine,
> -                * it's possible that BT sends out cal_request at the
> -                * same time. Since BT's calibration doesn't happen
> -                * that often, we'll let BT completes calibration then
> -                * we continue to wait for cal_grant from BT.
> -                * Orginal: Wait BT_CAL_GRANT.
> -                * New: Receive BT_CAL_REQ -> send WLAN_CAL_GRANT->wait
> -                * BT_CAL_DONE -> Wait BT_CAL_GRANT.
> -                */
> -
> -               if ((gpm_type == MCI_GPM_BT_CAL_GRANT) &&
> -                   (recv_type == MCI_GPM_BT_CAL_REQ)) {
> -
> -                       u32 payload[4] = {0, 0, 0, 0};
> -
> -                       gpm_type = MCI_GPM_BT_CAL_DONE;
> -                       ath_dbg(common, MCI,
> -                               "MCI Rcv BT_CAL_REQ, send WLAN_CAL_GRANT\n");
> -
> -                       MCI_GPM_SET_CAL_TYPE(payload,
> -                                       MCI_GPM_WLAN_CAL_GRANT);
> -
> -                       ar9003_mci_send_message(ah, MCI_GPM, 0, payload, 16,
> -                                               false, false);
> -
> -                       ath_dbg(common, MCI, "MCI now wait for BT_CAL_DONE\n");
> -
> -                       continue;
> -               } else {
> -                       ath_dbg(common, MCI, "MCI GPM subtype not match 0x%x\n",
> -                               *(p_gpm + 1));
> -                       mismatch++;
> -                       ar9003_mci_process_gpm_extra(ah, recv_type,
> -                                       recv_opcode, p_gpm);
> -               }
> -       }
> -       if (p_gpm) {
> -               MCI_GPM_RECYCLE(p_gpm);
> -               p_gpm = NULL;
> -       }
> -
> -       if (time_out <= 0) {
> -               time_out = 0;
> -               ath_dbg(common, MCI,
> -                       "MCI GPM received timeout, mismatch = %d\n", mismatch);
> -       } else
> -               ath_dbg(common, MCI, "MCI Receive GPM type=0x%x, code=0x%x\n",
> -                       gpm_type, gpm_opcode);
> -
> -       while (more_data == MCI_GPM_MORE) {
> -
> -               ath_dbg(common, MCI, "MCI discard remaining GPM\n");
> -               offset = ar9003_mci_state(ah, MCI_STATE_NEXT_GPM_OFFSET,
> -                                         &more_data);
> -
> -               if (offset == MCI_GPM_INVALID)
> -                       break;
> -
> -               p_gpm = (u32 *) (mci->gpm_buf + offset);
> -               recv_type = MCI_GPM_TYPE(p_gpm);
> -               recv_opcode = MCI_GPM_OPCODE(p_gpm);
> -
> -               if (!MCI_GPM_IS_CAL_TYPE(recv_type))
> -                       ar9003_mci_process_gpm_extra(ah, recv_type,
> -                                                    recv_opcode, p_gpm);
> -
> -               MCI_GPM_RECYCLE(p_gpm);
> -       }
> -
> -       return time_out;
> -}
> -
>  u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type, u32 *p_data)
>  {
>        struct ath_common *common = ath9k_hw_common(ah);
> diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.h b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
> index 39bbf67..507527b 100644
> --- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h
> +++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h
> @@ -258,21 +258,13 @@ bool ar9003_mci_send_message(struct ath_hw *ah, u8 header, u32 flag,
>                             u32 *payload, u8 len, bool wait_done,
>                             bool check_bt);
>  void ar9003_mci_stop_bt(struct ath_hw *ah, bool sava_fullsleep);
> -void ar9003_mci_mute_bt(struct ath_hw *ah);
>  u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type, u32 *p_data);
>  void ar9003_mci_init_cal_req(struct ath_hw *ah, bool *is_reusable);
>  void ar9003_mci_init_cal_done(struct ath_hw *ah);
>  void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf,
>                      u16 len, u32 sched_addr);
>  void ar9003_mci_cleanup(struct ath_hw *ah);
> -void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt,
> -                                     bool wait_done);
> -u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type,
> -                           u8 gpm_opcode, int time_out);
> -void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g);
>  void ar9003_mci_set_full_sleep(struct ath_hw *ah);
> -void ar9003_mci_disable_interrupt(struct ath_hw *ah);
> -void ar9003_mci_enable_interrupt(struct ath_hw *ah);
>  void ar9003_mci_2g5g_switch(struct ath_hw *ah, bool wait_done);
>  void ar9003_mci_check_bt(struct ath_hw *ah);
>  bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan);
> @@ -280,11 +272,6 @@ int ar9003_mci_end_reset(struct ath_hw *ah, struct ath9k_channel *chan,
>                         struct ath9k_hw_cal_data *caldata);
>  void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g,
>                      bool is_full_sleep);
> -bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints);
> -void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done);
> -void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done);
> -void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done);
> -void ar9003_mci_sync_bt_state(struct ath_hw *ah);
>  void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr,
>                              u32 *rx_msg_intr);
>  void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked);
> --
> 1.7.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html



-- 
thanks,
shafi

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-02-21 11:45 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-21  9:23 [RFC/WIP 15/22] ath9k_hw: Cleanup MCI function declarations Sujith Manoharan
2012-02-21 11:45 ` Mohammed Shafi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).