Commit | Line | Data |
---|---|---|
cf3e6881 AB |
1 | /****************************************************************************** |
2 | * | |
3 | * Copyright(c) 2007 - 2010 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 | * Modifications for inclusion into the Linux staging tree are | |
19 | * Copyright(c) 2010 Larry Finger. All rights reserved. | |
20 | * | |
21 | * Contact information: | |
22 | * WLAN FAE <wlanfae@realtek.com> | |
23 | * Larry Finger <Larry.Finger@lwfinger.net> | |
24 | * | |
25 | ******************************************************************************/ | |
2865d42c LF |
26 | #ifndef _RTL871X_MP_IOCTL_H |
27 | #define _RTL871X_MP_IOCTL_H | |
28 | ||
29 | #include "osdep_service.h" | |
30 | #include "drv_types.h" | |
31 | #include "mp_custom_oid.h" | |
32 | #include "rtl871x_ioctl.h" | |
33 | #include "rtl871x_ioctl_rtl.h" | |
34 | #include "rtl8712_efuse.h" | |
35 | ||
36 | #define TESTFWCMDNUMBER 1000000 | |
37 | #define TEST_H2CINT_WAIT_TIME 500 | |
38 | #define TEST_C2HINT_WAIT_TIME 500 | |
39 | #define HCI_TEST_SYSCFG_HWMASK 1 | |
40 | #define _BUSCLK_40M (4 << 2) | |
41 | ||
42 | struct CFG_DBG_MSG_STRUCT { | |
43 | u32 DebugLevel; | |
44 | u32 DebugComponent_H32; | |
45 | u32 DebugComponent_L32; | |
46 | }; | |
47 | ||
48 | struct mp_rw_reg { | |
49 | uint offset; | |
50 | uint width; | |
51 | u32 value; | |
52 | }; | |
53 | ||
54 | /* for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM */ | |
55 | struct eeprom_rw_param { | |
56 | uint offset; | |
57 | u16 value; | |
58 | }; | |
59 | ||
60 | struct EFUSE_ACCESS_STRUCT { | |
61 | u16 start_addr; | |
62 | u16 cnts; | |
63 | u8 data[0]; | |
64 | }; | |
65 | ||
66 | struct burst_rw_reg { | |
67 | uint offset; | |
68 | uint len; | |
69 | u8 Data[256]; | |
70 | }; | |
71 | ||
72 | struct usb_vendor_req { | |
73 | u8 bRequest; | |
74 | u16 wValue; | |
75 | u16 wIndex; | |
76 | u16 wLength; | |
77 | u8 u8Dir;/*0:OUT, 1:IN */ | |
78 | u8 u8InData; | |
79 | }; | |
80 | ||
81 | struct DR_VARIABLE_STRUCT { | |
82 | u8 offset; | |
83 | u32 variable; | |
84 | }; | |
85 | ||
86 | int mp_start_joinbss(struct _adapter *padapter, struct ndis_802_11_ssid *pssid); | |
87 | ||
88 | /* oid_rtl_seg_87_11_00 */ | |
89 | uint oid_rt_pro8711_join_bss_hdl(struct oid_par_priv *poid_par_priv); | |
90 | uint oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv); | |
91 | uint oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv); | |
92 | uint oid_rt_pro_burst_read_register_hdl(struct oid_par_priv* | |
93 | poid_par_priv); | |
94 | uint oid_rt_pro_burst_write_register_hdl(struct oid_par_priv* | |
95 | poid_par_priv); | |
96 | uint oid_rt_pro_write_txcmd_hdl(struct oid_par_priv *poid_par_priv); | |
97 | uint oid_rt_pro_read16_eeprom_hdl(struct oid_par_priv *poid_par_priv); | |
98 | uint oid_rt_pro_write16_eeprom_hdl(struct oid_par_priv *poid_par_priv); | |
99 | uint oid_rt_pro8711_wi_poll_hdl(struct oid_par_priv *poid_par_priv); | |
100 | uint oid_rt_pro8711_pkt_loss_hdl(struct oid_par_priv *poid_par_priv); | |
101 | uint oid_rt_rd_attrib_mem_hdl(struct oid_par_priv *poid_par_priv); | |
102 | uint oid_rt_wr_attrib_mem_hdl(struct oid_par_priv *poid_par_priv); | |
103 | uint oid_rt_pro_set_rf_intfs_hdl(struct oid_par_priv *poid_par_priv); | |
104 | uint oid_rt_poll_rx_status_hdl(struct oid_par_priv *poid_par_priv); | |
105 | /* oid_rtl_seg_87_11_20 */ | |
106 | uint oid_rt_pro_cfg_debug_message_hdl( | |
107 | struct oid_par_priv *poid_par_priv); | |
108 | uint oid_rt_pro_set_data_rate_ex_hdl( | |
109 | struct oid_par_priv *poid_par_priv); | |
110 | uint oid_rt_pro_set_basic_rate_hdl( | |
111 | struct oid_par_priv *poid_par_priv); | |
112 | uint oid_rt_pro_set_power_tracking_hdl( | |
113 | struct oid_par_priv *poid_par_priv); | |
114 | /* oid_rtl_seg_87_11_50 */ | |
115 | uint oid_rt_pro_qry_pwrstate_hdl( | |
116 | struct oid_par_priv *poid_par_priv); | |
117 | uint oid_rt_pro_set_pwrstate_hdl( | |
118 | struct oid_par_priv *poid_par_priv); | |
119 | /* oid_rtl_seg_87_11_F0 */ | |
120 | uint oid_rt_pro_h2c_set_rate_table_hdl( | |
121 | struct oid_par_priv *poid_par_priv); | |
122 | uint oid_rt_pro_h2c_get_rate_table_hdl( | |
123 | struct oid_par_priv *poid_par_priv); | |
124 | /* oid_rtl_seg_81_80_00 */ | |
125 | uint oid_rt_pro_set_data_rate_hdl( | |
126 | struct oid_par_priv *poid_par_priv); | |
127 | uint oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv); | |
128 | uint oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv); | |
129 | uint oid_rt_pro_set_channel_direct_call_hdl( | |
130 | struct oid_par_priv *poid_par_priv); | |
131 | uint oid_rt_pro_set_antenna_bb_hdl( | |
132 | struct oid_par_priv *poid_par_priv); | |
133 | uint oid_rt_pro_set_tx_power_control_hdl( | |
134 | struct oid_par_priv *poid_par_priv); | |
135 | /* oid_rtl_seg_81_80_20 */ | |
136 | uint oid_rt_pro_query_tx_packet_sent_hdl( | |
137 | struct oid_par_priv *poid_par_priv); | |
138 | uint oid_rt_pro_query_rx_packet_received_hdl( | |
139 | struct oid_par_priv *poid_par_priv); | |
140 | uint oid_rt_pro_query_rx_packet_crc32_error_hdl( | |
141 | struct oid_par_priv *poid_par_priv); | |
142 | uint oid_rt_pro_reset_tx_packet_sent_hdl( | |
143 | struct oid_par_priv *poid_par_priv); | |
144 | uint oid_rt_pro_reset_rx_packet_received_hdl( | |
145 | struct oid_par_priv *poid_par_priv); | |
146 | uint oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv); | |
147 | uint oid_rt_pro_set_continuous_tx_hdl( | |
148 | struct oid_par_priv *poid_par_priv); | |
149 | uint oid_rt_pro_set_single_carrier_tx_hdl( | |
150 | struct oid_par_priv *poid_par_priv); | |
151 | uint oid_rt_pro_set_carrier_suppression_tx_hdl( | |
152 | struct oid_par_priv *poid_par_priv); | |
153 | uint oid_rt_pro_set_single_tone_tx_hdl( | |
154 | struct oid_par_priv *poid_par_priv); | |
155 | /* oid_rtl_seg_81_87 */ | |
156 | uint oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv); | |
157 | uint oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv); | |
158 | uint oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv); | |
159 | uint oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv); | |
160 | /* oid_rtl_seg_81_85 */ | |
161 | uint oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv); | |
162 | /* oid_rtl_seg_87_12_00 */ | |
163 | uint oid_rt_pro_encryption_ctrl_hdl(struct oid_par_priv *poid_par_priv); | |
164 | uint oid_rt_pro_add_sta_info_hdl(struct oid_par_priv *poid_par_priv); | |
165 | uint oid_rt_pro_dele_sta_info_hdl(struct oid_par_priv *poid_par_priv); | |
166 | uint oid_rt_pro_query_dr_variable_hdl( | |
167 | struct oid_par_priv *poid_par_priv); | |
168 | uint oid_rt_pro_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv); | |
169 | uint oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv); | |
170 | uint oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv); | |
171 | uint oid_rt_pro_rw_efuse_pgpkt_hdl(struct oid_par_priv *poid_par_priv); | |
172 | uint oid_rt_get_efuse_current_size_hdl( | |
173 | struct oid_par_priv *poid_par_priv); | |
174 | uint oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv); | |
175 | uint oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv); | |
176 | uint oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv); | |
177 | uint oid_rt_set_crystal_cap_hdl(struct oid_par_priv *poid_par_priv); | |
178 | uint oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv); | |
179 | uint oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv); | |
180 | uint oid_rt_pro_set_tx_agc_offset_hdl( | |
181 | struct oid_par_priv *poid_par_priv); | |
182 | uint oid_rt_pro_set_pkt_test_mode_hdl( | |
183 | struct oid_par_priv *poid_par_priv); | |
184 | uint oid_rt_get_thermal_meter_hdl( | |
185 | struct oid_par_priv *poid_par_priv); | |
186 | uint oid_rt_reset_phy_rx_packet_count_hdl( | |
187 | struct oid_par_priv *poid_par_priv); | |
188 | uint oid_rt_get_phy_rx_packet_received_hdl( | |
189 | struct oid_par_priv *poid_par_priv); | |
190 | uint oid_rt_get_phy_rx_packet_crc32_error_hdl( | |
191 | struct oid_par_priv *poid_par_priv); | |
192 | uint oid_rt_set_power_down_hdl( | |
193 | struct oid_par_priv *poid_par_priv); | |
194 | uint oid_rt_get_power_mode_hdl( | |
195 | struct oid_par_priv *poid_par_priv); | |
196 | #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */ | |
197 | /* This ifdef _MUST_ be left in!! */ | |
198 | static const struct oid_obj_priv oid_rtl_seg_81_80_00[] = { | |
199 | {1, &oid_null_function}, /*0x00 OID_RT_PRO_RESET_DUT */ | |
200 | {1, &oid_rt_pro_set_data_rate_hdl}, /*0x01*/ | |
201 | {1, &oid_rt_pro_start_test_hdl},/*0x02*/ | |
202 | {1, &oid_rt_pro_stop_test_hdl}, /*0x03*/ | |
203 | {1, &oid_null_function}, /*0x04 OID_RT_PRO_SET_PREAMBLE*/ | |
204 | {1, &oid_null_function}, /*0x05 OID_RT_PRO_SET_SCRAMBLER*/ | |
205 | {1, &oid_null_function}, /*0x06 OID_RT_PRO_SET_FILTER_BB*/ | |
206 | {1, &oid_null_function}, /*0x07 | |
207 | * OID_RT_PRO_SET_MANUAL_DIVERS_BB*/ | |
208 | {1, &oid_rt_pro_set_channel_direct_call_hdl}, /*0x08*/ | |
209 | {1, &oid_null_function}, /*0x09 | |
210 | * OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL*/ | |
211 | {1, &oid_null_function}, /*0x0A | |
212 | * OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL*/ | |
213 | {1, &oid_rt_pro_set_continuous_tx_hdl}, /*0x0B | |
214 | * OID_RT_PRO_SET_TX_CONTINUOUS_DIRECT_CALL*/ | |
215 | {1, &oid_rt_pro_set_single_carrier_tx_hdl}, /*0x0C | |
216 | * OID_RT_PRO_SET_SINGLE_CARRIER_TX_CONTINUOUS*/ | |
217 | {1, &oid_null_function}, /*0x0D | |
218 | * OID_RT_PRO_SET_TX_ANTENNA_BB*/ | |
219 | {1, &oid_rt_pro_set_antenna_bb_hdl}, /*0x0E*/ | |
220 | {1, &oid_null_function}, /*0x0F OID_RT_PRO_SET_CR_SCRAMBLER*/ | |
221 | {1, &oid_null_function}, /*0x10 OID_RT_PRO_SET_CR_NEW_FILTER*/ | |
222 | {1, &oid_rt_pro_set_tx_power_control_hdl}, /*0x11 | |
223 | * OID_RT_PRO_SET_TX_POWER_CONTROL*/ | |
224 | {1, &oid_null_function}, /*0x12 OID_RT_PRO_SET_CR_TX_CONFIG*/ | |
225 | {1, &oid_null_function}, /*0x13 | |
226 | * OID_RT_PRO_GET_TX_POWER_CONTROL*/ | |
227 | {1, &oid_null_function}, /*0x14 | |
228 | * OID_RT_PRO_GET_CR_SIGNAL_QUALITY*/ | |
229 | {1, &oid_null_function}, /*0x15 OID_RT_PRO_SET_CR_SETPOINT*/ | |
230 | {1, &oid_null_function}, /*0x16 OID_RT_PRO_SET_INTEGRATOR*/ | |
231 | {1, &oid_null_function}, /*0x17 OID_RT_PRO_SET_SIGNAL_QUALITY*/ | |
232 | {1, &oid_null_function}, /*0x18 OID_RT_PRO_GET_INTEGRATOR*/ | |
233 | {1, &oid_null_function}, /*0x19 OID_RT_PRO_GET_SIGNAL_QUALITY*/ | |
234 | {1, &oid_null_function}, /*0x1A OID_RT_PRO_QUERY_EEPROM_TYPE*/ | |
235 | {1, &oid_null_function}, /*0x1B OID_RT_PRO_WRITE_MAC_ADDRESS*/ | |
236 | {1, &oid_null_function}, /*0x1C OID_RT_PRO_READ_MAC_ADDRESS*/ | |
237 | {1, &oid_null_function}, /*0x1D OID_RT_PRO_WRITE_CIS_DATA*/ | |
238 | {1, &oid_null_function}, /*0x1E OID_RT_PRO_READ_CIS_DATA*/ | |
239 | {1, &oid_null_function} /*0x1F OID_RT_PRO_WRITE_POWER_CONTROL*/ | |
240 | }; | |
241 | ||
242 | static const struct oid_obj_priv oid_rtl_seg_81_80_20[] = { | |
243 | {1, &oid_null_function}, /*0x20 OID_RT_PRO_READ_POWER_CONTROL*/ | |
244 | {1, &oid_null_function}, /*0x21 OID_RT_PRO_WRITE_EEPROM*/ | |
245 | {1, &oid_null_function}, /*0x22 OID_RT_PRO_READ_EEPROM*/ | |
246 | {1, &oid_rt_pro_reset_tx_packet_sent_hdl}, /*0x23*/ | |
247 | {1, &oid_rt_pro_query_tx_packet_sent_hdl}, /*0x24*/ | |
248 | {1, &oid_rt_pro_reset_rx_packet_received_hdl}, /*0x25*/ | |
249 | {1, &oid_rt_pro_query_rx_packet_received_hdl}, /*0x26*/ | |
250 | {1, &oid_rt_pro_query_rx_packet_crc32_error_hdl},/*0x27*/ | |
251 | {1, &oid_null_function}, /*0x28 | |
252 | *OID_RT_PRO_QUERY_CURRENT_ADDRESS*/ | |
253 | {1, &oid_null_function}, /*0x29 | |
254 | *OID_RT_PRO_QUERY_PERMANENT_ADDRESS*/ | |
255 | {1, &oid_null_function}, /*0x2A | |
256 | *OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS*/ | |
257 | {1, &oid_rt_pro_set_carrier_suppression_tx_hdl},/*0x2B | |
258 | *OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX*/ | |
259 | {1, &oid_null_function}, /*0x2C OID_RT_PRO_RECEIVE_PACKET*/ | |
260 | {1, &oid_null_function}, /*0x2D OID_RT_PRO_WRITE_EEPROM_BYTE*/ | |
261 | {1, &oid_null_function}, /*0x2E OID_RT_PRO_READ_EEPROM_BYTE*/ | |
262 | {1, &oid_rt_pro_set_modulation_hdl} /*0x2F*/ | |
263 | }; | |
264 | ||
265 | static const struct oid_obj_priv oid_rtl_seg_81_80_40[] = { | |
266 | {1, &oid_null_function}, /*0x40*/ | |
267 | {1, &oid_null_function}, /*0x41*/ | |
268 | {1, &oid_null_function}, /*0x42*/ | |
269 | {1, &oid_rt_pro_set_single_tone_tx_hdl}, /*0x43*/ | |
270 | {1, &oid_null_function}, /*0x44*/ | |
271 | {1, &oid_null_function} /*0x45*/ | |
272 | }; | |
273 | ||
274 | static const struct oid_obj_priv oid_rtl_seg_81_80_80[] = { | |
275 | {1, &oid_null_function}, /*0x80 OID_RT_DRIVER_OPTION*/ | |
276 | {1, &oid_null_function}, /*0x81 OID_RT_RF_OFF*/ | |
277 | {1, &oid_null_function} /*0x82 OID_RT_AUTH_STATUS*/ | |
278 | ||
279 | }; | |
280 | ||
281 | static const struct oid_obj_priv oid_rtl_seg_81_85[] = { | |
282 | {1, &oid_rt_wireless_mode_hdl} /*0x00 OID_RT_WIRELESS_MODE*/ | |
283 | }; | |
284 | ||
285 | #else /* _RTL871X_MP_IOCTL_C_ */ | |
286 | extern struct oid_obj_priv oid_rtl_seg_81_80_00[32]; | |
287 | extern struct oid_obj_priv oid_rtl_seg_81_80_20[16]; | |
288 | extern struct oid_obj_priv oid_rtl_seg_81_80_40[6]; | |
289 | extern struct oid_obj_priv oid_rtl_seg_81_80_80[3]; | |
290 | extern struct oid_obj_priv oid_rtl_seg_81_85[1]; | |
291 | extern struct oid_obj_priv oid_rtl_seg_81_87[5]; | |
292 | extern struct oid_obj_priv oid_rtl_seg_87_11_00[32]; | |
293 | extern struct oid_obj_priv oid_rtl_seg_87_11_20[5]; | |
294 | extern struct oid_obj_priv oid_rtl_seg_87_11_50[2]; | |
295 | extern struct oid_obj_priv oid_rtl_seg_87_11_80[1]; | |
296 | extern struct oid_obj_priv oid_rtl_seg_87_11_B0[1]; | |
297 | extern struct oid_obj_priv oid_rtl_seg_87_11_F0[16]; | |
298 | extern struct oid_obj_priv oid_rtl_seg_87_12_00[32]; | |
299 | ||
300 | #endif /* _RTL871X_MP_IOCTL_C_ */ | |
301 | ||
302 | ||
303 | enum MP_MODE { | |
304 | MP_START_MODE, | |
305 | MP_STOP_MODE, | |
306 | MP_ERR_MODE | |
307 | }; | |
308 | ||
0593758e | 309 | struct rwreg_param { |
2865d42c LF |
310 | unsigned int offset; |
311 | unsigned int width; | |
312 | unsigned int value; | |
313 | }; | |
314 | ||
0593758e | 315 | struct bbreg_param { |
2865d42c LF |
316 | unsigned int offset; |
317 | unsigned int phymask; | |
318 | unsigned int value; | |
319 | }; | |
320 | ||
0593758e | 321 | struct txpower_param { |
2865d42c LF |
322 | unsigned int pwr_index; |
323 | }; | |
324 | ||
0593758e | 325 | struct datarate_param { |
2865d42c LF |
326 | unsigned int rate_index; |
327 | }; | |
328 | ||
329 | struct rfintfs_parm { | |
330 | unsigned int rfintfs; | |
331 | }; | |
332 | ||
333 | struct mp_xmit_packet { | |
334 | unsigned int len; | |
2865d42c LF |
335 | }; |
336 | ||
337 | struct psmode_param { | |
338 | unsigned int ps_mode; | |
339 | unsigned int smart_ps; | |
340 | }; | |
341 | ||
342 | struct mp_ioctl_handler { | |
343 | unsigned int paramsize; | |
344 | unsigned int (*handler)(struct oid_par_priv *poid_par_priv); | |
345 | unsigned int oid; | |
346 | }; | |
347 | ||
0593758e | 348 | struct mp_ioctl_param { |
2865d42c LF |
349 | unsigned int subcode; |
350 | unsigned int len; | |
351 | unsigned char data[0]; | |
352 | }; | |
353 | ||
354 | #define GEN_MP_IOCTL_SUBCODE(code) _MP_IOCTL_ ## code ## _CMD_ | |
355 | ||
356 | enum RTL871X_MP_IOCTL_SUBCODE { | |
357 | GEN_MP_IOCTL_SUBCODE(MP_START), /*0*/ | |
358 | GEN_MP_IOCTL_SUBCODE(MP_STOP), /*1*/ | |
359 | GEN_MP_IOCTL_SUBCODE(READ_REG), /*2*/ | |
360 | GEN_MP_IOCTL_SUBCODE(WRITE_REG), | |
361 | GEN_MP_IOCTL_SUBCODE(SET_CHANNEL), /*4*/ | |
362 | GEN_MP_IOCTL_SUBCODE(SET_TXPOWER), /*5*/ | |
363 | GEN_MP_IOCTL_SUBCODE(SET_DATARATE), /*6*/ | |
364 | GEN_MP_IOCTL_SUBCODE(READ_BB_REG), /*7*/ | |
365 | GEN_MP_IOCTL_SUBCODE(WRITE_BB_REG), | |
366 | GEN_MP_IOCTL_SUBCODE(READ_RF_REG), /*9*/ | |
367 | GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG), | |
368 | GEN_MP_IOCTL_SUBCODE(SET_RF_INTFS), | |
369 | GEN_MP_IOCTL_SUBCODE(IOCTL_XMIT_PACKET), /*12*/ | |
370 | GEN_MP_IOCTL_SUBCODE(PS_STATE), /*13*/ | |
371 | GEN_MP_IOCTL_SUBCODE(READ16_EEPROM), /*14*/ | |
372 | GEN_MP_IOCTL_SUBCODE(WRITE16_EEPROM), /*15*/ | |
373 | GEN_MP_IOCTL_SUBCODE(SET_PTM), /*16*/ | |
374 | GEN_MP_IOCTL_SUBCODE(READ_TSSI), /*17*/ | |
375 | GEN_MP_IOCTL_SUBCODE(CNTU_TX), /*18*/ | |
376 | GEN_MP_IOCTL_SUBCODE(SET_BANDWIDTH), /*19*/ | |
377 | GEN_MP_IOCTL_SUBCODE(SET_RX_PKT_TYPE), /*20*/ | |
378 | GEN_MP_IOCTL_SUBCODE(RESET_PHY_RX_PKT_CNT), /*21*/ | |
379 | GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_RECV), /*22*/ | |
380 | GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_ERROR), /*23*/ | |
381 | GEN_MP_IOCTL_SUBCODE(SET_POWER_DOWN), /*24*/ | |
382 | GEN_MP_IOCTL_SUBCODE(GET_THERMAL_METER), /*25*/ | |
383 | GEN_MP_IOCTL_SUBCODE(GET_POWER_MODE), /*26*/ | |
384 | GEN_MP_IOCTL_SUBCODE(EFUSE), /*27*/ | |
385 | GEN_MP_IOCTL_SUBCODE(EFUSE_MAP), /*28*/ | |
386 | GEN_MP_IOCTL_SUBCODE(GET_EFUSE_MAX_SIZE), /*29*/ | |
387 | GEN_MP_IOCTL_SUBCODE(GET_EFUSE_CURRENT_SIZE), /*30*/ | |
388 | GEN_MP_IOCTL_SUBCODE(SC_TX), /*31*/ | |
389 | GEN_MP_IOCTL_SUBCODE(CS_TX), /*32*/ | |
390 | GEN_MP_IOCTL_SUBCODE(ST_TX), /*33*/ | |
391 | GEN_MP_IOCTL_SUBCODE(SET_ANTENNA), /*34*/ | |
392 | MAX_MP_IOCTL_SUBCODE, | |
393 | }; | |
394 | ||
395 | unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv); | |
396 | ||
397 | #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */ | |
398 | /* This ifdef _MUST_ be left in!! */ | |
399 | ||
e3dc896b | 400 | static struct mp_ioctl_handler mp_ioctl_hdl[] = { |
2865d42c LF |
401 | {sizeof(u32), oid_rt_pro_start_test_hdl, |
402 | OID_RT_PRO_START_TEST},/*0*/ | |
403 | {sizeof(u32), oid_rt_pro_stop_test_hdl, | |
404 | OID_RT_PRO_STOP_TEST},/*1*/ | |
405 | {sizeof(struct rwreg_param), | |
406 | oid_rt_pro_read_register_hdl, | |
407 | OID_RT_PRO_READ_REGISTER},/*2*/ | |
408 | {sizeof(struct rwreg_param), | |
409 | oid_rt_pro_write_register_hdl, | |
410 | OID_RT_PRO_WRITE_REGISTER}, | |
411 | {sizeof(u32), | |
412 | oid_rt_pro_set_channel_direct_call_hdl, | |
413 | OID_RT_PRO_SET_CHANNEL_DIRECT_CALL}, | |
414 | {sizeof(struct txpower_param), | |
415 | oid_rt_pro_set_tx_power_control_hdl, | |
416 | OID_RT_PRO_SET_TX_POWER_CONTROL}, | |
417 | {sizeof(u32), | |
418 | oid_rt_pro_set_data_rate_hdl, | |
419 | OID_RT_PRO_SET_DATA_RATE}, | |
420 | {sizeof(struct bb_reg_param), | |
421 | oid_rt_pro_read_bb_reg_hdl, | |
422 | OID_RT_PRO_READ_BB_REG},/*7*/ | |
423 | {sizeof(struct bb_reg_param), | |
424 | oid_rt_pro_write_bb_reg_hdl, | |
425 | OID_RT_PRO_WRITE_BB_REG}, | |
426 | {sizeof(struct rwreg_param), | |
427 | oid_rt_pro_read_rf_reg_hdl, | |
428 | OID_RT_PRO_RF_READ_REGISTRY},/*9*/ | |
429 | {sizeof(struct rwreg_param), | |
430 | oid_rt_pro_write_rf_reg_hdl, | |
431 | OID_RT_PRO_RF_WRITE_REGISTRY}, | |
432 | {sizeof(struct rfintfs_parm), NULL, 0}, | |
433 | {0, &mp_ioctl_xmit_packet_hdl, 0},/*12*/ | |
434 | {sizeof(struct psmode_param), NULL, 0},/*13*/ | |
435 | {sizeof(struct eeprom_rw_param), NULL, 0},/*14*/ | |
436 | {sizeof(struct eeprom_rw_param), NULL, 0},/*15*/ | |
ac9bfc14 | 437 | {sizeof(unsigned char), NULL, 0},/*16*/ |
2865d42c LF |
438 | {sizeof(u32), NULL, 0},/*17*/ |
439 | {sizeof(u32), oid_rt_pro_set_continuous_tx_hdl, | |
440 | OID_RT_PRO_SET_CONTINUOUS_TX},/*18*/ | |
441 | {sizeof(u32), oid_rt_set_bandwidth_hdl, | |
442 | OID_RT_SET_BANDWIDTH},/*19*/ | |
443 | {sizeof(u32), oid_rt_set_rx_packet_type_hdl, | |
444 | OID_RT_SET_RX_PACKET_TYPE},/*20*/ | |
445 | {0, oid_rt_reset_phy_rx_packet_count_hdl, | |
446 | OID_RT_RESET_PHY_RX_PACKET_COUNT},/*21*/ | |
447 | {sizeof(u32), oid_rt_get_phy_rx_packet_received_hdl, | |
448 | OID_RT_GET_PHY_RX_PACKET_RECEIVED},/*22*/ | |
449 | {sizeof(u32), oid_rt_get_phy_rx_packet_crc32_error_hdl, | |
450 | OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR},/*23*/ | |
451 | {sizeof(unsigned char), oid_rt_set_power_down_hdl, | |
452 | OID_RT_SET_POWER_DOWN},/*24*/ | |
453 | {sizeof(u32), oid_rt_get_thermal_meter_hdl, | |
454 | OID_RT_PRO_GET_THERMAL_METER},/*25*/ | |
455 | {sizeof(u32), oid_rt_get_power_mode_hdl, | |
456 | OID_RT_GET_POWER_MODE},/*26*/ | |
457 | {sizeof(struct EFUSE_ACCESS_STRUCT), | |
458 | oid_rt_pro_efuse_hdl, OID_RT_PRO_EFUSE},/*27*/ | |
459 | {EFUSE_MAP_MAX_SIZE, oid_rt_pro_efuse_map_hdl, | |
460 | OID_RT_PRO_EFUSE_MAP},/*28*/ | |
461 | {sizeof(u32), oid_rt_get_efuse_max_size_hdl, | |
462 | OID_RT_GET_EFUSE_MAX_SIZE},/*29*/ | |
463 | {sizeof(u32), oid_rt_get_efuse_current_size_hdl, | |
464 | OID_RT_GET_EFUSE_CURRENT_SIZE},/*30*/ | |
465 | {sizeof(u32), oid_rt_pro_set_single_carrier_tx_hdl, | |
466 | OID_RT_PRO_SET_SINGLE_CARRIER_TX},/*31*/ | |
467 | {sizeof(u32), oid_rt_pro_set_carrier_suppression_tx_hdl, | |
468 | OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX},/*32*/ | |
469 | {sizeof(u32), oid_rt_pro_set_single_tone_tx_hdl, | |
470 | OID_RT_PRO_SET_SINGLE_TONE_TX},/*33*/ | |
471 | {sizeof(u32), oid_rt_pro_set_antenna_bb_hdl, | |
472 | OID_RT_PRO_SET_ANTENNA_BB},/*34*/ | |
473 | }; | |
474 | ||
475 | #else /* _RTL871X_MP_IOCTL_C_ */ | |
476 | extern struct mp_ioctl_handler mp_ioctl_hdl[]; | |
477 | #endif /* _RTL871X_MP_IOCTL_C_ */ | |
478 | ||
479 | #endif | |
480 |