ath9k_hw: add AR9271 single chip name mapping
[deliverable/linux.git] / drivers / net / wireless / ath / ath9k / btcoex.h
index 297b027fd3c38b17f61e3ef3c8557664b99676fe..1ba31a73317c9f3d3e3d32b8406a407c14ea0c47 100644 (file)
@@ -17,6 +17,8 @@
 #ifndef BTCOEX_H
 #define BTCOEX_H
 
+#include "hw.h"
+
 #define ATH_WLANACTIVE_GPIO    5
 #define ATH_BTACTIVE_GPIO      6
 #define ATH_BTPRIORITY_GPIO    7
@@ -34,67 +36,25 @@ enum ath_btcoex_scheme {
        ATH_BTCOEX_CFG_3WIRE,
 };
 
-enum ath_stomp_type {
-       ATH_BTCOEX_NO_STOMP,
-       ATH_BTCOEX_STOMP_ALL,
-       ATH_BTCOEX_STOMP_LOW,
-       ATH_BTCOEX_STOMP_NONE
-};
-
-enum ath_bt_mode {
-       ATH_BT_COEX_MODE_LEGACY,        /* legacy rx_clear mode */
-       ATH_BT_COEX_MODE_UNSLOTTED,     /* untimed/unslotted mode */
-       ATH_BT_COEX_MODE_SLOTTED,       /* slotted mode */
-       ATH_BT_COEX_MODE_DISALBED,      /* coexistence disabled */
-};
-
-struct ath_btcoex_config {
-       u8 bt_time_extend;
-       bool bt_txstate_extend;
-       bool bt_txframe_extend;
-       enum ath_bt_mode bt_mode; /* coexistence mode */
-       bool bt_quiet_collision;
-       bool bt_rxclear_polarity; /* invert rx_clear as WLAN_ACTIVE*/
-       u8 bt_priority_time;
-       u8 bt_first_slot_time;
-       bool bt_hold_rx_clear;
-};
-
-struct ath_btcoex_info {
-       enum ath_btcoex_scheme btcoex_scheme;
+struct ath_btcoex_hw {
+       enum ath_btcoex_scheme scheme;
+       bool enabled;
        u8 wlanactive_gpio;
        u8 btactive_gpio;
        u8 btpriority_gpio;
-       u8 bt_duty_cycle;       /* BT duty cycle in percentage */
-       int bt_stomp_type;      /* Types of BT stomping */
        u32 bt_coex_mode;       /* Register setting for AR_BT_COEX_MODE */
        u32 bt_coex_weights;    /* Register setting for AR_BT_COEX_WEIGHT */
        u32 bt_coex_mode2;      /* Register setting for AR_BT_COEX_MODE2 */
-       u32 btcoex_no_stomp;   /* in usec */
-       u32 btcoex_period;      /* in usec */
-       u32 bt_priority_cnt;
-       unsigned long bt_priority_time;
-       bool hw_timer_enabled;
-       spinlock_t btcoex_lock;
-       struct timer_list period_timer;      /* Timer for BT period */
-       struct ath_gen_timer *no_stomp_timer; /*Timer for no BT stomping*/
 };
 
-bool ath_btcoex_supported(u16 subsysid);
-int ath9k_hw_btcoex_init(struct ath_hw *ah);
+bool ath9k_hw_btcoex_supported(struct ath_hw *ah);
+void ath9k_hw_btcoex_init_2wire(struct ath_hw *ah);
+void ath9k_hw_btcoex_init_3wire(struct ath_hw *ah);
+void ath9k_hw_init_btcoex_hw(struct ath_hw *ah, int qnum);
+void ath9k_hw_btcoex_set_weight(struct ath_hw *ah,
+                               u32 bt_weight,
+                               u32 wlan_weight);
 void ath9k_hw_btcoex_enable(struct ath_hw *ah);
 void ath9k_hw_btcoex_disable(struct ath_hw *ah);
-void ath_btcoex_timer_resume(struct ath_softc *sc,
-                            struct ath_btcoex_info *btinfo);
-void ath_btcoex_timer_pause(struct ath_softc *sc,
-                           struct ath_btcoex_info *btinfo);
-
-static inline void ath_btcoex_set_weight(struct ath_btcoex_info *btcoex_info,
-                                        u32 bt_weight,
-                                        u32 wlan_weight)
-{
-       btcoex_info->bt_coex_weights = SM(bt_weight, AR_BTCOEX_BT_WGHT) |
-                                      SM(wlan_weight, AR_BTCOEX_WL_WGHT);
-}
 
 #endif
This page took 0.027234 seconds and 5 git commands to generate.