]>
Commit | Line | Data |
---|---|---|
17d50d1d VT |
1 | /* |
2 | * Copyright (c) 2009 Atheros Communications Inc. | |
3 | * | |
4 | * Permission to use, copy, modify, and/or distribute this software for any | |
5 | * purpose with or without fee is hereby granted, provided that the above | |
6 | * copyright notice and this permission notice appear in all copies. | |
7 | * | |
8 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
9 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
10 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
11 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
12 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
13 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
14 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
15 | */ | |
16 | ||
17 | #ifndef BTCOEX_H | |
18 | #define BTCOEX_H | |
19 | ||
af03abec LR |
20 | #include "hw.h" |
21 | ||
f14462c6 VT |
22 | #define ATH_WLANACTIVE_GPIO 5 |
23 | #define ATH_BTACTIVE_GPIO 6 | |
8c8f9ba7 | 24 | #define ATH_BTPRIORITY_GPIO 7 |
f14462c6 | 25 | |
1773912b VT |
26 | #define ATH_BTCOEX_DEF_BT_PERIOD 45 |
27 | #define ATH_BTCOEX_DEF_DUTY_CYCLE 55 | |
58da1318 | 28 | #define ATH_BTCOEX_BTSCAN_DUTY_CYCLE 90 |
1773912b VT |
29 | #define ATH_BTCOEX_BMISS_THRESH 50 |
30 | ||
31 | #define ATH_BT_PRIORITY_TIME_THRESHOLD 1000 /* ms */ | |
32 | #define ATH_BT_CNT_THRESHOLD 3 | |
58da1318 | 33 | #define ATH_BT_CNT_SCAN_THRESHOLD 15 |
1773912b | 34 | |
22f25d0d VT |
35 | enum ath_btcoex_scheme { |
36 | ATH_BTCOEX_CFG_NONE, | |
37 | ATH_BTCOEX_CFG_2WIRE, | |
38 | ATH_BTCOEX_CFG_3WIRE, | |
39 | }; | |
40 | ||
766ec4a9 | 41 | struct ath_btcoex_hw { |
46289e1e | 42 | enum ath_btcoex_scheme scheme; |
8c1b3954 | 43 | bool enabled; |
f14462c6 VT |
44 | u8 wlanactive_gpio; |
45 | u8 btactive_gpio; | |
1773912b | 46 | u8 btpriority_gpio; |
1773912b VT |
47 | u32 bt_coex_mode; /* Register setting for AR_BT_COEX_MODE */ |
48 | u32 bt_coex_weights; /* Register setting for AR_BT_COEX_WEIGHT */ | |
49 | u32 bt_coex_mode2; /* Register setting for AR_BT_COEX_MODE2 */ | |
f14462c6 VT |
50 | }; |
51 | ||
a36cfbca | 52 | bool ath9k_hw_btcoex_supported(struct ath_hw *ah); |
75d7839f LR |
53 | void ath9k_hw_btcoex_init_2wire(struct ath_hw *ah); |
54 | void ath9k_hw_btcoex_init_3wire(struct ath_hw *ah); | |
766ec4a9 | 55 | void ath9k_hw_init_btcoex_hw(struct ath_hw *ah, int qnum); |
5e197292 LR |
56 | void ath9k_hw_btcoex_set_weight(struct ath_hw *ah, |
57 | u32 bt_weight, | |
58 | u32 wlan_weight); | |
17d50d1d VT |
59 | void ath9k_hw_btcoex_enable(struct ath_hw *ah); |
60 | void ath9k_hw_btcoex_disable(struct ath_hw *ah); | |
2e20250a | 61 | |
17d50d1d | 62 | #endif |