net: wireless: rockchip_wlan: add rtl8723cs support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723cs / include / rtw_bt_mp.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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  * You should have received a copy of the GNU General Public License along with
15  * this program; if not, write to the Free Software Foundation, Inc.,
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17  *
18  *
19  ******************************************************************************/
20
21 #ifndef __RTW_BT_MP_H
22 #define __RTW_BT_MP_H
23
24
25 #if (MP_DRIVER == 1)
26
27 #pragma pack(1)
28
29 /* definition for BT_UP_OP_BT_READY */
30 #define MP_BT_NOT_READY                                         0
31 #define MP_BT_READY                                                     1
32
33 /* definition for BT_UP_OP_BT_SET_MODE */
34 typedef enum _MP_BT_MODE {
35         MP_BT_MODE_RF_TXRX_TEST_MODE                                                    = 0,
36         MP_BT_MODE_BT20_DUT_TEST_MODE                                                   = 1,
37         MP_BT_MODE_BT40_DIRECT_TEST_MODE                                                = 2,
38         MP_BT_MODE_CONNECT_TEST_MODE                                                    = 3,
39         MP_BT_MODE_MAX
40 } MP_BT_MODE, *PMP_BT_MODE;
41
42
43 /* definition for BT_UP_OP_BT_SET_TX_RX_PARAMETER */
44 typedef struct _BT_TXRX_PARAMETERS {
45         u1Byte          txrxChannel;
46         u4Byte          txrxTxPktCnt;
47         u1Byte          txrxTxPktInterval;
48         u1Byte          txrxPayloadType;
49         u1Byte          txrxPktType;
50         u2Byte          txrxPayloadLen;
51         u4Byte          txrxPktHeader;
52         u1Byte          txrxWhitenCoeff;
53         u1Byte          txrxBdaddr[6];
54         u1Byte          txrxTxGainIndex;
55 } BT_TXRX_PARAMETERS, *PBT_TXRX_PARAMETERS;
56
57 /* txrxPktType */
58 typedef enum _MP_BT_PKT_TYPE {
59         MP_BT_PKT_DH1                                                   = 0,
60         MP_BT_PKT_DH3                                                   = 1,
61         MP_BT_PKT_DH5                                                   = 2,
62         MP_BT_PKT_2DH1                                                  = 3,
63         MP_BT_PKT_2DH3                                                  = 4,
64         MP_BT_PKT_2DH5                                                  = 5,
65         MP_BT_PKT_3DH1                                                  = 6,
66         MP_BT_PKT_3DH3                                                  = 7,
67         MP_BT_PKT_3DH5                                                  = 8,
68         MP_BT_PKT_LE                                                    = 9,
69         MP_BT_PKT_MAX
70 } MP_BT_PKT_TYPE, *PMP_BT_PKT_TYPE;
71 /* txrxPayloadType */
72 typedef enum _MP_BT_PAYLOAD_TYPE {
73         MP_BT_PAYLOAD_01010101                                  = 0,
74         MP_BT_PAYLOAD_ALL_1                                             = 1,
75         MP_BT_PAYLOAD_ALL_0                                             = 2,
76         MP_BT_PAYLOAD_11110000                                  = 3,
77         MP_BT_PAYLOAD_PRBS9                                             = 4,
78         MP_BT_PAYLOAD_MAX                                               = 8,
79 } MP_BT_PAYLOAD_TYPE, *PMP_BT_PAYLOAD_TYPE;
80
81
82 /* definition for BT_UP_OP_BT_TEST_CTRL */
83 typedef enum _MP_BT_TEST_CTRL {
84         MP_BT_TEST_STOP_ALL_TESTS                                               = 0,
85         MP_BT_TEST_START_RX_TEST                                                = 1,
86         MP_BT_TEST_START_PACKET_TX_TEST                                 = 2,
87         MP_BT_TEST_START_CONTINUOUS_TX_TEST                     = 3,
88         MP_BT_TEST_START_INQUIRY_SCAN_TEST                              = 4,
89         MP_BT_TEST_START_PAGE_SCAN_TEST                                 = 5,
90         MP_BT_TEST_START_INQUIRY_PAGE_SCAN_TEST                 = 6,
91         MP_BT_TEST_START_LEGACY_CONNECT_TEST                    = 7,
92         MP_BT_TEST_START_LE_CONNECT_TEST_INITIATOR              = 8,
93         MP_BT_TEST_START_LE_CONNECT_TEST_ADVERTISER     = 9,
94         MP_BT_TEST_MAX
95 } MP_BT_TEST_CTRL, *PMP_BT_TEST_CTRL;
96
97
98 typedef enum _RTL_EXT_C2H_EVT {
99         EXT_C2H_WIFI_FW_ACTIVE_RSP = 0,
100         EXT_C2H_TRIG_BY_BT_FW = 1,
101         MAX_EXT_C2HEVENT
102 } RTL_EXT_C2H_EVT;
103
104 /* OP codes definition between the user layer and driver */
105 typedef enum _BT_CTRL_OPCODE_UPPER {
106         BT_UP_OP_BT_READY                                                                               = 0x00,
107         BT_UP_OP_BT_SET_MODE                                                                    = 0x01,
108         BT_UP_OP_BT_SET_TX_RX_PARAMETER                                         = 0x02,
109         BT_UP_OP_BT_SET_GENERAL                                                         = 0x03,
110         BT_UP_OP_BT_GET_GENERAL                                                         = 0x04,
111         BT_UP_OP_BT_TEST_CTRL                                                                   = 0x05,
112         BT_UP_OP_TEST_BT                                                                                = 0x06,
113         BT_UP_OP_MAX
114 } BT_CTRL_OPCODE_UPPER, *PBT_CTRL_OPCODE_UPPER;
115
116
117 typedef enum _BT_SET_GENERAL {
118         BT_GSET_REG                                                                                     = 0x00,
119         BT_GSET_RESET                                                                                   = 0x01,
120         BT_GSET_TARGET_BD_ADDR                                                                  = 0x02,
121         BT_GSET_TX_PWR_FINETUNE                                                         = 0x03,
122         BT_SET_TRACKING_INTERVAL                                                                = 0x04,
123         BT_SET_THERMAL_METER                                                                    = 0x05,
124         BT_ENABLE_CFO_TRACKING                                                                  = 0x06,
125         BT_GSET_UPDATE_BT_PATCH                                                         = 0x07,
126         BT_GSET_MAX
127 } BT_SET_GENERAL, *PBT_SET_GENERAL;
128
129 typedef enum _BT_GET_GENERAL {
130         BT_GGET_REG                                                                                     = 0x00,
131         BT_GGET_STATUS                                                                                  = 0x01,
132         BT_GGET_REPORT                                                                                  = 0x02,
133         BT_GGET_AFH_MAP                                                                         = 0x03,
134         BT_GGET_AFH_STATUS                                                                              = 0x04,
135         BT_GGET_MAX
136 } BT_GET_GENERAL, *PBT_GET_GENERAL;
137
138 /* definition for BT_UP_OP_BT_SET_GENERAL */
139 typedef enum _BT_REG_TYPE {
140         BT_REG_RF                                                               = 0,
141         BT_REG_MODEM                                                    = 1,
142         BT_REG_BLUEWIZE                                         = 2,
143         BT_REG_VENDOR                                                   = 3,
144         BT_REG_LE                                                               = 4,
145         BT_REG_MAX
146 } BT_REG_TYPE, *PBT_REG_TYPE;
147
148 /* definition for BT_LO_OP_GET_AFH_MAP */
149 typedef enum _BT_AFH_MAP_TYPE {
150         BT_AFH_MAP_RESULT                                               = 0,
151         BT_AFH_MAP_WIFI_PSD_ONLY                                = 1,
152         BT_AFH_MAP_WIFI_CH_BW_ONLY                              = 2,
153         BT_AFH_MAP_BT_PSD_ONLY                                  = 3,
154         BT_AFH_MAP_HOST_CLASSIFICATION_ONLY     = 4,
155         BT_AFH_MAP_MAX
156 } BT_AFH_MAP_TYPE, *PBT_AFH_MAP_TYPE;
157
158 /* definition for BT_UP_OP_BT_GET_GENERAL */
159 typedef enum _BT_REPORT_TYPE {
160         BT_REPORT_RX_PACKET_CNT                         = 0,
161         BT_REPORT_RX_ERROR_BITS                         = 1,
162         BT_REPORT_RSSI                                                  = 2,
163         BT_REPORT_CFO_HDR_QUALITY                               = 3,
164         BT_REPORT_CONNECT_TARGET_BD_ADDR                = 4,
165         BT_REPORT_MAX
166 } BT_REPORT_TYPE, *PBT_REPORT_TYPE;
167
168 VOID
169 MPTBT_Test(
170         IN      PADAPTER        Adapter,
171         IN      u1Byte          opCode,
172         IN      u1Byte          byte1,
173         IN      u1Byte          byte2,
174         IN      u1Byte          byte3
175 );
176
177 NDIS_STATUS
178 MPTBT_SendOidBT(
179         IN      PADAPTER                pAdapter,
180         IN      PVOID                   InformationBuffer,
181         IN      ULONG                   InformationBufferLength,
182         OUT     PULONG                  BytesRead,
183         OUT     PULONG                  BytesNeeded
184 );
185
186 VOID
187 MPTBT_FwC2hBtMpCtrl(
188         PADAPTER        Adapter,
189         pu1Byte tmpBuf,
190         u1Byte          length
191 );
192
193 void MPh2c_timeout_handle(void *FunctionContext);
194
195 VOID mptbt_BtControlProcess(
196         PADAPTER        Adapter,
197         PVOID           pInBuf
198 );
199
200 #define BT_H2C_MAX_RETRY                                                                1
201 #define BT_MAX_C2H_LEN                                                          20
202
203 typedef struct _BT_REQ_CMD {
204         UCHAR       opCodeVer;
205         UCHAR       OpCode;
206         USHORT      paraLength;
207         UCHAR       pParamStart[100];
208 } BT_REQ_CMD, *PBT_REQ_CMD;
209
210 typedef struct _BT_RSP_CMD {
211         USHORT      status;
212         USHORT      paraLength;
213         UCHAR       pParamStart[100];
214 } BT_RSP_CMD, *PBT_RSP_CMD;
215
216
217 typedef struct _BT_H2C {
218         u1Byte  opCodeVer:4;
219         u1Byte  reqNum:4;
220         u1Byte  opCode;
221         u1Byte  buf[100];
222 } BT_H2C, *PBT_H2C;
223
224
225
226 typedef struct _BT_EXT_C2H {
227         u1Byte  extendId;
228         u1Byte  statusCode:4;
229         u1Byte  retLen:4;
230         u1Byte  opCodeVer:4;
231         u1Byte  reqNum:4;
232         u1Byte  buf[100];
233 } BT_EXT_C2H, *PBT_EXT_C2H;
234
235
236 typedef enum _BT_OPCODE_STATUS {
237         BT_OP_STATUS_SUCCESS                                                                    = 0x00, /* Success */
238         BT_OP_STATUS_VERSION_MISMATCH                                                   = 0x01,
239         BT_OP_STATUS_UNKNOWN_OPCODE                                                             = 0x02,
240         BT_OP_STATUS_ERROR_PARAMETER                                                    = 0x03,
241         BT_OP_STATUS_MAX
242 } BT_OPCODE_STATUS, *PBT_OPCODE_STATUS;
243
244
245
246 /* OP codes definition between driver and bt fw */
247 typedef enum _BT_CTRL_OPCODE_LOWER {
248         BT_LO_OP_GET_BT_VERSION                                                                 = 0x00,
249         BT_LO_OP_RESET                                                                                          = 0x01,
250         BT_LO_OP_TEST_CTRL                                                                                      = 0x02,
251         BT_LO_OP_SET_BT_MODE                                                                            = 0x03,
252         BT_LO_OP_SET_CHNL_TX_GAIN                                                                       = 0x04,
253         BT_LO_OP_SET_PKT_TYPE_LEN                                                                       = 0x05,
254         BT_LO_OP_SET_PKT_CNT_L_PL_TYPE                                                          = 0x06,
255         BT_LO_OP_SET_PKT_CNT_H_PKT_INTV                                                 = 0x07,
256         BT_LO_OP_SET_PKT_HEADER                                                                 = 0x08,
257         BT_LO_OP_SET_WHITENCOEFF                                                                        = 0x09,
258         BT_LO_OP_SET_BD_ADDR_L                                                                          = 0x0a,
259         BT_LO_OP_SET_BD_ADDR_H                                                                          = 0x0b,
260         BT_LO_OP_WRITE_REG_ADDR                                                                 = 0x0c,
261         BT_LO_OP_WRITE_REG_VALUE                                                                        = 0x0d,
262         BT_LO_OP_GET_BT_STATUS                                                                          = 0x0e,
263         BT_LO_OP_GET_BD_ADDR_L                                                                          = 0x0f,
264         BT_LO_OP_GET_BD_ADDR_H                                                                          = 0x10,
265         BT_LO_OP_READ_REG                                                                                       = 0x11,
266         BT_LO_OP_SET_TARGET_BD_ADDR_L                                                           = 0x12,
267         BT_LO_OP_SET_TARGET_BD_ADDR_H                                                           = 0x13,
268         BT_LO_OP_SET_TX_POWER_CALIBRATION                                                       = 0x14,
269         BT_LO_OP_GET_RX_PKT_CNT_L                                                                       = 0x15,
270         BT_LO_OP_GET_RX_PKT_CNT_H                                                                       = 0x16,
271         BT_LO_OP_GET_RX_ERROR_BITS_L                                                            = 0x17,
272         BT_LO_OP_GET_RX_ERROR_BITS_H                                                            = 0x18,
273         BT_LO_OP_GET_RSSI                                                                                       = 0x19,
274         BT_LO_OP_GET_CFO_HDR_QUALITY_L                                                          = 0x1a,
275         BT_LO_OP_GET_CFO_HDR_QUALITY_H                                                          = 0x1b,
276         BT_LO_OP_GET_TARGET_BD_ADDR_L                                                           = 0x1c,
277         BT_LO_OP_GET_TARGET_BD_ADDR_H                                                           = 0x1d,
278         BT_LO_OP_GET_AFH_MAP_L                                                                          = 0x1e,
279         BT_LO_OP_GET_AFH_MAP_M                                                                          = 0x1f,
280         BT_LO_OP_GET_AFH_MAP_H                                                                          = 0x20,
281         BT_LO_OP_GET_AFH_STATUS                                                                 = 0x21,
282         BT_LO_OP_SET_TRACKING_INTERVAL                                                          = 0x22,
283         BT_LO_OP_SET_THERMAL_METER                                                                      = 0x23,
284         BT_LO_OP_ENABLE_CFO_TRACKING                                                            = 0x24,
285         BT_LO_OP_MAX
286 } BT_CTRL_OPCODE_LOWER, *PBT_CTRL_OPCODE_LOWER;
287
288
289
290
291 #endif  /* #if(MP_DRIVER == 1) */
292
293 #endif /*  #ifndef __INC_MPT_BT_H */