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