1 /******************************************************************************
\r
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
\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
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
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
19 ******************************************************************************/
\r
21 #ifndef __RTW_BT_MP_H
\r
22 #define __RTW_BT_MP_H
\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
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
40 }MP_BT_MODE,*PMP_BT_MODE;
\r
43 // definition for BT_UP_OP_BT_SET_TX_RX_PARAMETER
\r
44 typedef struct _BT_TXRX_PARAMETERS{
\r
46 u4Byte txrxTxPktCnt;
\r
47 u1Byte txrxTxPktInterval;
\r
48 u1Byte txrxPayloadType;
\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
58 typedef enum _MP_BT_PKT_TYPE{
\r
70 }MP_BT_PKT_TYPE,*PMP_BT_PKT_TYPE;
\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
79 }MP_BT_PAYLOAD_TYPE,*PMP_BT_PAYLOAD_TYPE;
\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
95 }MP_BT_TEST_CTRL,*PMP_BT_TEST_CTRL;
\r
98 typedef enum _RTL_EXT_C2H_EVT
\r
100 EXT_C2H_WIFI_FW_ACTIVE_RSP = 0,
\r
101 EXT_C2H_TRIG_BY_BT_FW = 1,
\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
127 }BT_CTRL_STATUS,*PBT_CTRL_STATUS;
\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
139 }BT_CTRL_OPCODE_UPPER,*PBT_CTRL_OPCODE_UPPER;
\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
152 }BT_SET_GENERAL,*PBT_SET_GENERAL;
\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
161 }BT_GET_GENERAL,*PBT_GET_GENERAL;
\r
163 // definition for BT_UP_OP_BT_SET_GENERAL
\r
164 typedef enum _BT_REG_TYPE{
\r
167 BT_REG_BLUEWIZE = 2,
\r
171 }BT_REG_TYPE,*PBT_REG_TYPE;
\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
181 }BT_AFH_MAP_TYPE,*PBT_AFH_MAP_TYPE;
\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
191 }BT_REPORT_TYPE,*PBT_REPORT_TYPE;
\r
195 IN PADAPTER Adapter,
\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
212 MPTBT_FwC2hBtMpCtrl(
\r
218 void MPh2c_timeout_handle(void *FunctionContext);
\r
220 VOID mptbt_BtControlProcess(
\r
225 #define BT_H2C_MAX_RETRY 1
\r
226 #define BT_MAX_C2H_LEN 20
\r
228 typedef struct _BT_REQ_CMD{
\r
232 UCHAR pParamStart[100];
\r
233 } BT_REQ_CMD, *PBT_REQ_CMD;
\r
235 typedef struct _BT_RSP_CMD{
\r
238 UCHAR pParamStart[100];
\r
239 } BT_RSP_CMD, *PBT_RSP_CMD;
\r
242 typedef struct _BT_H2C{
\r
243 u1Byte opCodeVer:4;
\r
251 typedef struct _BT_EXT_C2H{
\r
253 u1Byte statusCode:4;
\r
255 u1Byte opCodeVer:4;
\r
258 }BT_EXT_C2H, *PBT_EXT_C2H;
\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
267 }BT_OPCODE_STATUS,*PBT_OPCODE_STATUS;
\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
311 }BT_CTRL_OPCODE_LOWER,*PBT_CTRL_OPCODE_LOWER;
\r
316 #endif /* #if(MP_DRIVER == 1) */
\r
318 #endif // #ifndef __INC_MPT_BT_H
\r