net: wireless: rockchip_wlan: add rtl8723bs support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8723bs / include / rtw_mp_ioctl.h
1 /******************************************************************************
2  *
3  * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
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  * 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
17  *
18  *
19  ******************************************************************************/
20 #ifndef _RTW_MP_IOCTL_H_
21 #define _RTW_MP_IOCTL_H_
22
23 #include <mp_custom_oid.h>
24 #include <rtw_mp.h>
25
26 #if 0
27 #define TESTFWCMDNUMBER                 1000000
28 #define TEST_H2CINT_WAIT_TIME           500
29 #define TEST_C2HINT_WAIT_TIME           500
30 #define HCI_TEST_SYSCFG_HWMASK          1
31 #define _BUSCLK_40M                     (4 << 2)
32 #endif
33 //------------------------------------------------------------------------------
34 typedef struct CFG_DBG_MSG_STRUCT {
35         u32 DebugLevel;
36         u32 DebugComponent_H32;
37         u32 DebugComponent_L32;
38 }CFG_DBG_MSG_STRUCT,*PCFG_DBG_MSG_STRUCT;
39
40 typedef struct _RW_REG {
41         u32 offset;
42         u32 width;
43         u32 value;
44 }mp_rw_reg,RW_Reg, *pRW_Reg;
45
46 //for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM
47 typedef struct _EEPROM_RW_PARAM {
48         u32 offset;
49         u16 value;
50 }eeprom_rw_param,EEPROM_RWParam, *pEEPROM_RWParam;
51
52 typedef struct _EFUSE_ACCESS_STRUCT_ {
53         u16     start_addr;
54         u16     cnts;
55         u8      data[0];
56 }EFUSE_ACCESS_STRUCT, *PEFUSE_ACCESS_STRUCT;
57
58 typedef struct _BURST_RW_REG {
59         u32 offset;
60         u32 len;
61         u8 Data[256];
62 }burst_rw_reg,Burst_RW_Reg, *pBurst_RW_Reg;
63
64 typedef struct _USB_VendorReq{
65         u8      bRequest;
66         u16     wValue;
67         u16     wIndex;
68         u16     wLength;
69         u8      u8Dir;//0:OUT, 1:IN
70         u8      u8InData;
71 }usb_vendor_req, USB_VendorReq, *pUSB_VendorReq;
72
73 typedef struct _DR_VARIABLE_STRUCT_ {
74         u8 offset;
75         u32 variable;
76 }DR_VARIABLE_STRUCT;
77
78 //int mp_start_joinbss(_adapter *padapter, NDIS_802_11_SSID *pssid);
79
80 //void _irqlevel_changed_(_irqL *irqlevel, /*BOOLEAN*/unsigned char bLower);
81 #ifdef PLATFORM_OS_XP
82 static void _irqlevel_changed_(_irqL *irqlevel, u8 bLower)
83 {
84
85         if (bLower == LOWER) {
86                 *irqlevel = KeGetCurrentIrql();
87
88                 if (*irqlevel > PASSIVE_LEVEL) {
89                         KeLowerIrql(PASSIVE_LEVEL);
90                 }
91         } else {
92                 if (KeGetCurrentIrql() == PASSIVE_LEVEL) {
93                         KeRaiseIrql(DISPATCH_LEVEL, irqlevel);
94                 }
95         }
96
97 }
98 #else
99 #define _irqlevel_changed_(a,b)
100 #endif
101
102 //oid_rtl_seg_81_80_00
103 NDIS_STATUS oid_rt_pro_set_data_rate_hdl(struct oid_par_priv* poid_par_priv);
104 NDIS_STATUS oid_rt_pro_start_test_hdl(struct oid_par_priv* poid_par_priv);
105 NDIS_STATUS oid_rt_pro_stop_test_hdl(struct oid_par_priv* poid_par_priv);
106 NDIS_STATUS oid_rt_pro_set_channel_direct_call_hdl(struct oid_par_priv* poid_par_priv);
107 NDIS_STATUS oid_rt_pro_set_antenna_bb_hdl(struct oid_par_priv* poid_par_priv);
108 NDIS_STATUS oid_rt_pro_set_tx_power_control_hdl(struct oid_par_priv* poid_par_priv);
109 //oid_rtl_seg_81_80_20
110 NDIS_STATUS oid_rt_pro_query_tx_packet_sent_hdl(struct oid_par_priv* poid_par_priv);
111 NDIS_STATUS oid_rt_pro_query_rx_packet_received_hdl(struct oid_par_priv* poid_par_priv);
112 NDIS_STATUS oid_rt_pro_query_rx_packet_crc32_error_hdl(struct oid_par_priv* poid_par_priv);
113
114 NDIS_STATUS oid_rt_pro_reset_tx_packet_sent_hdl(struct oid_par_priv* poid_par_priv);
115 NDIS_STATUS oid_rt_pro_reset_rx_packet_received_hdl(struct oid_par_priv* poid_par_priv);
116 NDIS_STATUS oid_rt_pro_set_modulation_hdl(struct oid_par_priv* poid_par_priv);
117
118 NDIS_STATUS oid_rt_pro_set_continuous_tx_hdl(struct oid_par_priv* poid_par_priv);
119 NDIS_STATUS oid_rt_pro_set_single_carrier_tx_hdl(struct oid_par_priv* poid_par_priv);
120 NDIS_STATUS oid_rt_pro_set_carrier_suppression_tx_hdl(struct oid_par_priv* poid_par_priv);
121 NDIS_STATUS oid_rt_pro_set_single_tone_tx_hdl(struct oid_par_priv* poid_par_priv);
122
123
124 //oid_rtl_seg_81_87
125 NDIS_STATUS oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv* poid_par_priv);
126 NDIS_STATUS oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv* poid_par_priv);
127
128 NDIS_STATUS oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv* poid_par_priv);
129 NDIS_STATUS oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv* poid_par_priv);
130
131
132 //oid_rtl_seg_81_85
133 NDIS_STATUS oid_rt_wireless_mode_hdl(struct oid_par_priv* poid_par_priv);
134
135
136 // oid_rtl_seg_87_11_00
137 NDIS_STATUS oid_rt_pro8711_join_bss_hdl(struct oid_par_priv* poid_par_priv);
138 NDIS_STATUS oid_rt_pro_read_register_hdl(struct oid_par_priv* poid_par_priv);
139 NDIS_STATUS oid_rt_pro_write_register_hdl(struct oid_par_priv* poid_par_priv);
140 NDIS_STATUS oid_rt_pro_burst_read_register_hdl(struct oid_par_priv* poid_par_priv);
141 NDIS_STATUS oid_rt_pro_burst_write_register_hdl(struct oid_par_priv* poid_par_priv);
142 NDIS_STATUS oid_rt_pro_write_txcmd_hdl(struct oid_par_priv* poid_par_priv);
143 NDIS_STATUS oid_rt_pro_read16_eeprom_hdl(struct oid_par_priv* poid_par_priv);
144 NDIS_STATUS oid_rt_pro_write16_eeprom_hdl (struct oid_par_priv* poid_par_priv);
145 NDIS_STATUS oid_rt_pro8711_wi_poll_hdl(struct oid_par_priv* poid_par_priv);
146 NDIS_STATUS oid_rt_pro8711_pkt_loss_hdl(struct oid_par_priv* poid_par_priv);
147 NDIS_STATUS oid_rt_rd_attrib_mem_hdl(struct oid_par_priv* poid_par_priv);
148 NDIS_STATUS oid_rt_wr_attrib_mem_hdl (struct oid_par_priv* poid_par_priv);
149 NDIS_STATUS  oid_rt_pro_set_rf_intfs_hdl(struct oid_par_priv* poid_par_priv);
150 NDIS_STATUS oid_rt_poll_rx_status_hdl(struct oid_par_priv* poid_par_priv);
151 // oid_rtl_seg_87_11_20
152 NDIS_STATUS oid_rt_pro_cfg_debug_message_hdl(struct oid_par_priv* poid_par_priv);
153 NDIS_STATUS oid_rt_pro_set_data_rate_ex_hdl(struct oid_par_priv* poid_par_priv);
154 NDIS_STATUS oid_rt_pro_set_basic_rate_hdl(struct oid_par_priv* poid_par_priv);
155 NDIS_STATUS oid_rt_pro_read_tssi_hdl(struct oid_par_priv* poid_par_priv);
156 NDIS_STATUS oid_rt_pro_set_power_tracking_hdl(struct oid_par_priv* poid_par_priv);
157 //oid_rtl_seg_87_11_50
158 NDIS_STATUS oid_rt_pro_qry_pwrstate_hdl(struct oid_par_priv* poid_par_priv);
159 NDIS_STATUS oid_rt_pro_set_pwrstate_hdl(struct oid_par_priv* poid_par_priv);
160 //oid_rtl_seg_87_11_F0
161 NDIS_STATUS oid_rt_pro_h2c_set_rate_table_hdl(struct oid_par_priv* poid_par_priv);
162 NDIS_STATUS oid_rt_pro_h2c_get_rate_table_hdl(struct oid_par_priv* poid_par_priv);
163
164
165 //oid_rtl_seg_87_12_00
166 NDIS_STATUS oid_rt_pro_encryption_ctrl_hdl(struct oid_par_priv* poid_par_priv);
167 NDIS_STATUS oid_rt_pro_add_sta_info_hdl(struct oid_par_priv* poid_par_priv);
168 NDIS_STATUS oid_rt_pro_dele_sta_info_hdl(struct oid_par_priv* poid_par_priv);
169 NDIS_STATUS oid_rt_pro_query_dr_variable_hdl(struct oid_par_priv* poid_par_priv);
170 NDIS_STATUS oid_rt_pro_rx_packet_type_hdl(struct oid_par_priv* poid_par_priv);
171
172 NDIS_STATUS oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv);
173 NDIS_STATUS oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv);
174 NDIS_STATUS oid_rt_pro_rw_efuse_pgpkt_hdl(struct oid_par_priv *poid_par_priv);
175 NDIS_STATUS oid_rt_get_efuse_current_size_hdl(struct oid_par_priv *poid_par_priv);
176 NDIS_STATUS oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv);
177 NDIS_STATUS oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv);
178
179 NDIS_STATUS oid_rt_set_bandwidth_hdl(struct oid_par_priv* poid_par_priv);
180 NDIS_STATUS oid_rt_set_crystal_cap_hdl(struct oid_par_priv* poid_par_priv);
181 NDIS_STATUS oid_rt_set_rx_packet_type_hdl(struct oid_par_priv* poid_par_priv);
182 NDIS_STATUS oid_rt_get_efuse_max_size_hdl(struct oid_par_priv* poid_par_priv);
183 NDIS_STATUS oid_rt_pro_set_tx_agc_offset_hdl(struct oid_par_priv* poid_par_priv);
184
185 NDIS_STATUS oid_rt_pro_set_pkt_test_mode_hdl(struct oid_par_priv* poid_par_priv);
186
187 NDIS_STATUS oid_rt_get_thermal_meter_hdl(struct oid_par_priv* poid_par_priv);
188
189 NDIS_STATUS oid_rt_reset_phy_rx_packet_count_hdl(struct oid_par_priv* poid_par_priv);
190 NDIS_STATUS oid_rt_get_phy_rx_packet_received_hdl(struct oid_par_priv* poid_par_priv);
191 NDIS_STATUS oid_rt_get_phy_rx_packet_crc32_error_hdl(struct oid_par_priv* poid_par_priv);
192
193 NDIS_STATUS oid_rt_set_power_down_hdl(struct oid_par_priv* poid_par_priv);
194
195 NDIS_STATUS oid_rt_get_power_mode_hdl(struct oid_par_priv* poid_par_priv);
196
197 NDIS_STATUS oid_rt_pro_trigger_gpio_hdl(struct oid_par_priv *poid_par_priv);
198
199 #ifdef _RTW_MP_IOCTL_C_
200
201 const struct oid_obj_priv oid_rtl_seg_81_80_00[] =
202 {
203         {1, &oid_null_function},                        //0x00  OID_RT_PRO_RESET_DUT
204         {1, &oid_rt_pro_set_data_rate_hdl},             //0x01
205         {1, &oid_rt_pro_start_test_hdl},                //0x02
206         {1, &oid_rt_pro_stop_test_hdl},                 //0x03
207         {1, &oid_null_function},                        //0x04  OID_RT_PRO_SET_PREAMBLE
208         {1, &oid_null_function},                        //0x05  OID_RT_PRO_SET_SCRAMBLER
209         {1, &oid_null_function},                        //0x06  OID_RT_PRO_SET_FILTER_BB
210         {1, &oid_null_function},                        //0x07  OID_RT_PRO_SET_MANUAL_DIVERSITY_BB
211         {1, &oid_rt_pro_set_channel_direct_call_hdl},   //0x08
212         {1, &oid_null_function},                        //0x09  OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL
213         {1, &oid_null_function},                        //0x0A  OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL
214         {1, &oid_rt_pro_set_continuous_tx_hdl},         //0x0B  OID_RT_PRO_SET_TX_CONTINUOUS_DIRECT_CALL
215         {1, &oid_rt_pro_set_single_carrier_tx_hdl},     //0x0C  OID_RT_PRO_SET_SINGLE_CARRIER_TX_CONTINUOUS
216         {1, &oid_null_function},                        //0x0D  OID_RT_PRO_SET_TX_ANTENNA_BB
217         {1, &oid_rt_pro_set_antenna_bb_hdl},            //0x0E
218         {1, &oid_null_function},                        //0x0F  OID_RT_PRO_SET_CR_SCRAMBLER
219         {1, &oid_null_function},                        //0x10  OID_RT_PRO_SET_CR_NEW_FILTER
220         {1, &oid_rt_pro_set_tx_power_control_hdl},      //0x11  OID_RT_PRO_SET_TX_POWER_CONTROL
221         {1, &oid_null_function},                        //0x12  OID_RT_PRO_SET_CR_TX_CONFIG
222         {1, &oid_null_function},                        //0x13  OID_RT_PRO_GET_TX_POWER_CONTROL
223         {1, &oid_null_function},                        //0x14  OID_RT_PRO_GET_CR_SIGNAL_QUALITY
224         {1, &oid_null_function},                        //0x15  OID_RT_PRO_SET_CR_SETPOINT
225         {1, &oid_null_function},                        //0x16  OID_RT_PRO_SET_INTEGRATOR
226         {1, &oid_null_function},                        //0x17  OID_RT_PRO_SET_SIGNAL_QUALITY
227         {1, &oid_null_function},                        //0x18  OID_RT_PRO_GET_INTEGRATOR
228         {1, &oid_null_function},                        //0x19  OID_RT_PRO_GET_SIGNAL_QUALITY
229         {1, &oid_null_function},                        //0x1A  OID_RT_PRO_QUERY_EEPROM_TYPE
230         {1, &oid_null_function},                        //0x1B  OID_RT_PRO_WRITE_MAC_ADDRESS
231         {1, &oid_null_function},                        //0x1C  OID_RT_PRO_READ_MAC_ADDRESS
232         {1, &oid_null_function},                        //0x1D  OID_RT_PRO_WRITE_CIS_DATA
233         {1, &oid_null_function},                        //0x1E  OID_RT_PRO_READ_CIS_DATA
234         {1, &oid_null_function}                         //0x1F  OID_RT_PRO_WRITE_POWER_CONTROL
235
236 };
237
238 const struct oid_obj_priv oid_rtl_seg_81_80_20[] =
239 {
240         {1, &oid_null_function},                        //0x20  OID_RT_PRO_READ_POWER_CONTROL
241         {1, &oid_null_function},                        //0x21  OID_RT_PRO_WRITE_EEPROM
242         {1, &oid_null_function},                        //0x22  OID_RT_PRO_READ_EEPROM
243         {1, &oid_rt_pro_reset_tx_packet_sent_hdl},      //0x23
244         {1, &oid_rt_pro_query_tx_packet_sent_hdl},      //0x24
245         {1, &oid_rt_pro_reset_rx_packet_received_hdl},  //0x25
246         {1, &oid_rt_pro_query_rx_packet_received_hdl},  //0x26
247         {1, &oid_rt_pro_query_rx_packet_crc32_error_hdl},       //0x27
248         {1, &oid_null_function},                        //0x28  OID_RT_PRO_QUERY_CURRENT_ADDRESS
249         {1, &oid_null_function},                        //0x29  OID_RT_PRO_QUERY_PERMANENT_ADDRESS
250         {1, &oid_null_function},                        //0x2A  OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS
251         {1, &oid_rt_pro_set_carrier_suppression_tx_hdl},//0x2B  OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX
252         {1, &oid_null_function},                        //0x2C  OID_RT_PRO_RECEIVE_PACKET
253         {1, &oid_null_function},                        //0x2D  OID_RT_PRO_WRITE_EEPROM_BYTE
254         {1, &oid_null_function},                        //0x2E  OID_RT_PRO_READ_EEPROM_BYTE
255         {1, &oid_rt_pro_set_modulation_hdl}             //0x2F
256
257 };
258
259 const struct oid_obj_priv oid_rtl_seg_81_80_40[] =
260 {
261         {1, &oid_null_function},                        //0x40
262         {1, &oid_null_function},                        //0x41
263         {1, &oid_null_function},                        //0x42
264         {1, &oid_rt_pro_set_single_tone_tx_hdl},        //0x43
265         {1, &oid_null_function},                        //0x44
266         {1, &oid_null_function}                         //0x45
267 };
268
269 const struct oid_obj_priv oid_rtl_seg_81_80_80[] =
270 {
271         {1, &oid_null_function},                        //0x80  OID_RT_DRIVER_OPTION
272         {1, &oid_null_function},                        //0x81  OID_RT_RF_OFF
273         {1, &oid_null_function}                         //0x82  OID_RT_AUTH_STATUS
274
275 };
276
277 const struct oid_obj_priv oid_rtl_seg_81_85[] =
278 {
279         {1, &oid_rt_wireless_mode_hdl}                  //0x00  OID_RT_WIRELESS_MODE
280 };
281
282 struct oid_obj_priv oid_rtl_seg_81_87[] =
283 {
284         {1, &oid_null_function},                        //0x80  OID_RT_PRO8187_WI_POLL
285         {1, &oid_rt_pro_write_bb_reg_hdl},              //0x81
286         {1, &oid_rt_pro_read_bb_reg_hdl},               //0x82
287         {1, &oid_rt_pro_write_rf_reg_hdl},              //0x82
288         {1, &oid_rt_pro_read_rf_reg_hdl}                //0x83
289 };
290
291 struct oid_obj_priv oid_rtl_seg_87_11_00[] =
292 {
293         {1, &oid_rt_pro8711_join_bss_hdl},              //0x00  //S
294         {1, &oid_rt_pro_read_register_hdl},             //0x01
295         {1, &oid_rt_pro_write_register_hdl},            //0x02
296         {1, &oid_rt_pro_burst_read_register_hdl},       //0x03
297         {1, &oid_rt_pro_burst_write_register_hdl},      //0x04
298         {1, &oid_rt_pro_write_txcmd_hdl},               //0x05
299         {1, &oid_rt_pro_read16_eeprom_hdl},             //0x06
300         {1, &oid_rt_pro_write16_eeprom_hdl},            //0x07
301         {1, &oid_null_function},                        //0x08  OID_RT_PRO_H2C_SET_COMMAND
302         {1, &oid_null_function},                        //0x09  OID_RT_PRO_H2C_QUERY_RESULT
303         {1, &oid_rt_pro8711_wi_poll_hdl},               //0x0A
304         {1, &oid_rt_pro8711_pkt_loss_hdl},              //0x0B
305         {1, &oid_rt_rd_attrib_mem_hdl},                 //0x0C
306         {1, &oid_rt_wr_attrib_mem_hdl},                 //0x0D
307         {1, &oid_null_function},                        //0x0E
308         {1, &oid_null_function},                        //0x0F
309         {1, &oid_null_function},                        //0x10  OID_RT_PRO_H2C_CMD_MODE
310         {1, &oid_null_function},                        //0x11  OID_RT_PRO_H2C_CMD_RSP_MODE
311         {1, &oid_null_function},                        //0X12  OID_RT_PRO_WAIT_C2H_EVENT
312         {1, &oid_null_function},                        //0X13  OID_RT_PRO_RW_ACCESS_PROTOCOL_TEST
313         {1, &oid_null_function},                        //0X14  OID_RT_PRO_SCSI_ACCESS_TEST
314         {1, &oid_null_function},                        //0X15  OID_RT_PRO_SCSI_TCPIPOFFLOAD_OUT
315         {1, &oid_null_function},                        //0X16  OID_RT_PRO_SCSI_TCPIPOFFLOAD_IN
316         {1, &oid_null_function},                        //0X17  OID_RT_RRO_RX_PKT_VIA_IOCTRL
317         {1, &oid_null_function},                        //0X18  OID_RT_RRO_RX_PKTARRAY_VIA_IOCTRL
318         {1, &oid_null_function},                        //0X19  OID_RT_RPO_SET_PWRMGT_TEST
319         {1, &oid_null_function},                        //0X1A
320         {1, &oid_null_function},                        //0X1B  OID_RT_PRO_QRY_PWRMGT_TEST
321         {1, &oid_null_function},                        //0X1C  OID_RT_RPO_ASYNC_RWIO_TEST
322         {1, &oid_null_function},                        //0X1D  OID_RT_RPO_ASYNC_RWIO_POLL
323         {1, &oid_rt_pro_set_rf_intfs_hdl},              //0X1E
324         {1, &oid_rt_poll_rx_status_hdl}                 //0X1F
325 };
326
327 struct oid_obj_priv oid_rtl_seg_87_11_20[] =
328 {
329         {1, &oid_rt_pro_cfg_debug_message_hdl},         //0x20
330         {1, &oid_rt_pro_set_data_rate_ex_hdl},          //0x21
331         {1, &oid_rt_pro_set_basic_rate_hdl},            //0x22
332         {1, &oid_rt_pro_read_tssi_hdl},                 //0x23
333         {1, &oid_rt_pro_set_power_tracking_hdl}         //0x24
334 };
335
336
337 struct oid_obj_priv oid_rtl_seg_87_11_50[] =
338 {
339         {1, &oid_rt_pro_qry_pwrstate_hdl},              //0x50
340         {1, &oid_rt_pro_set_pwrstate_hdl}               //0x51
341 };
342
343 struct oid_obj_priv oid_rtl_seg_87_11_80[] =
344 {
345         {1, &oid_null_function}                         //0x80
346 };
347
348 struct oid_obj_priv oid_rtl_seg_87_11_B0[] =
349 {
350         {1, &oid_null_function}                         //0xB0
351 };
352
353 struct oid_obj_priv oid_rtl_seg_87_11_F0[] =
354 {
355         {1, &oid_null_function},                        //0xF0
356         {1, &oid_null_function},                        //0xF1
357         {1, &oid_null_function},                        //0xF2
358         {1, &oid_null_function},                        //0xF3
359         {1, &oid_null_function},                        //0xF4
360         {1, &oid_null_function},                        //0xF5
361         {1, &oid_null_function},                        //0xF6
362         {1, &oid_null_function},                        //0xF7
363         {1, &oid_null_function},                        //0xF8
364         {1, &oid_null_function},                        //0xF9
365         {1, &oid_null_function},                        //0xFA
366         {1, &oid_rt_pro_h2c_set_rate_table_hdl},        //0xFB
367         {1, &oid_rt_pro_h2c_get_rate_table_hdl},        //0xFC
368         {1, &oid_null_function},                        //0xFD
369         {1, &oid_null_function},                        //0xFE  OID_RT_PRO_H2C_C2H_LBK_TEST
370         {1, &oid_null_function}                         //0xFF
371
372 };
373
374 struct oid_obj_priv oid_rtl_seg_87_12_00[]=
375 {
376         {1, &oid_rt_pro_encryption_ctrl_hdl},           //0x00  Q&S
377         {1, &oid_rt_pro_add_sta_info_hdl},              //0x01  S
378         {1, &oid_rt_pro_dele_sta_info_hdl},             //0x02  S
379         {1, &oid_rt_pro_query_dr_variable_hdl},         //0x03  Q
380         {1, &oid_rt_pro_rx_packet_type_hdl},            //0x04  Q,S
381         {1, &oid_rt_pro_read_efuse_hdl},                //0x05  Q       OID_RT_PRO_READ_EFUSE
382         {1, &oid_rt_pro_write_efuse_hdl},               //0x06  S       OID_RT_PRO_WRITE_EFUSE
383         {1, &oid_rt_pro_rw_efuse_pgpkt_hdl},            //0x07  Q,S
384         {1, &oid_rt_get_efuse_current_size_hdl},        //0x08  Q
385         {1, &oid_rt_set_bandwidth_hdl},                 //0x09
386         {1, &oid_rt_set_crystal_cap_hdl},               //0x0a
387         {1, &oid_rt_set_rx_packet_type_hdl},            //0x0b  S
388         {1, &oid_rt_get_efuse_max_size_hdl},            //0x0c
389         {1, &oid_rt_pro_set_tx_agc_offset_hdl},         //0x0d
390         {1, &oid_rt_pro_set_pkt_test_mode_hdl},         //0x0e
391         {1, &oid_null_function},                        //0x0f          OID_RT_PRO_FOR_EVM_TEST_SETTING
392         {1, &oid_rt_get_thermal_meter_hdl},             //0x10  Q       OID_RT_PRO_GET_THERMAL_METER
393         {1, &oid_rt_reset_phy_rx_packet_count_hdl},     //0x11  S       OID_RT_RESET_PHY_RX_PACKET_COUNT
394         {1, &oid_rt_get_phy_rx_packet_received_hdl},    //0x12  Q       OID_RT_GET_PHY_RX_PACKET_RECEIVED
395         {1, &oid_rt_get_phy_rx_packet_crc32_error_hdl}, //0x13  Q       OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR
396         {1, &oid_rt_set_power_down_hdl},                //0x14  Q       OID_RT_SET_POWER_DOWN
397         {1, &oid_rt_get_power_mode_hdl}                 //0x15  Q       OID_RT_GET_POWER_MODE
398 };
399
400 #else /* _RTL871X_MP_IOCTL_C_ */
401
402 extern struct oid_obj_priv oid_rtl_seg_81_80_00[32];
403 extern struct oid_obj_priv oid_rtl_seg_81_80_20[16];
404 extern struct oid_obj_priv oid_rtl_seg_81_80_40[6];
405 extern struct oid_obj_priv oid_rtl_seg_81_80_80[3];
406
407 extern struct oid_obj_priv oid_rtl_seg_81_85[1];
408 extern struct oid_obj_priv oid_rtl_seg_81_87[5];
409
410 extern struct oid_obj_priv oid_rtl_seg_87_11_00[32];
411 extern struct oid_obj_priv oid_rtl_seg_87_11_20[5];
412 extern struct oid_obj_priv oid_rtl_seg_87_11_50[2];
413 extern struct oid_obj_priv oid_rtl_seg_87_11_80[1];
414 extern struct oid_obj_priv oid_rtl_seg_87_11_B0[1];
415 extern struct oid_obj_priv oid_rtl_seg_87_11_F0[16];
416
417 extern struct oid_obj_priv oid_rtl_seg_87_12_00[32];
418
419 #endif /* _RTL871X_MP_IOCTL_C_ */
420
421 struct rwreg_param{
422         u32 offset;
423         u32 width;
424         u32 value;
425 };
426
427 struct bbreg_param{
428         u32 offset;
429         u32 phymask;
430         u32 value;
431 };
432 /*
433 struct rfchannel_param{
434         u32 ch;
435         u32 modem;
436 };
437 */
438 struct txpower_param{
439         u32 pwr_index;
440 };
441
442
443 struct datarate_param{
444         u32 rate_index;
445 };
446
447
448 struct rfintfs_parm {
449         u32 rfintfs;
450 };
451
452 typedef struct _mp_xmit_parm_ {
453         u8 enable;
454         u32 count;
455         u16 length;
456         u8 payload_type;
457         u8 da[ETH_ALEN];
458 }MP_XMIT_PARM, *PMP_XMIT_PARM;
459
460 struct mp_xmit_packet {
461         u32 len;
462         u32 mem[MAX_MP_XMITBUF_SZ >> 2];
463 };
464
465 struct psmode_param {
466         u32 ps_mode;
467         u32 smart_ps;
468 };
469
470 //for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM
471 struct eeprom_rw_param {
472         u32 offset;
473         u16 value;
474 };
475
476 struct mp_ioctl_handler {
477         u32 paramsize;
478         u32 (*handler)(struct oid_par_priv* poid_par_priv);
479         u32 oid;
480 };
481
482 struct mp_ioctl_param{
483         u32 subcode;
484         u32 len;
485         u8 data[0];
486 };
487
488 #define GEN_MP_IOCTL_SUBCODE(code) _MP_IOCTL_ ## code ## _CMD_
489
490 enum RTL871X_MP_IOCTL_SUBCODE {
491         GEN_MP_IOCTL_SUBCODE(MP_START),                 /*0*/
492         GEN_MP_IOCTL_SUBCODE(MP_STOP),
493         GEN_MP_IOCTL_SUBCODE(READ_REG),
494         GEN_MP_IOCTL_SUBCODE(WRITE_REG),
495         GEN_MP_IOCTL_SUBCODE(READ_BB_REG),
496         GEN_MP_IOCTL_SUBCODE(WRITE_BB_REG),             /*5*/
497         GEN_MP_IOCTL_SUBCODE(READ_RF_REG),
498         GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG),
499         GEN_MP_IOCTL_SUBCODE(SET_CHANNEL),
500         GEN_MP_IOCTL_SUBCODE(SET_TXPOWER),
501         GEN_MP_IOCTL_SUBCODE(SET_DATARATE),             /*10*/
502         GEN_MP_IOCTL_SUBCODE(SET_BANDWIDTH),
503         GEN_MP_IOCTL_SUBCODE(SET_ANTENNA),
504         GEN_MP_IOCTL_SUBCODE(CNTU_TX),
505         GEN_MP_IOCTL_SUBCODE(SC_TX),
506         GEN_MP_IOCTL_SUBCODE(CS_TX),                    /*15*/
507         GEN_MP_IOCTL_SUBCODE(ST_TX),
508         GEN_MP_IOCTL_SUBCODE(IOCTL_XMIT_PACKET),
509         GEN_MP_IOCTL_SUBCODE(SET_RX_PKT_TYPE),
510         GEN_MP_IOCTL_SUBCODE(RESET_PHY_RX_PKT_CNT),
511         GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_RECV),      /*20*/
512         GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_ERROR),
513         GEN_MP_IOCTL_SUBCODE(READ16_EEPROM),
514         GEN_MP_IOCTL_SUBCODE(WRITE16_EEPROM),
515         GEN_MP_IOCTL_SUBCODE(EFUSE),
516         GEN_MP_IOCTL_SUBCODE(EFUSE_MAP),                /*25*/
517         GEN_MP_IOCTL_SUBCODE(GET_EFUSE_MAX_SIZE),
518         GEN_MP_IOCTL_SUBCODE(GET_EFUSE_CURRENT_SIZE),
519         GEN_MP_IOCTL_SUBCODE(GET_THERMAL_METER),
520         GEN_MP_IOCTL_SUBCODE(SET_PTM),
521         GEN_MP_IOCTL_SUBCODE(SET_POWER_DOWN),           /*30*/
522         GEN_MP_IOCTL_SUBCODE(TRIGGER_GPIO),
523         GEN_MP_IOCTL_SUBCODE(SET_DM_BT),                /*32*/
524         GEN_MP_IOCTL_SUBCODE(DEL_BA),                   /*33*/
525         GEN_MP_IOCTL_SUBCODE(GET_WIFI_STATUS),  /*34*/  
526         MAX_MP_IOCTL_SUBCODE,
527 };
528
529 u32 mp_ioctl_xmit_packet_hdl(struct oid_par_priv* poid_par_priv);
530
531 #ifdef _RTW_MP_IOCTL_C_
532
533 #define GEN_MP_IOCTL_HANDLER(sz, hdl, oid) {sz, hdl, oid},
534
535 #define EXT_MP_IOCTL_HANDLER(sz, subcode, oid) {sz, mp_ioctl_ ## subcode ## _hdl, oid},
536
537
538 struct mp_ioctl_handler mp_ioctl_hdl[] = {
539
540 /*0*/   GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_start_test_hdl, OID_RT_PRO_START_TEST)
541         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_stop_test_hdl, OID_RT_PRO_STOP_TEST)
542
543         GEN_MP_IOCTL_HANDLER(sizeof(struct rwreg_param), oid_rt_pro_read_register_hdl, OID_RT_PRO_READ_REGISTER)
544         GEN_MP_IOCTL_HANDLER(sizeof(struct rwreg_param), oid_rt_pro_write_register_hdl, OID_RT_PRO_WRITE_REGISTER)
545         GEN_MP_IOCTL_HANDLER(sizeof(struct bb_reg_param), oid_rt_pro_read_bb_reg_hdl, OID_RT_PRO_READ_BB_REG)
546 /*5*/   GEN_MP_IOCTL_HANDLER(sizeof(struct bb_reg_param), oid_rt_pro_write_bb_reg_hdl, OID_RT_PRO_WRITE_BB_REG)
547         GEN_MP_IOCTL_HANDLER(sizeof(struct rf_reg_param), oid_rt_pro_read_rf_reg_hdl, OID_RT_PRO_RF_READ_REGISTRY)
548         GEN_MP_IOCTL_HANDLER(sizeof(struct rf_reg_param), oid_rt_pro_write_rf_reg_hdl, OID_RT_PRO_RF_WRITE_REGISTRY)
549
550         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_channel_direct_call_hdl, OID_RT_PRO_SET_CHANNEL_DIRECT_CALL)
551         GEN_MP_IOCTL_HANDLER(sizeof(struct txpower_param), oid_rt_pro_set_tx_power_control_hdl, OID_RT_PRO_SET_TX_POWER_CONTROL)
552 /*10*/  GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_data_rate_hdl, OID_RT_PRO_SET_DATA_RATE)
553         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_set_bandwidth_hdl, OID_RT_SET_BANDWIDTH)
554         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_antenna_bb_hdl, OID_RT_PRO_SET_ANTENNA_BB)
555
556         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_continuous_tx_hdl, OID_RT_PRO_SET_CONTINUOUS_TX)
557         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_single_carrier_tx_hdl, OID_RT_PRO_SET_SINGLE_CARRIER_TX)
558 /*15*/  GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_carrier_suppression_tx_hdl, OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX)
559         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_pro_set_single_tone_tx_hdl, OID_RT_PRO_SET_SINGLE_TONE_TX)
560
561         EXT_MP_IOCTL_HANDLER(0, xmit_packet, 0)
562
563         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_set_rx_packet_type_hdl, OID_RT_SET_RX_PACKET_TYPE)
564         GEN_MP_IOCTL_HANDLER(0, oid_rt_reset_phy_rx_packet_count_hdl, OID_RT_RESET_PHY_RX_PACKET_COUNT)
565 /*20*/  GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_phy_rx_packet_received_hdl, OID_RT_GET_PHY_RX_PACKET_RECEIVED)
566         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_phy_rx_packet_crc32_error_hdl, OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR)
567
568         GEN_MP_IOCTL_HANDLER(sizeof(struct eeprom_rw_param), NULL, 0)
569         GEN_MP_IOCTL_HANDLER(sizeof(struct eeprom_rw_param), NULL, 0)
570         GEN_MP_IOCTL_HANDLER(sizeof(EFUSE_ACCESS_STRUCT), oid_rt_pro_efuse_hdl, OID_RT_PRO_EFUSE)
571 /*25*/  GEN_MP_IOCTL_HANDLER(0, oid_rt_pro_efuse_map_hdl, OID_RT_PRO_EFUSE_MAP)
572         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_efuse_max_size_hdl, OID_RT_GET_EFUSE_MAX_SIZE)
573         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_efuse_current_size_hdl, OID_RT_GET_EFUSE_CURRENT_SIZE)
574
575         GEN_MP_IOCTL_HANDLER(sizeof(u32), oid_rt_get_thermal_meter_hdl, OID_RT_PRO_GET_THERMAL_METER)
576         GEN_MP_IOCTL_HANDLER(sizeof(u8), oid_rt_pro_set_power_tracking_hdl, OID_RT_PRO_SET_POWER_TRACKING)
577 /*30*/  GEN_MP_IOCTL_HANDLER(sizeof(u8), oid_rt_set_power_down_hdl, OID_RT_SET_POWER_DOWN)
578 /*31*/  GEN_MP_IOCTL_HANDLER(0, oid_rt_pro_trigger_gpio_hdl, 0)
579         GEN_MP_IOCTL_HANDLER(0, NULL, 0)
580         GEN_MP_IOCTL_HANDLER(0, NULL, 0)
581         GEN_MP_IOCTL_HANDLER(0, NULL, 0)
582 };
583
584 #else /* _RTW_MP_IOCTL_C_ */
585
586 extern struct mp_ioctl_handler mp_ioctl_hdl[];
587
588 #endif /* _RTW_MP_IOCTL_C_ */
589
590 #endif
591