• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 	u8		txrxChannel;
41 	u32		txrxTxPktCnt;
42 	u8		txrxTxPktInterval;
43 	u8		txrxPayloadType;
44 	u8		txrxPktType;
45 	u16		txrxPayloadLen;
46 	u32		txrxPktHeader;
47 	u8		txrxWhitenCoeff;
48 	u8		txrxBdaddr[6];
49 	u8		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 		PADAPTER	Adapter,
166 		u8		opCode,
167 		u8		byte1,
168 		u8		byte2,
169 		u8		byte3
170 );
171 
172 uint
173 MPTBT_SendOidBT(
174 		PADAPTER		pAdapter,
175 		void				*InformationBuffer,
176 		u32				InformationBufferLength,
177 		u32 				*BytesRead,
178 		u32 				*BytesNeeded
179 );
180 
181 void
182 MPTBT_FwC2hBtMpCtrl(
183 	PADAPTER	Adapter,
184 	u8 			*tmpBuf,
185 	u8			length
186 );
187 
188 void MPh2c_timeout_handle(void *FunctionContext);
189 
190 void mptbt_BtControlProcess(
191 	PADAPTER	Adapter,
192 	void			*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 	u8       opCodeVer;
200 	u8       OpCode;
201 	u16      paraLength;
202 	u8       pParamStart[100];
203 } BT_REQ_CMD, *PBT_REQ_CMD;
204 
205 typedef struct _BT_RSP_CMD {
206 	u16      status;
207 	u16      paraLength;
208 	u8       pParamStart[100];
209 } BT_RSP_CMD, *PBT_RSP_CMD;
210 
211 
212 typedef struct _BT_H2C {
213 	u8	opCodeVer:4;
214 	u8	reqNum:4;
215 	u8	opCode;
216 	u8	buf[100];
217 } BT_H2C, *PBT_H2C;
218 
219 
220 
221 typedef struct _BT_EXT_C2H {
222 	u8	extendId;
223 	u8	statusCode:4;
224 	u8	retLen:4;
225 	u8	opCodeVer:4;
226 	u8	reqNum:4;
227 	u8	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 */
289