]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/net/wireless/rtlwifi/rtl8723ae/hal_btc.h
Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[karo-tx-linux.git] / drivers / net / wireless / rtlwifi / rtl8723ae / hal_btc.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2009-2012  Realtek Corporation.
4  *
5  * This program is free software; you can redistribute it and/or modify it
6  * under the terms of version 2 of the GNU General Public License as
7  * published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
12  * more details.
13  *
14  * The full GNU General Public License is included in this distribution in the
15  * file called LICENSE.
16  *
17  * Contact Information:
18  * wlanfae <wlanfae@realtek.com>
19  * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park,
20  * Hsinchu 300, Taiwan.
21  * Larry Finger <Larry.Finger@lwfinger.net>
22  *
23  *****************************************************************************/
24
25 #ifndef __RTL8723E_HAL_BTC_H__
26 #define __RTL8723E_HAL_BTC_H__
27
28 #include "../wifi.h"
29 #include "btc.h"
30 #include "hal_bt_coexist.h"
31
32 #define BT_TXRX_CNT_THRES_1                     1200
33 #define BT_TXRX_CNT_THRES_2                     1400
34 #define BT_TXRX_CNT_THRES_3                     3000
35 /* < 1200 */
36 #define BT_TXRX_CNT_LEVEL_0                     0
37 /* >= 1200 && < 1400 */
38 #define BT_TXRX_CNT_LEVEL_1                     1
39 /* >= 1400 */
40 #define BT_TXRX_CNT_LEVEL_2                     2
41 #define BT_TXRX_CNT_LEVEL_3                     3
42
43 #define BT_COEX_DISABLE                 0
44 #define BT_Q_PKT_OFF                    0
45 #define BT_Q_PKT_ON                     1
46
47 #define BT_TX_PWR_OFF                   0
48 #define BT_TX_PWR_ON                    1
49
50 /* TDMA mode definition */
51 #define TDMA_2ANT                       0
52 #define TDMA_1ANT                       1
53 #define TDMA_NAV_OFF                    0
54 #define TDMA_NAV_ON                     1
55 #define TDMA_DAC_SWING_OFF              0
56 #define TDMA_DAC_SWING_ON               1
57
58 /* PTA mode related definition */
59 #define BT_PTA_MODE_OFF         0
60 #define BT_PTA_MODE_ON          1
61
62 /* Penalty Tx Rate Adaptive */
63 #define BT_TX_RATE_ADAPTIVE_NORMAL      0
64 #define BT_TX_RATE_ADAPTIVE_LOW_PENALTY 1
65
66 /* RF Corner */
67 #define BT_RF_RX_LPF_CORNER_RESUME      0
68 #define BT_RF_RX_LPF_CORNER_SHRINK      1
69
70 #define C2H_EVT_HOST_CLOSE              0x00
71 #define C2H_EVT_FW_CLOSE                0xFF
72
73 enum bt_traffic_mode {
74         BT_MOTOR_EXT_BE = 0x00,
75         BT_MOTOR_EXT_GUL = 0x01,
76         BT_MOTOR_EXT_GUB = 0x02,
77         BT_MOTOR_EXT_GULB = 0x03
78 };
79
80 enum bt_traffic_mode_profile {
81         BT_PROFILE_NONE,
82         BT_PROFILE_A2DP,
83         BT_PROFILE_PAN,
84         BT_PROFILE_HID,
85         BT_PROFILE_SCO
86 };
87
88 /*
89 enum hci_ext_bt_operation {
90         HCI_BT_OP_NONE = 0x0,
91         HCI_BT_OP_INQUIRE_START = 0x1,
92         HCI_BT_OP_INQUIRE_FINISH = 0x2,
93         HCI_BT_OP_PAGING_START = 0x3,
94         HCI_BT_OP_PAGING_SUCCESS = 0x4,
95         HCI_BT_OP_PAGING_UNSUCCESS = 0x5,
96         HCI_BT_OP_PAIRING_START = 0x6,
97         HCI_BT_OP_PAIRING_FINISH = 0x7,
98         HCI_BT_OP_BT_DEV_ENABLE = 0x8,
99         HCI_BT_OP_BT_DEV_DISABLE = 0x9,
100         HCI_BT_OP_MAX,
101 };
102 */
103
104 enum bt_spec {
105         BT_SPEC_1_0_b = 0x00,
106         BT_SPEC_1_1 = 0x01,
107         BT_SPEC_1_2 = 0x02,
108         BT_SPEC_2_0_EDR = 0x03,
109         BT_SPEC_2_1_EDR = 0x04,
110         BT_SPEC_3_0_HS = 0x05,
111         BT_SPEC_4_0 = 0x06
112 };
113
114 struct c2h_evt_hdr {
115         u8 cmd_id;
116         u8 cmd_len;
117         u8 cmd_seq;
118 };
119
120 enum bt_state {
121         BT_INFO_STATE_DISABLED = 0,
122         BT_INFO_STATE_NO_CONNECTION = 1,
123         BT_INFO_STATE_CONNECT_IDLE = 2,
124         BT_INFO_STATE_INQ_OR_PAG = 3,
125         BT_INFO_STATE_ACL_ONLY_BUSY = 4,
126         BT_INFO_STATE_SCO_ONLY_BUSY = 5,
127         BT_INFO_STATE_ACL_SCO_BUSY = 6,
128         BT_INFO_STATE_HID_BUSY = 7,
129         BT_INFO_STATE_HID_SCO_BUSY = 8,
130         BT_INFO_STATE_MAX = 7
131 };
132
133 enum rtl8723e_c2h_evt {
134         C2H_DBG = 0,
135         C2H_TSF = 1,
136         C2H_AP_RPT_RSP = 2,
137         /* The FW notify the report of the specific tx packet. */
138         C2H_CCX_TX_RPT = 3,
139         C2H_BT_RSSI = 4,
140         C2H_BT_OP_MODE = 5,
141         C2H_HW_INFO_EXCH = 10,
142         C2H_C2H_H2C_TEST = 11,
143         BT_INFO = 12,
144         MAX_C2HEVENT
145 };
146
147 void rtl8723e_dm_bt_fw_coex_all_off_8723a(struct ieee80211_hw *hw);
148 void rtl8723e_dm_bt_sw_coex_all_off_8723a(struct ieee80211_hw *hw);
149 void rtl8723e_dm_bt_hw_coex_all_off_8723a(struct ieee80211_hw *hw);
150 void rtl8723e_dm_bt_coexist_8723(struct ieee80211_hw *hw);
151 void rtl8723e_dm_bt_set_bt_dm(struct ieee80211_hw *hw,
152                               struct btdm_8723 *p_btdm);
153 void rtl_8723e_c2h_command_handle(struct ieee80211_hw *hw);
154 void rtl_8723e_bt_wifi_media_status_notify(struct ieee80211_hw *hw,
155                                         bool mstatus);
156 void rtl8723e_dm_bt_turn_off_bt_coexist_before_enter_lps(
157                                 struct ieee80211_hw *hw);
158
159 #endif