1 /******************************************************************************
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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.
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
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
19 ******************************************************************************/
29 /* definition for BT_UP_OP_BT_READY */
30 #define MP_BT_NOT_READY 0
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,
40 } MP_BT_MODE, *PMP_BT_MODE;
43 /* definition for BT_UP_OP_BT_SET_TX_RX_PARAMETER */
44 typedef struct _BT_TXRX_PARAMETERS {
47 u1Byte txrxTxPktInterval;
48 u1Byte txrxPayloadType;
50 u2Byte txrxPayloadLen;
52 u1Byte txrxWhitenCoeff;
54 u1Byte txrxTxGainIndex;
55 } BT_TXRX_PARAMETERS, *PBT_TXRX_PARAMETERS;
58 typedef enum _MP_BT_PKT_TYPE {
70 } MP_BT_PKT_TYPE, *PMP_BT_PKT_TYPE;
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;
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,
95 } MP_BT_TEST_CTRL, *PMP_BT_TEST_CTRL;
98 typedef enum _RTL_EXT_C2H_EVT {
99 EXT_C2H_WIFI_FW_ACTIVE_RSP = 0,
100 EXT_C2H_TRIG_BY_BT_FW = 1,
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,
114 } BT_CTRL_OPCODE_UPPER, *PBT_CTRL_OPCODE_UPPER;
117 typedef enum _BT_SET_GENERAL {
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,
127 } BT_SET_GENERAL, *PBT_SET_GENERAL;
129 typedef enum _BT_GET_GENERAL {
131 BT_GGET_STATUS = 0x01,
132 BT_GGET_REPORT = 0x02,
133 BT_GGET_AFH_MAP = 0x03,
134 BT_GGET_AFH_STATUS = 0x04,
136 } BT_GET_GENERAL, *PBT_GET_GENERAL;
138 /* definition for BT_UP_OP_BT_SET_GENERAL */
139 typedef enum _BT_REG_TYPE {
146 } BT_REG_TYPE, *PBT_REG_TYPE;
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,
156 } BT_AFH_MAP_TYPE, *PBT_AFH_MAP_TYPE;
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,
163 BT_REPORT_CFO_HDR_QUALITY = 3,
164 BT_REPORT_CONNECT_TARGET_BD_ADDR = 4,
166 } BT_REPORT_TYPE, *PBT_REPORT_TYPE;
179 IN PADAPTER pAdapter,
180 IN PVOID InformationBuffer,
181 IN ULONG InformationBufferLength,
182 OUT PULONG BytesRead,
183 OUT PULONG BytesNeeded
193 void MPh2c_timeout_handle(void *FunctionContext);
195 VOID mptbt_BtControlProcess(
200 #define BT_H2C_MAX_RETRY 1
201 #define BT_MAX_C2H_LEN 20
203 typedef struct _BT_REQ_CMD {
207 UCHAR pParamStart[100];
208 } BT_REQ_CMD, *PBT_REQ_CMD;
210 typedef struct _BT_RSP_CMD {
213 UCHAR pParamStart[100];
214 } BT_RSP_CMD, *PBT_RSP_CMD;
217 typedef struct _BT_H2C {
226 typedef struct _BT_EXT_C2H {
233 } BT_EXT_C2H, *PBT_EXT_C2H;
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,
242 } BT_OPCODE_STATUS, *PBT_OPCODE_STATUS;
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,
286 } BT_CTRL_OPCODE_LOWER, *PBT_CTRL_OPCODE_LOWER;
291 #endif /* #if(MP_DRIVER == 1) */
293 #endif /* #ifndef __INC_MPT_BT_H */