aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/hw.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/hw.h')
-rw-r--r--drivers/net/wireless/ath/ath9k/hw.h146
1 files changed, 146 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.h b/drivers/net/wireless/ath/ath9k/hw.h
index 3cb878c28ccf..4f786cb3020a 100644
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -266,6 +266,7 @@ enum ath9k_int {
266 ATH9K_INT_TX = 0x00000040, 266 ATH9K_INT_TX = 0x00000040,
267 ATH9K_INT_TXDESC = 0x00000080, 267 ATH9K_INT_TXDESC = 0x00000080,
268 ATH9K_INT_TIM_TIMER = 0x00000100, 268 ATH9K_INT_TIM_TIMER = 0x00000100,
269 ATH9K_INT_MCI = 0x00000200,
269 ATH9K_INT_BB_WATCHDOG = 0x00000400, 270 ATH9K_INT_BB_WATCHDOG = 0x00000400,
270 ATH9K_INT_TXURN = 0x00000800, 271 ATH9K_INT_TXURN = 0x00000800,
271 ATH9K_INT_MIB = 0x00001000, 272 ATH9K_INT_MIB = 0x00001000,
@@ -417,6 +418,25 @@ enum ath9k_rx_qtype {
417 ATH9K_RX_QUEUE_MAX, 418 ATH9K_RX_QUEUE_MAX,
418}; 419};
419 420
421enum mci_message_header { /* length of payload */
422 MCI_LNA_CTRL = 0x10, /* len = 0 */
423 MCI_CONT_NACK = 0x20, /* len = 0 */
424 MCI_CONT_INFO = 0x30, /* len = 4 */
425 MCI_CONT_RST = 0x40, /* len = 0 */
426 MCI_SCHD_INFO = 0x50, /* len = 16 */
427 MCI_CPU_INT = 0x60, /* len = 4 */
428 MCI_SYS_WAKING = 0x70, /* len = 0 */
429 MCI_GPM = 0x80, /* len = 16 */
430 MCI_LNA_INFO = 0x90, /* len = 1 */
431 MCI_LNA_STATE = 0x94,
432 MCI_LNA_TAKE = 0x98,
433 MCI_LNA_TRANS = 0x9c,
434 MCI_SYS_SLEEPING = 0xa0, /* len = 0 */
435 MCI_REQ_WAKE = 0xc0, /* len = 0 */
436 MCI_DEBUG_16 = 0xfe, /* len = 2 */
437 MCI_REMOTE_RESET = 0xff /* len = 16 */
438};
439
420enum ath_mci_gpm_coex_profile_type { 440enum ath_mci_gpm_coex_profile_type {
421 MCI_GPM_COEX_PROFILE_UNKNOWN, 441 MCI_GPM_COEX_PROFILE_UNKNOWN,
422 MCI_GPM_COEX_PROFILE_RFCOMM, 442 MCI_GPM_COEX_PROFILE_RFCOMM,
@@ -427,6 +447,132 @@ enum ath_mci_gpm_coex_profile_type {
427 MCI_GPM_COEX_PROFILE_MAX 447 MCI_GPM_COEX_PROFILE_MAX
428}; 448};
429 449
450/* MCI GPM/Coex opcode/type definitions */
451enum {
452 MCI_GPM_COEX_W_GPM_PAYLOAD = 1,
453 MCI_GPM_COEX_B_GPM_TYPE = 4,
454 MCI_GPM_COEX_B_GPM_OPCODE = 5,
455 /* MCI_GPM_WLAN_CAL_REQ, MCI_GPM_WLAN_CAL_DONE */
456 MCI_GPM_WLAN_CAL_W_SEQUENCE = 2,
457
458 /* MCI_GPM_COEX_VERSION_QUERY */
459 /* MCI_GPM_COEX_VERSION_RESPONSE */
460 MCI_GPM_COEX_B_MAJOR_VERSION = 6,
461 MCI_GPM_COEX_B_MINOR_VERSION = 7,
462 /* MCI_GPM_COEX_STATUS_QUERY */
463 MCI_GPM_COEX_B_BT_BITMAP = 6,
464 MCI_GPM_COEX_B_WLAN_BITMAP = 7,
465 /* MCI_GPM_COEX_HALT_BT_GPM */
466 MCI_GPM_COEX_B_HALT_STATE = 6,
467 /* MCI_GPM_COEX_WLAN_CHANNELS */
468 MCI_GPM_COEX_B_CHANNEL_MAP = 6,
469 /* MCI_GPM_COEX_BT_PROFILE_INFO */
470 MCI_GPM_COEX_B_PROFILE_TYPE = 6,
471 MCI_GPM_COEX_B_PROFILE_LINKID = 7,
472 MCI_GPM_COEX_B_PROFILE_STATE = 8,
473 MCI_GPM_COEX_B_PROFILE_ROLE = 9,
474 MCI_GPM_COEX_B_PROFILE_RATE = 10,
475 MCI_GPM_COEX_B_PROFILE_VOTYPE = 11,
476 MCI_GPM_COEX_H_PROFILE_T = 12,
477 MCI_GPM_COEX_B_PROFILE_W = 14,
478 MCI_GPM_COEX_B_PROFILE_A = 15,
479 /* MCI_GPM_COEX_BT_STATUS_UPDATE */
480 MCI_GPM_COEX_B_STATUS_TYPE = 6,
481 MCI_GPM_COEX_B_STATUS_LINKID = 7,
482 MCI_GPM_COEX_B_STATUS_STATE = 8,
483 /* MCI_GPM_COEX_BT_UPDATE_FLAGS */
484 MCI_GPM_COEX_W_BT_FLAGS = 6,
485 MCI_GPM_COEX_B_BT_FLAGS_OP = 10
486};
487
488enum mci_gpm_subtype {
489 MCI_GPM_BT_CAL_REQ = 0,
490 MCI_GPM_BT_CAL_GRANT = 1,
491 MCI_GPM_BT_CAL_DONE = 2,
492 MCI_GPM_WLAN_CAL_REQ = 3,
493 MCI_GPM_WLAN_CAL_GRANT = 4,
494 MCI_GPM_WLAN_CAL_DONE = 5,
495 MCI_GPM_COEX_AGENT = 0x0c,
496 MCI_GPM_RSVD_PATTERN = 0xfe,
497 MCI_GPM_RSVD_PATTERN32 = 0xfefefefe,
498 MCI_GPM_BT_DEBUG = 0xff
499};
500
501enum mci_bt_state {
502 MCI_BT_SLEEP,
503 MCI_BT_AWAKE,
504 MCI_BT_CAL_START,
505 MCI_BT_CAL
506};
507
508/* Type of state query */
509enum mci_state_type {
510 MCI_STATE_ENABLE,
511 MCI_STATE_INIT_GPM_OFFSET,
512 MCI_STATE_NEXT_GPM_OFFSET,
513 MCI_STATE_LAST_GPM_OFFSET,
514 MCI_STATE_BT,
515 MCI_STATE_SET_BT_SLEEP,
516 MCI_STATE_SET_BT_AWAKE,
517 MCI_STATE_SET_BT_CAL_START,
518 MCI_STATE_SET_BT_CAL,
519 MCI_STATE_LAST_SCHD_MSG_OFFSET,
520 MCI_STATE_REMOTE_SLEEP,
521 MCI_STATE_CONT_RSSI_POWER,
522 MCI_STATE_CONT_PRIORITY,
523 MCI_STATE_CONT_TXRX,
524 MCI_STATE_RESET_REQ_WAKE,
525 MCI_STATE_SEND_WLAN_COEX_VERSION,
526 MCI_STATE_SET_BT_COEX_VERSION,
527 MCI_STATE_SEND_WLAN_CHANNELS,
528 MCI_STATE_SEND_VERSION_QUERY,
529 MCI_STATE_SEND_STATUS_QUERY,
530 MCI_STATE_NEED_FLUSH_BT_INFO,
531 MCI_STATE_SET_CONCUR_TX_PRI,
532 MCI_STATE_RECOVER_RX,
533 MCI_STATE_NEED_FTP_STOMP,
534 MCI_STATE_NEED_TUNING,
535 MCI_STATE_DEBUG,
536 MCI_STATE_MAX
537};
538
539enum mci_gpm_coex_opcode {
540 MCI_GPM_COEX_VERSION_QUERY,
541 MCI_GPM_COEX_VERSION_RESPONSE,
542 MCI_GPM_COEX_STATUS_QUERY,
543 MCI_GPM_COEX_HALT_BT_GPM,
544 MCI_GPM_COEX_WLAN_CHANNELS,
545 MCI_GPM_COEX_BT_PROFILE_INFO,
546 MCI_GPM_COEX_BT_STATUS_UPDATE,
547 MCI_GPM_COEX_BT_UPDATE_FLAGS
548};
549
550#define MCI_GPM_NOMORE 0
551#define MCI_GPM_MORE 1
552#define MCI_GPM_INVALID 0xffffffff
553
554#define MCI_GPM_RECYCLE(_p_gpm) do { \
555 *(((u32 *)_p_gpm) + MCI_GPM_COEX_W_GPM_PAYLOAD) = \
556 MCI_GPM_RSVD_PATTERN32; \
557} while (0)
558
559#define MCI_GPM_TYPE(_p_gpm) \
560 (*(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) & 0xff)
561
562#define MCI_GPM_OPCODE(_p_gpm) \
563 (*(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_OPCODE) & 0xff)
564
565#define MCI_GPM_SET_CAL_TYPE(_p_gpm, _cal_type) do { \
566 *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) = (_cal_type) & 0xff;\
567} while (0)
568
569#define MCI_GPM_SET_TYPE_OPCODE(_p_gpm, _type, _opcode) do { \
570 *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_TYPE) = (_type) & 0xff; \
571 *(((u8 *)(_p_gpm)) + MCI_GPM_COEX_B_GPM_OPCODE) = (_opcode) & 0xff;\
572} while (0)
573
574#define MCI_GPM_IS_CAL_TYPE(_type) ((_type) <= MCI_GPM_WLAN_CAL_DONE)
575
430struct ath9k_beacon_state { 576struct ath9k_beacon_state {
431 u32 bs_nexttbtt; 577 u32 bs_nexttbtt;
432 u32 bs_nextdtim; 578 u32 bs_nextdtim;