diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/btcoex.h')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/btcoex.h | 64 |
1 files changed, 12 insertions, 52 deletions
diff --git a/drivers/net/wireless/ath/ath9k/btcoex.h b/drivers/net/wireless/ath/ath9k/btcoex.h index 297b027fd3c3..1ba31a73317c 100644 --- a/drivers/net/wireless/ath/ath9k/btcoex.h +++ b/drivers/net/wireless/ath/ath9k/btcoex.h | |||
@@ -17,6 +17,8 @@ | |||
17 | #ifndef BTCOEX_H | 17 | #ifndef BTCOEX_H |
18 | #define BTCOEX_H | 18 | #define BTCOEX_H |
19 | 19 | ||
20 | #include "hw.h" | ||
21 | |||
20 | #define ATH_WLANACTIVE_GPIO 5 | 22 | #define ATH_WLANACTIVE_GPIO 5 |
21 | #define ATH_BTACTIVE_GPIO 6 | 23 | #define ATH_BTACTIVE_GPIO 6 |
22 | #define ATH_BTPRIORITY_GPIO 7 | 24 | #define ATH_BTPRIORITY_GPIO 7 |
@@ -34,67 +36,25 @@ enum ath_btcoex_scheme { | |||
34 | ATH_BTCOEX_CFG_3WIRE, | 36 | ATH_BTCOEX_CFG_3WIRE, |
35 | }; | 37 | }; |
36 | 38 | ||
37 | enum ath_stomp_type { | 39 | struct ath_btcoex_hw { |
38 | ATH_BTCOEX_NO_STOMP, | 40 | enum ath_btcoex_scheme scheme; |
39 | ATH_BTCOEX_STOMP_ALL, | 41 | bool enabled; |
40 | ATH_BTCOEX_STOMP_LOW, | ||
41 | ATH_BTCOEX_STOMP_NONE | ||
42 | }; | ||
43 | |||
44 | enum ath_bt_mode { | ||
45 | ATH_BT_COEX_MODE_LEGACY, /* legacy rx_clear mode */ | ||
46 | ATH_BT_COEX_MODE_UNSLOTTED, /* untimed/unslotted mode */ | ||
47 | ATH_BT_COEX_MODE_SLOTTED, /* slotted mode */ | ||
48 | ATH_BT_COEX_MODE_DISALBED, /* coexistence disabled */ | ||
49 | }; | ||
50 | |||
51 | struct ath_btcoex_config { | ||
52 | u8 bt_time_extend; | ||
53 | bool bt_txstate_extend; | ||
54 | bool bt_txframe_extend; | ||
55 | enum ath_bt_mode bt_mode; /* coexistence mode */ | ||
56 | bool bt_quiet_collision; | ||
57 | bool bt_rxclear_polarity; /* invert rx_clear as WLAN_ACTIVE*/ | ||
58 | u8 bt_priority_time; | ||
59 | u8 bt_first_slot_time; | ||
60 | bool bt_hold_rx_clear; | ||
61 | }; | ||
62 | |||
63 | struct ath_btcoex_info { | ||
64 | enum ath_btcoex_scheme btcoex_scheme; | ||
65 | u8 wlanactive_gpio; | 42 | u8 wlanactive_gpio; |
66 | u8 btactive_gpio; | 43 | u8 btactive_gpio; |
67 | u8 btpriority_gpio; | 44 | u8 btpriority_gpio; |
68 | u8 bt_duty_cycle; /* BT duty cycle in percentage */ | ||
69 | int bt_stomp_type; /* Types of BT stomping */ | ||
70 | u32 bt_coex_mode; /* Register setting for AR_BT_COEX_MODE */ | 45 | u32 bt_coex_mode; /* Register setting for AR_BT_COEX_MODE */ |
71 | u32 bt_coex_weights; /* Register setting for AR_BT_COEX_WEIGHT */ | 46 | u32 bt_coex_weights; /* Register setting for AR_BT_COEX_WEIGHT */ |
72 | u32 bt_coex_mode2; /* Register setting for AR_BT_COEX_MODE2 */ | 47 | u32 bt_coex_mode2; /* Register setting for AR_BT_COEX_MODE2 */ |
73 | u32 btcoex_no_stomp; /* in usec */ | ||
74 | u32 btcoex_period; /* in usec */ | ||
75 | u32 bt_priority_cnt; | ||
76 | unsigned long bt_priority_time; | ||
77 | bool hw_timer_enabled; | ||
78 | spinlock_t btcoex_lock; | ||
79 | struct timer_list period_timer; /* Timer for BT period */ | ||
80 | struct ath_gen_timer *no_stomp_timer; /*Timer for no BT stomping*/ | ||
81 | }; | 48 | }; |
82 | 49 | ||
83 | bool ath_btcoex_supported(u16 subsysid); | 50 | bool ath9k_hw_btcoex_supported(struct ath_hw *ah); |
84 | int ath9k_hw_btcoex_init(struct ath_hw *ah); | 51 | void ath9k_hw_btcoex_init_2wire(struct ath_hw *ah); |
52 | void ath9k_hw_btcoex_init_3wire(struct ath_hw *ah); | ||
53 | void ath9k_hw_init_btcoex_hw(struct ath_hw *ah, int qnum); | ||
54 | void ath9k_hw_btcoex_set_weight(struct ath_hw *ah, | ||
55 | u32 bt_weight, | ||
56 | u32 wlan_weight); | ||
85 | void ath9k_hw_btcoex_enable(struct ath_hw *ah); | 57 | void ath9k_hw_btcoex_enable(struct ath_hw *ah); |
86 | void ath9k_hw_btcoex_disable(struct ath_hw *ah); | 58 | void ath9k_hw_btcoex_disable(struct ath_hw *ah); |
87 | void ath_btcoex_timer_resume(struct ath_softc *sc, | ||
88 | struct ath_btcoex_info *btinfo); | ||
89 | void ath_btcoex_timer_pause(struct ath_softc *sc, | ||
90 | struct ath_btcoex_info *btinfo); | ||
91 | |||
92 | static inline void ath_btcoex_set_weight(struct ath_btcoex_info *btcoex_info, | ||
93 | u32 bt_weight, | ||
94 | u32 wlan_weight) | ||
95 | { | ||
96 | btcoex_info->bt_coex_weights = SM(bt_weight, AR_BTCOEX_BT_WGHT) | | ||
97 | SM(wlan_weight, AR_BTCOEX_WL_WGHT); | ||
98 | } | ||
99 | 59 | ||
100 | #endif | 60 | #endif |