diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2012-02-22 02:11:18 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-02-27 14:06:36 -0500 |
commit | f4701b5a0dc3e047d4a9e11cd70d8839893bad17 (patch) | |
tree | 7d6511583411cad0b703caefa5328afff8f131d1 | |
parent | 528e5d3605a589632bb6660aa1ea90729f8ca776 (diff) |
ath9k_hw: Cleanup MCI bits from hw.h
This patch moves all the MCI-specific declarations that have been
dumped unceremoniously in hw.h to ar9003_mci.h
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mac.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ar9003_mci.h | 195 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.h | 195 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/mci.h | 2 |
5 files changed, 199 insertions, 195 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mac.c b/drivers/net/wireless/ath/ath9k/ar9003_mac.c index 575f36a296f4..51687e3f63d8 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c +++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/export.h> | 16 | #include <linux/export.h> |
17 | #include "hw.h" | 17 | #include "hw.h" |
18 | #include "ar9003_mac.h" | 18 | #include "ar9003_mac.h" |
19 | #include "ar9003_mci.h" | ||
19 | 20 | ||
20 | static void ar9003_hw_rx_enable(struct ath_hw *hw) | 21 | static void ar9003_hw_rx_enable(struct ath_hw *hw) |
21 | { | 22 | { |
diff --git a/drivers/net/wireless/ath/ath9k/ar9003_mci.h b/drivers/net/wireless/ath/ath9k/ar9003_mci.h index 798da116a44c..39bbf67078db 100644 --- a/drivers/net/wireless/ath/ath9k/ar9003_mci.h +++ b/drivers/net/wireless/ath/ath9k/ar9003_mci.h | |||
@@ -99,4 +99,199 @@ enum mci_gpm_coex_bt_update_flags_op { | |||
99 | ATH_MCI_CONFIG_MCI_OBS_BT) | 99 | ATH_MCI_CONFIG_MCI_OBS_BT) |
100 | #define ATH_MCI_CONFIG_MCI_OBS_GPIO 0x0000002F | 100 | #define ATH_MCI_CONFIG_MCI_OBS_GPIO 0x0000002F |
101 | 101 | ||
102 | enum mci_message_header { /* length of payload */ | ||
103 | MCI_LNA_CTRL = 0x10, /* len = 0 */ | ||
104 | MCI_CONT_NACK = 0x20, /* len = 0 */ | ||
105 | MCI_CONT_INFO = 0x30, /* len = 4 */ | ||
106 | MCI_CONT_RST = 0x40, /* len = 0 */ | ||
107 | MCI_SCHD_INFO = 0x50, /* len = 16 */ | ||
108 | MCI_CPU_INT = 0x60, /* len = 4 */ | ||
109 | MCI_SYS_WAKING = 0x70, /* len = 0 */ | ||
110 | MCI_GPM = 0x80, /* len = 16 */ | ||
111 | MCI_LNA_INFO = 0x90, /* len = 1 */ | ||
112 | MCI_LNA_STATE = 0x94, | ||
113 | MCI_LNA_TAKE = 0x98, | ||
114 | MCI_LNA_TRANS = 0x9c, | ||
115 | MCI_SYS_SLEEPING = 0xa0, /* len = 0 */ | ||
116 | MCI_REQ_WAKE = 0xc0, /* len = 0 */ | ||
117 | MCI_DEBUG_16 = 0xfe, /* len = 2 */ | ||
118 | MCI_REMOTE_RESET = 0xff /* len = 16 */ | ||
119 | }; | ||
120 | |||
121 | enum ath_mci_gpm_coex_profile_type { | ||
122 | MCI_GPM_COEX_PROFILE_UNKNOWN, | ||
123 | MCI_GPM_COEX_PROFILE_RFCOMM, | ||
124 | MCI_GPM_COEX_PROFILE_A2DP, | ||
125 | MCI_GPM_COEX_PROFILE_HID, | ||
126 | MCI_GPM_COEX_PROFILE_BNEP, | ||
127 | MCI_GPM_COEX_PROFILE_VOICE, | ||
128 | MCI_GPM_COEX_PROFILE_MAX | ||
129 | }; | ||
130 | |||
131 | /* MCI GPM/Coex opcode/type definitions */ | ||
132 | enum { | ||
133 | MCI_GPM_COEX_W_GPM_PAYLOAD = 1, | ||
134 | MCI_GPM_COEX_B_GPM_TYPE = 4, | ||
135 | MCI_GPM_COEX_B_GPM_OPCODE = 5, | ||
136 | /* MCI_GPM_WLAN_CAL_REQ, MCI_GPM_WLAN_CAL_DONE */ | ||
137 | MCI_GPM_WLAN_CAL_W_SEQUENCE = 2, | ||
138 | |||
139 | /* MCI_GPM_COEX_VERSION_QUERY */ | ||
140 | /* MCI_GPM_COEX_VERSION_RESPONSE */ | ||
141 | MCI_GPM_COEX_B_MAJOR_VERSION = 6, | ||
142 | MCI_GPM_COEX_B_MINOR_VERSION = 7, | ||
143 | /* MCI_GPM_COEX_STATUS_QUERY */ | ||
144 | MCI_GPM_COEX_B_BT_BITMAP = 6, | ||
145 | MCI_GPM_COEX_B_WLAN_BITMAP = 7, | ||
146 | /* MCI_GPM_COEX_HALT_BT_GPM */ | ||
147 | MCI_GPM_COEX_B_HALT_STATE = 6, | ||
148 | /* MCI_GPM_COEX_WLAN_CHANNELS */ | ||
149 | MCI_GPM_COEX_B_CHANNEL_MAP = 6, | ||
150 | /* MCI_GPM_COEX_BT_PROFILE_INFO */ | ||
151 | MCI_GPM_COEX_B_PROFILE_TYPE = 6, | ||
152 | MCI_GPM_COEX_B_PROFILE_LINKID = 7, | ||
153 | MCI_GPM_COEX_B_PROFILE_STATE = 8, | ||
154 | MCI_GPM_COEX_B_PROFILE_ROLE = 9, | ||
155 | MCI_GPM_COEX_B_PROFILE_RATE = 10, | ||
156 | MCI_GPM_COEX_B_PROFILE_VOTYPE = 11, | ||
157 | MCI_GPM_COEX_H_PROFILE_T = 12, | ||
158 | MCI_GPM_COEX_B_PROFILE_W = 14, | ||
159 | MCI_GPM_COEX_B_PROFILE_A = 15, | ||
160 | /* MCI_GPM_COEX_BT_STATUS_UPDATE */ | ||
161 | MCI_GPM_COEX_B_STATUS_TYPE = 6, | ||
162 | MCI_GPM_COEX_B_STATUS_LINKID = 7, | ||
163 | MCI_GPM_COEX_B_STATUS_STATE = 8, | ||
164 | /* MCI_GPM_COEX_BT_UPDATE_FLAGS */ | ||
165 | MCI_GPM_COEX_W_BT_FLAGS = 6, | ||
166 | MCI_GPM_COEX_B_BT_FLAGS_OP = 10 | ||
167 | }; | ||
168 | |||
169 | enum mci_gpm_subtype { | ||
170 | MCI_GPM_BT_CAL_REQ = 0, | ||
171 | MCI_GPM_BT_CAL_GRANT = 1, | ||
172 | MCI_GPM_BT_CAL_DONE = 2, | ||
173 | MCI_GPM_WLAN_CAL_REQ = 3, | ||
174 | MCI_GPM_WLAN_CAL_GRANT = 4, | ||
175 | MCI_GPM_WLAN_CAL_DONE = 5, | ||
176 | MCI_GPM_COEX_AGENT = 0x0c, | ||
177 | MCI_GPM_RSVD_PATTERN = 0xfe, | ||
178 | MCI_GPM_RSVD_PATTERN32 = 0xfefefefe, | ||
179 | MCI_GPM_BT_DEBUG = 0xff | ||
180 | }; | ||
181 | |||
182 | enum mci_bt_state { | ||
183 | MCI_BT_SLEEP, | ||
184 | MCI_BT_AWAKE, | ||
185 | MCI_BT_CAL_START, | ||
186 | MCI_BT_CAL | ||
187 | }; | ||
188 | |||
189 | /* Type of state query */ | ||
190 | enum mci_state_type { | ||
191 | MCI_STATE_ENABLE, | ||
192 | MCI_STATE_INIT_GPM_OFFSET, | ||
193 | MCI_STATE_NEXT_GPM_OFFSET, | ||
194 | MCI_STATE_LAST_GPM_OFFSET, | ||
195 | MCI_STATE_BT, | ||
196 | MCI_STATE_SET_BT_SLEEP, | ||
197 | MCI_STATE_SET_BT_AWAKE, | ||
198 | MCI_STATE_SET_BT_CAL_START, | ||
199 | MCI_STATE_SET_BT_CAL, | ||
200 | MCI_STATE_LAST_SCHD_MSG_OFFSET, | ||
201 | MCI_STATE_REMOTE_SLEEP, | ||
202 | MCI_STATE_CONT_RSSI_POWER, | ||
203 | MCI_STATE_CONT_PRIORITY, | ||
204 | MCI_STATE_CONT_TXRX, | ||
205 | MCI_STATE_RESET_REQ_WAKE, | ||
206 | MCI_STATE_SEND_WLAN_COEX_VERSION, | ||
207 | MCI_STATE_SET_BT_COEX_VERSION, | ||
208 | MCI_STATE_SEND_WLAN_CHANNELS, | ||
209 | MCI_STATE_SEND_VERSION_QUERY, | ||
210 | MCI_STATE_SEND_STATUS_QUERY, | ||
211 | MCI_STATE_NEED_FLUSH_BT_INFO, | ||
212 | MCI_STATE_SET_CONCUR_TX_PRI, | ||
213 | MCI_STATE_RECOVER_RX, | ||
214 | MCI_STATE_NEED_FTP_STOMP, | ||
215 | MCI_STATE_NEED_TUNING, | ||
216 | MCI_STATE_DEBUG, | ||
217 | MCI_STATE_MAX | ||
218 | }; | ||
219 | |||
220 | enum mci_gpm_coex_opcode { | ||
221 | MCI_GPM_COEX_VERSION_QUERY, | ||
222 | MCI_GPM_COEX_VERSION_RESPONSE, | ||
223 | MCI_GPM_COEX_STATUS_QUERY, | ||
224 | MCI_GPM_COEX_HALT_BT_GPM, | ||
225 | MCI_GPM_COEX_WLAN_CHANNELS, | ||
226 | MCI_GPM_COEX_BT_PROFILE_INFO, | ||
227 | MCI_GPM_COEX_BT_STATUS_UPDATE, | ||
228 | MCI_GPM_COEX_BT_UPDATE_FLAGS | ||
229 | }; | ||
230 | |||
231 | #define MCI_GPM_NOMORE 0 | ||
232 | #define MCI_GPM_MORE 1 | ||
233 | #define MCI_GPM_INVALID 0xffffffff | ||
234 | |||
235 | #define MCI_GPM_RECYCLE(_p_gpm) do { \ | ||
236 | *(((u32 *)_p_gpm) + MCI_GPM_COEX_W_GPM_PAYLOAD) = \ | ||
237 | MCI_GPM_RSVD_PATTERN32; \ | ||
238 | } while (0) | ||
239 | |||
240 | #define MCI_GPM_TYPE(_p_gpm) \ | ||
241 | (*(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) & 0xff) | ||
242 | |||
243 | #define MCI_GPM_OPCODE(_p_gpm) \ | ||
244 | (*(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_OPCODE) & 0xff) | ||
245 | |||
246 | #define MCI_GPM_SET_CAL_TYPE(_p_gpm, _cal_type) do { \ | ||
247 | *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) = (_cal_type) & 0xff;\ | ||
248 | } while (0) | ||
249 | |||
250 | #define MCI_GPM_SET_TYPE_OPCODE(_p_gpm, _type, _opcode) do { \ | ||
251 | *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) = (_type) & 0xff; \ | ||
252 | *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_OPCODE) = (_opcode) & 0xff;\ | ||
253 | } while (0) | ||
254 | |||
255 | #define MCI_GPM_IS_CAL_TYPE(_type) ((_type) <= MCI_GPM_WLAN_CAL_DONE) | ||
256 | |||
257 | bool ar9003_mci_send_message(struct ath_hw *ah, u8 header, u32 flag, | ||
258 | u32 *payload, u8 len, bool wait_done, | ||
259 | bool check_bt); | ||
260 | void ar9003_mci_stop_bt(struct ath_hw *ah, bool sava_fullsleep); | ||
261 | void ar9003_mci_mute_bt(struct ath_hw *ah); | ||
262 | u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type, u32 *p_data); | ||
263 | void ar9003_mci_init_cal_req(struct ath_hw *ah, bool *is_reusable); | ||
264 | void ar9003_mci_init_cal_done(struct ath_hw *ah); | ||
265 | void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf, | ||
266 | u16 len, u32 sched_addr); | ||
267 | void ar9003_mci_cleanup(struct ath_hw *ah); | ||
268 | void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt, | ||
269 | bool wait_done); | ||
270 | u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type, | ||
271 | u8 gpm_opcode, int time_out); | ||
272 | void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g); | ||
273 | void ar9003_mci_set_full_sleep(struct ath_hw *ah); | ||
274 | void ar9003_mci_disable_interrupt(struct ath_hw *ah); | ||
275 | void ar9003_mci_enable_interrupt(struct ath_hw *ah); | ||
276 | void ar9003_mci_2g5g_switch(struct ath_hw *ah, bool wait_done); | ||
277 | void ar9003_mci_check_bt(struct ath_hw *ah); | ||
278 | bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan); | ||
279 | int ar9003_mci_end_reset(struct ath_hw *ah, struct ath9k_channel *chan, | ||
280 | struct ath9k_hw_cal_data *caldata); | ||
281 | void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g, | ||
282 | bool is_full_sleep); | ||
283 | bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints); | ||
284 | void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done); | ||
285 | void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done); | ||
286 | void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done); | ||
287 | void ar9003_mci_sync_bt_state(struct ath_hw *ah); | ||
288 | void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr, | ||
289 | u32 *rx_msg_intr); | ||
290 | void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked); | ||
291 | |||
292 | static inline bool ar9003_mci_is_ready(struct ath_hw *ah) | ||
293 | { | ||
294 | return ah->btcoex_hw.mci.ready; | ||
295 | } | ||
296 | |||
102 | #endif | 297 | #endif |
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 475e4caee776..5f2e30ca8eff 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "hw-ops.h" | 23 | #include "hw-ops.h" |
24 | #include "rc.h" | 24 | #include "rc.h" |
25 | #include "ar9003_mac.h" | 25 | #include "ar9003_mac.h" |
26 | #include "ar9003_mci.h" | ||
26 | 27 | ||
27 | static bool ath9k_hw_set_reset_reg(struct ath_hw *ah, u32 type); | 28 | static bool ath9k_hw_set_reset_reg(struct ath_hw *ah, u32 type); |
28 | 29 | ||
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h index 0d108dc25c57..96494a612650 100644 --- a/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h | |||
@@ -432,161 +432,6 @@ enum ath9k_rx_qtype { | |||
432 | ATH9K_RX_QUEUE_MAX, | 432 | ATH9K_RX_QUEUE_MAX, |
433 | }; | 433 | }; |
434 | 434 | ||
435 | enum mci_message_header { /* length of payload */ | ||
436 | MCI_LNA_CTRL = 0x10, /* len = 0 */ | ||
437 | MCI_CONT_NACK = 0x20, /* len = 0 */ | ||
438 | MCI_CONT_INFO = 0x30, /* len = 4 */ | ||
439 | MCI_CONT_RST = 0x40, /* len = 0 */ | ||
440 | MCI_SCHD_INFO = 0x50, /* len = 16 */ | ||
441 | MCI_CPU_INT = 0x60, /* len = 4 */ | ||
442 | MCI_SYS_WAKING = 0x70, /* len = 0 */ | ||
443 | MCI_GPM = 0x80, /* len = 16 */ | ||
444 | MCI_LNA_INFO = 0x90, /* len = 1 */ | ||
445 | MCI_LNA_STATE = 0x94, | ||
446 | MCI_LNA_TAKE = 0x98, | ||
447 | MCI_LNA_TRANS = 0x9c, | ||
448 | MCI_SYS_SLEEPING = 0xa0, /* len = 0 */ | ||
449 | MCI_REQ_WAKE = 0xc0, /* len = 0 */ | ||
450 | MCI_DEBUG_16 = 0xfe, /* len = 2 */ | ||
451 | MCI_REMOTE_RESET = 0xff /* len = 16 */ | ||
452 | }; | ||
453 | |||
454 | enum ath_mci_gpm_coex_profile_type { | ||
455 | MCI_GPM_COEX_PROFILE_UNKNOWN, | ||
456 | MCI_GPM_COEX_PROFILE_RFCOMM, | ||
457 | MCI_GPM_COEX_PROFILE_A2DP, | ||
458 | MCI_GPM_COEX_PROFILE_HID, | ||
459 | MCI_GPM_COEX_PROFILE_BNEP, | ||
460 | MCI_GPM_COEX_PROFILE_VOICE, | ||
461 | MCI_GPM_COEX_PROFILE_MAX | ||
462 | }; | ||
463 | |||
464 | /* MCI GPM/Coex opcode/type definitions */ | ||
465 | enum { | ||
466 | MCI_GPM_COEX_W_GPM_PAYLOAD = 1, | ||
467 | MCI_GPM_COEX_B_GPM_TYPE = 4, | ||
468 | MCI_GPM_COEX_B_GPM_OPCODE = 5, | ||
469 | /* MCI_GPM_WLAN_CAL_REQ, MCI_GPM_WLAN_CAL_DONE */ | ||
470 | MCI_GPM_WLAN_CAL_W_SEQUENCE = 2, | ||
471 | |||
472 | /* MCI_GPM_COEX_VERSION_QUERY */ | ||
473 | /* MCI_GPM_COEX_VERSION_RESPONSE */ | ||
474 | MCI_GPM_COEX_B_MAJOR_VERSION = 6, | ||
475 | MCI_GPM_COEX_B_MINOR_VERSION = 7, | ||
476 | /* MCI_GPM_COEX_STATUS_QUERY */ | ||
477 | MCI_GPM_COEX_B_BT_BITMAP = 6, | ||
478 | MCI_GPM_COEX_B_WLAN_BITMAP = 7, | ||
479 | /* MCI_GPM_COEX_HALT_BT_GPM */ | ||
480 | MCI_GPM_COEX_B_HALT_STATE = 6, | ||
481 | /* MCI_GPM_COEX_WLAN_CHANNELS */ | ||
482 | MCI_GPM_COEX_B_CHANNEL_MAP = 6, | ||
483 | /* MCI_GPM_COEX_BT_PROFILE_INFO */ | ||
484 | MCI_GPM_COEX_B_PROFILE_TYPE = 6, | ||
485 | MCI_GPM_COEX_B_PROFILE_LINKID = 7, | ||
486 | MCI_GPM_COEX_B_PROFILE_STATE = 8, | ||
487 | MCI_GPM_COEX_B_PROFILE_ROLE = 9, | ||
488 | MCI_GPM_COEX_B_PROFILE_RATE = 10, | ||
489 | MCI_GPM_COEX_B_PROFILE_VOTYPE = 11, | ||
490 | MCI_GPM_COEX_H_PROFILE_T = 12, | ||
491 | MCI_GPM_COEX_B_PROFILE_W = 14, | ||
492 | MCI_GPM_COEX_B_PROFILE_A = 15, | ||
493 | /* MCI_GPM_COEX_BT_STATUS_UPDATE */ | ||
494 | MCI_GPM_COEX_B_STATUS_TYPE = 6, | ||
495 | MCI_GPM_COEX_B_STATUS_LINKID = 7, | ||
496 | MCI_GPM_COEX_B_STATUS_STATE = 8, | ||
497 | /* MCI_GPM_COEX_BT_UPDATE_FLAGS */ | ||
498 | MCI_GPM_COEX_W_BT_FLAGS = 6, | ||
499 | MCI_GPM_COEX_B_BT_FLAGS_OP = 10 | ||
500 | }; | ||
501 | |||
502 | enum mci_gpm_subtype { | ||
503 | MCI_GPM_BT_CAL_REQ = 0, | ||
504 | MCI_GPM_BT_CAL_GRANT = 1, | ||
505 | MCI_GPM_BT_CAL_DONE = 2, | ||
506 | MCI_GPM_WLAN_CAL_REQ = 3, | ||
507 | MCI_GPM_WLAN_CAL_GRANT = 4, | ||
508 | MCI_GPM_WLAN_CAL_DONE = 5, | ||
509 | MCI_GPM_COEX_AGENT = 0x0c, | ||
510 | MCI_GPM_RSVD_PATTERN = 0xfe, | ||
511 | MCI_GPM_RSVD_PATTERN32 = 0xfefefefe, | ||
512 | MCI_GPM_BT_DEBUG = 0xff | ||
513 | }; | ||
514 | |||
515 | enum mci_bt_state { | ||
516 | MCI_BT_SLEEP, | ||
517 | MCI_BT_AWAKE, | ||
518 | MCI_BT_CAL_START, | ||
519 | MCI_BT_CAL | ||
520 | }; | ||
521 | |||
522 | /* Type of state query */ | ||
523 | enum mci_state_type { | ||
524 | MCI_STATE_ENABLE, | ||
525 | MCI_STATE_INIT_GPM_OFFSET, | ||
526 | MCI_STATE_NEXT_GPM_OFFSET, | ||
527 | MCI_STATE_LAST_GPM_OFFSET, | ||
528 | MCI_STATE_BT, | ||
529 | MCI_STATE_SET_BT_SLEEP, | ||
530 | MCI_STATE_SET_BT_AWAKE, | ||
531 | MCI_STATE_SET_BT_CAL_START, | ||
532 | MCI_STATE_SET_BT_CAL, | ||
533 | MCI_STATE_LAST_SCHD_MSG_OFFSET, | ||
534 | MCI_STATE_REMOTE_SLEEP, | ||
535 | MCI_STATE_CONT_RSSI_POWER, | ||
536 | MCI_STATE_CONT_PRIORITY, | ||
537 | MCI_STATE_CONT_TXRX, | ||
538 | MCI_STATE_RESET_REQ_WAKE, | ||
539 | MCI_STATE_SEND_WLAN_COEX_VERSION, | ||
540 | MCI_STATE_SET_BT_COEX_VERSION, | ||
541 | MCI_STATE_SEND_WLAN_CHANNELS, | ||
542 | MCI_STATE_SEND_VERSION_QUERY, | ||
543 | MCI_STATE_SEND_STATUS_QUERY, | ||
544 | MCI_STATE_NEED_FLUSH_BT_INFO, | ||
545 | MCI_STATE_SET_CONCUR_TX_PRI, | ||
546 | MCI_STATE_RECOVER_RX, | ||
547 | MCI_STATE_NEED_FTP_STOMP, | ||
548 | MCI_STATE_NEED_TUNING, | ||
549 | MCI_STATE_DEBUG, | ||
550 | MCI_STATE_MAX | ||
551 | }; | ||
552 | |||
553 | enum mci_gpm_coex_opcode { | ||
554 | MCI_GPM_COEX_VERSION_QUERY, | ||
555 | MCI_GPM_COEX_VERSION_RESPONSE, | ||
556 | MCI_GPM_COEX_STATUS_QUERY, | ||
557 | MCI_GPM_COEX_HALT_BT_GPM, | ||
558 | MCI_GPM_COEX_WLAN_CHANNELS, | ||
559 | MCI_GPM_COEX_BT_PROFILE_INFO, | ||
560 | MCI_GPM_COEX_BT_STATUS_UPDATE, | ||
561 | MCI_GPM_COEX_BT_UPDATE_FLAGS | ||
562 | }; | ||
563 | |||
564 | #define MCI_GPM_NOMORE 0 | ||
565 | #define MCI_GPM_MORE 1 | ||
566 | #define MCI_GPM_INVALID 0xffffffff | ||
567 | |||
568 | #define MCI_GPM_RECYCLE(_p_gpm) do { \ | ||
569 | *(((u32 *)_p_gpm) + MCI_GPM_COEX_W_GPM_PAYLOAD) = \ | ||
570 | MCI_GPM_RSVD_PATTERN32; \ | ||
571 | } while (0) | ||
572 | |||
573 | #define MCI_GPM_TYPE(_p_gpm) \ | ||
574 | (*(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) & 0xff) | ||
575 | |||
576 | #define MCI_GPM_OPCODE(_p_gpm) \ | ||
577 | (*(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_OPCODE) & 0xff) | ||
578 | |||
579 | #define MCI_GPM_SET_CAL_TYPE(_p_gpm, _cal_type) do { \ | ||
580 | *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) = (_cal_type) & 0xff;\ | ||
581 | } while (0) | ||
582 | |||
583 | #define MCI_GPM_SET_TYPE_OPCODE(_p_gpm, _type, _opcode) do { \ | ||
584 | *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) = (_type) & 0xff; \ | ||
585 | *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_OPCODE) = (_opcode) & 0xff;\ | ||
586 | } while (0) | ||
587 | |||
588 | #define MCI_GPM_IS_CAL_TYPE(_type) ((_type) <= MCI_GPM_WLAN_CAL_DONE) | ||
589 | |||
590 | struct ath9k_beacon_state { | 435 | struct ath9k_beacon_state { |
591 | u32 bs_nexttbtt; | 436 | u32 bs_nexttbtt; |
592 | u32 bs_nextdtim; | 437 | u32 bs_nextdtim; |
@@ -1206,46 +1051,6 @@ void ath9k_ani_reset(struct ath_hw *ah, bool is_scanning); | |||
1206 | void ath9k_hw_proc_mib_event(struct ath_hw *ah); | 1051 | void ath9k_hw_proc_mib_event(struct ath_hw *ah); |
1207 | void ath9k_hw_ani_monitor(struct ath_hw *ah, struct ath9k_channel *chan); | 1052 | void ath9k_hw_ani_monitor(struct ath_hw *ah, struct ath9k_channel *chan); |
1208 | 1053 | ||
1209 | bool ar9003_mci_send_message(struct ath_hw *ah, u8 header, u32 flag, | ||
1210 | u32 *payload, u8 len, bool wait_done, | ||
1211 | bool check_bt); | ||
1212 | void ar9003_mci_stop_bt(struct ath_hw *ah, bool sava_fullsleep); | ||
1213 | void ar9003_mci_mute_bt(struct ath_hw *ah); | ||
1214 | u32 ar9003_mci_state(struct ath_hw *ah, u32 state_type, u32 *p_data); | ||
1215 | void ar9003_mci_init_cal_req(struct ath_hw *ah, bool *is_reusable); | ||
1216 | void ar9003_mci_init_cal_done(struct ath_hw *ah); | ||
1217 | void ar9003_mci_setup(struct ath_hw *ah, u32 gpm_addr, void *gpm_buf, | ||
1218 | u16 len, u32 sched_addr); | ||
1219 | void ar9003_mci_cleanup(struct ath_hw *ah); | ||
1220 | void ar9003_mci_send_coex_halt_bt_gpm(struct ath_hw *ah, bool halt, | ||
1221 | bool wait_done); | ||
1222 | u32 ar9003_mci_wait_for_gpm(struct ath_hw *ah, u8 gpm_type, | ||
1223 | u8 gpm_opcode, int time_out); | ||
1224 | void ar9003_mci_2g5g_changed(struct ath_hw *ah, bool is_2g); | ||
1225 | void ar9003_mci_set_full_sleep(struct ath_hw *ah); | ||
1226 | void ar9003_mci_disable_interrupt(struct ath_hw *ah); | ||
1227 | void ar9003_mci_enable_interrupt(struct ath_hw *ah); | ||
1228 | void ar9003_mci_2g5g_switch(struct ath_hw *ah, bool wait_done); | ||
1229 | void ar9003_mci_check_bt(struct ath_hw *ah); | ||
1230 | bool ar9003_mci_start_reset(struct ath_hw *ah, struct ath9k_channel *chan); | ||
1231 | int ar9003_mci_end_reset(struct ath_hw *ah, struct ath9k_channel *chan, | ||
1232 | struct ath9k_hw_cal_data *caldata); | ||
1233 | void ar9003_mci_reset(struct ath_hw *ah, bool en_int, bool is_2g, | ||
1234 | bool is_full_sleep); | ||
1235 | bool ar9003_mci_check_int(struct ath_hw *ah, u32 ints); | ||
1236 | void ar9003_mci_remote_reset(struct ath_hw *ah, bool wait_done); | ||
1237 | void ar9003_mci_send_sys_waking(struct ath_hw *ah, bool wait_done); | ||
1238 | void ar9003_mci_send_lna_transfer(struct ath_hw *ah, bool wait_done); | ||
1239 | void ar9003_mci_sync_bt_state(struct ath_hw *ah); | ||
1240 | void ar9003_mci_get_interrupt(struct ath_hw *ah, u32 *raw_intr, | ||
1241 | u32 *rx_msg_intr); | ||
1242 | void ar9003_mci_get_isr(struct ath_hw *ah, enum ath9k_int *masked); | ||
1243 | |||
1244 | static inline bool ar9003_mci_is_ready(struct ath_hw *ah) | ||
1245 | { | ||
1246 | return ah->btcoex_hw.mci.ready; | ||
1247 | } | ||
1248 | |||
1249 | #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT | 1054 | #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT |
1250 | static inline enum ath_btcoex_scheme | 1055 | static inline enum ath_btcoex_scheme |
1251 | ath9k_hw_get_btcoex_scheme(struct ath_hw *ah) | 1056 | ath9k_hw_get_btcoex_scheme(struct ath_hw *ah) |
diff --git a/drivers/net/wireless/ath/ath9k/mci.h b/drivers/net/wireless/ath/ath9k/mci.h index b805bf24ea4c..c841444f53c2 100644 --- a/drivers/net/wireless/ath/ath9k/mci.h +++ b/drivers/net/wireless/ath/ath9k/mci.h | |||
@@ -17,6 +17,8 @@ | |||
17 | #ifndef MCI_H | 17 | #ifndef MCI_H |
18 | #define MCI_H | 18 | #define MCI_H |
19 | 19 | ||
20 | #include "ar9003_mci.h" | ||
21 | |||
20 | #define ATH_MCI_SCHED_BUF_SIZE (16 * 16) /* 16 entries, 4 dword each */ | 22 | #define ATH_MCI_SCHED_BUF_SIZE (16 * 16) /* 16 entries, 4 dword each */ |
21 | #define ATH_MCI_GPM_MAX_ENTRY 16 | 23 | #define ATH_MCI_GPM_MAX_ENTRY 16 |
22 | #define ATH_MCI_GPM_BUF_SIZE (ATH_MCI_GPM_MAX_ENTRY * 16) | 24 | #define ATH_MCI_GPM_BUF_SIZE (ATH_MCI_GPM_MAX_ENTRY * 16) |