OSDN Git Service

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