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 ******************************************************************************/ 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 309 struct rwreg_param { 310 unsigned int offset; 311 unsigned int width; 312 unsigned int value; 313 }; 314 315 struct bbreg_param { 316 unsigned int offset; 317 unsigned int phymask; 318 unsigned int value; 319 }; 320 321 struct txpower_param { 322 unsigned int pwr_index; 323 }; 324 325 struct datarate_param { 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; 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 348 struct mp_ioctl_param { 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 400 static struct mp_ioctl_handler mp_ioctl_hdl[] = { 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*/ 437 {sizeof(unsigned char), NULL, 0},/*16*/ 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 481