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_pro_read_register_hdl(struct oid_par_priv *poid_par_priv); 90 uint oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv); 91 /* oid_rtl_seg_81_80_00 */ 92 uint oid_rt_pro_set_data_rate_hdl( 93 struct oid_par_priv *poid_par_priv); 94 uint oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv); 95 uint oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv); 96 uint oid_rt_pro_set_channel_direct_call_hdl( 97 struct oid_par_priv *poid_par_priv); 98 uint oid_rt_pro_set_antenna_bb_hdl( 99 struct oid_par_priv *poid_par_priv); 100 uint oid_rt_pro_set_tx_power_control_hdl( 101 struct oid_par_priv *poid_par_priv); 102 /* oid_rtl_seg_81_80_20 */ 103 uint oid_rt_pro_query_tx_packet_sent_hdl( 104 struct oid_par_priv *poid_par_priv); 105 uint oid_rt_pro_query_rx_packet_received_hdl( 106 struct oid_par_priv *poid_par_priv); 107 uint oid_rt_pro_query_rx_packet_crc32_error_hdl( 108 struct oid_par_priv *poid_par_priv); 109 uint oid_rt_pro_reset_tx_packet_sent_hdl( 110 struct oid_par_priv *poid_par_priv); 111 uint oid_rt_pro_reset_rx_packet_received_hdl( 112 struct oid_par_priv *poid_par_priv); 113 uint oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv); 114 uint oid_rt_pro_set_continuous_tx_hdl( 115 struct oid_par_priv *poid_par_priv); 116 uint oid_rt_pro_set_single_carrier_tx_hdl( 117 struct oid_par_priv *poid_par_priv); 118 uint oid_rt_pro_set_carrier_suppression_tx_hdl( 119 struct oid_par_priv *poid_par_priv); 120 uint oid_rt_pro_set_single_tone_tx_hdl( 121 struct oid_par_priv *poid_par_priv); 122 /* oid_rtl_seg_81_87 */ 123 uint oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv); 124 uint oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv); 125 uint oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv); 126 uint oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv); 127 /* oid_rtl_seg_81_85 */ 128 uint oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv); 129 uint oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv); 130 uint oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv); 131 uint oid_rt_get_efuse_current_size_hdl( 132 struct oid_par_priv *poid_par_priv); 133 uint oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv); 134 uint oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv); 135 uint oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv); 136 uint oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv); 137 uint oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv); 138 uint oid_rt_get_thermal_meter_hdl( 139 struct oid_par_priv *poid_par_priv); 140 uint oid_rt_reset_phy_rx_packet_count_hdl( 141 struct oid_par_priv *poid_par_priv); 142 uint oid_rt_get_phy_rx_packet_received_hdl( 143 struct oid_par_priv *poid_par_priv); 144 uint oid_rt_get_phy_rx_packet_crc32_error_hdl( 145 struct oid_par_priv *poid_par_priv); 146 uint oid_rt_set_power_down_hdl( 147 struct oid_par_priv *poid_par_priv); 148 uint oid_rt_get_power_mode_hdl( 149 struct oid_par_priv *poid_par_priv); 150 #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */ 151 /* This ifdef _MUST_ be left in!! */ 152 static const struct oid_obj_priv oid_rtl_seg_81_80_00[] = { 153 {1, &oid_null_function}, /*0x00 OID_RT_PRO_RESET_DUT */ 154 {1, &oid_rt_pro_set_data_rate_hdl}, /*0x01*/ 155 {1, &oid_rt_pro_start_test_hdl},/*0x02*/ 156 {1, &oid_rt_pro_stop_test_hdl}, /*0x03*/ 157 {1, &oid_null_function}, /*0x04 OID_RT_PRO_SET_PREAMBLE*/ 158 {1, &oid_null_function}, /*0x05 OID_RT_PRO_SET_SCRAMBLER*/ 159 {1, &oid_null_function}, /*0x06 OID_RT_PRO_SET_FILTER_BB*/ 160 {1, &oid_null_function}, /*0x07 161 * OID_RT_PRO_SET_MANUAL_DIVERS_BB*/ 162 {1, &oid_rt_pro_set_channel_direct_call_hdl}, /*0x08*/ 163 {1, &oid_null_function}, /*0x09 164 * OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL*/ 165 {1, &oid_null_function}, /*0x0A 166 * OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL*/ 167 {1, &oid_rt_pro_set_continuous_tx_hdl}, /*0x0B 168 * OID_RT_PRO_SET_TX_CONTINUOUS_DIRECT_CALL*/ 169 {1, &oid_rt_pro_set_single_carrier_tx_hdl}, /*0x0C 170 * OID_RT_PRO_SET_SINGLE_CARRIER_TX_CONTINUOUS*/ 171 {1, &oid_null_function}, /*0x0D 172 * OID_RT_PRO_SET_TX_ANTENNA_BB*/ 173 {1, &oid_rt_pro_set_antenna_bb_hdl}, /*0x0E*/ 174 {1, &oid_null_function}, /*0x0F OID_RT_PRO_SET_CR_SCRAMBLER*/ 175 {1, &oid_null_function}, /*0x10 OID_RT_PRO_SET_CR_NEW_FILTER*/ 176 {1, &oid_rt_pro_set_tx_power_control_hdl}, /*0x11 177 * OID_RT_PRO_SET_TX_POWER_CONTROL*/ 178 {1, &oid_null_function}, /*0x12 OID_RT_PRO_SET_CR_TX_CONFIG*/ 179 {1, &oid_null_function}, /*0x13 180 * OID_RT_PRO_GET_TX_POWER_CONTROL*/ 181 {1, &oid_null_function}, /*0x14 182 * OID_RT_PRO_GET_CR_SIGNAL_QUALITY*/ 183 {1, &oid_null_function}, /*0x15 OID_RT_PRO_SET_CR_SETPOINT*/ 184 {1, &oid_null_function}, /*0x16 OID_RT_PRO_SET_INTEGRATOR*/ 185 {1, &oid_null_function}, /*0x17 OID_RT_PRO_SET_SIGNAL_QUALITY*/ 186 {1, &oid_null_function}, /*0x18 OID_RT_PRO_GET_INTEGRATOR*/ 187 {1, &oid_null_function}, /*0x19 OID_RT_PRO_GET_SIGNAL_QUALITY*/ 188 {1, &oid_null_function}, /*0x1A OID_RT_PRO_QUERY_EEPROM_TYPE*/ 189 {1, &oid_null_function}, /*0x1B OID_RT_PRO_WRITE_MAC_ADDRESS*/ 190 {1, &oid_null_function}, /*0x1C OID_RT_PRO_READ_MAC_ADDRESS*/ 191 {1, &oid_null_function}, /*0x1D OID_RT_PRO_WRITE_CIS_DATA*/ 192 {1, &oid_null_function}, /*0x1E OID_RT_PRO_READ_CIS_DATA*/ 193 {1, &oid_null_function} /*0x1F OID_RT_PRO_WRITE_POWER_CONTROL*/ 194 }; 195 196 static const struct oid_obj_priv oid_rtl_seg_81_80_20[] = { 197 {1, &oid_null_function}, /*0x20 OID_RT_PRO_READ_POWER_CONTROL*/ 198 {1, &oid_null_function}, /*0x21 OID_RT_PRO_WRITE_EEPROM*/ 199 {1, &oid_null_function}, /*0x22 OID_RT_PRO_READ_EEPROM*/ 200 {1, &oid_rt_pro_reset_tx_packet_sent_hdl}, /*0x23*/ 201 {1, &oid_rt_pro_query_tx_packet_sent_hdl}, /*0x24*/ 202 {1, &oid_rt_pro_reset_rx_packet_received_hdl}, /*0x25*/ 203 {1, &oid_rt_pro_query_rx_packet_received_hdl}, /*0x26*/ 204 {1, &oid_rt_pro_query_rx_packet_crc32_error_hdl},/*0x27*/ 205 {1, &oid_null_function}, /*0x28 206 *OID_RT_PRO_QUERY_CURRENT_ADDRESS*/ 207 {1, &oid_null_function}, /*0x29 208 *OID_RT_PRO_QUERY_PERMANENT_ADDRESS*/ 209 {1, &oid_null_function}, /*0x2A 210 *OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS*/ 211 {1, &oid_rt_pro_set_carrier_suppression_tx_hdl},/*0x2B 212 *OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX*/ 213 {1, &oid_null_function}, /*0x2C OID_RT_PRO_RECEIVE_PACKET*/ 214 {1, &oid_null_function}, /*0x2D OID_RT_PRO_WRITE_EEPROM_BYTE*/ 215 {1, &oid_null_function}, /*0x2E OID_RT_PRO_READ_EEPROM_BYTE*/ 216 {1, &oid_rt_pro_set_modulation_hdl} /*0x2F*/ 217 }; 218 219 static const struct oid_obj_priv oid_rtl_seg_81_80_40[] = { 220 {1, &oid_null_function}, /*0x40*/ 221 {1, &oid_null_function}, /*0x41*/ 222 {1, &oid_null_function}, /*0x42*/ 223 {1, &oid_rt_pro_set_single_tone_tx_hdl}, /*0x43*/ 224 {1, &oid_null_function}, /*0x44*/ 225 {1, &oid_null_function} /*0x45*/ 226 }; 227 228 static const struct oid_obj_priv oid_rtl_seg_81_80_80[] = { 229 {1, &oid_null_function}, /*0x80 OID_RT_DRIVER_OPTION*/ 230 {1, &oid_null_function}, /*0x81 OID_RT_RF_OFF*/ 231 {1, &oid_null_function} /*0x82 OID_RT_AUTH_STATUS*/ 232 233 }; 234 235 static const struct oid_obj_priv oid_rtl_seg_81_85[] = { 236 {1, &oid_rt_wireless_mode_hdl} /*0x00 OID_RT_WIRELESS_MODE*/ 237 }; 238 239 #else /* _RTL871X_MP_IOCTL_C_ */ 240 extern struct oid_obj_priv oid_rtl_seg_81_80_00[32]; 241 extern struct oid_obj_priv oid_rtl_seg_81_80_20[16]; 242 extern struct oid_obj_priv oid_rtl_seg_81_80_40[6]; 243 extern struct oid_obj_priv oid_rtl_seg_81_80_80[3]; 244 extern struct oid_obj_priv oid_rtl_seg_81_85[1]; 245 extern struct oid_obj_priv oid_rtl_seg_81_87[5]; 246 extern struct oid_obj_priv oid_rtl_seg_87_11_00[32]; 247 extern struct oid_obj_priv oid_rtl_seg_87_11_20[5]; 248 extern struct oid_obj_priv oid_rtl_seg_87_11_50[2]; 249 extern struct oid_obj_priv oid_rtl_seg_87_11_80[1]; 250 extern struct oid_obj_priv oid_rtl_seg_87_11_B0[1]; 251 extern struct oid_obj_priv oid_rtl_seg_87_11_F0[16]; 252 extern struct oid_obj_priv oid_rtl_seg_87_12_00[32]; 253 254 #endif /* _RTL871X_MP_IOCTL_C_ */ 255 256 257 enum MP_MODE { 258 MP_START_MODE, 259 MP_STOP_MODE, 260 MP_ERR_MODE 261 }; 262 263 struct rwreg_param { 264 unsigned int offset; 265 unsigned int width; 266 unsigned int value; 267 }; 268 269 struct bbreg_param { 270 unsigned int offset; 271 unsigned int phymask; 272 unsigned int value; 273 }; 274 275 struct txpower_param { 276 unsigned int pwr_index; 277 }; 278 279 struct datarate_param { 280 unsigned int rate_index; 281 }; 282 283 struct rfintfs_parm { 284 unsigned int rfintfs; 285 }; 286 287 struct mp_xmit_packet { 288 unsigned int len; 289 }; 290 291 struct psmode_param { 292 unsigned int ps_mode; 293 unsigned int smart_ps; 294 }; 295 296 struct mp_ioctl_handler { 297 unsigned int paramsize; 298 unsigned int (*handler)(struct oid_par_priv *poid_par_priv); 299 unsigned int oid; 300 }; 301 302 struct mp_ioctl_param { 303 unsigned int subcode; 304 unsigned int len; 305 unsigned char data[0]; 306 }; 307 308 #define GEN_MP_IOCTL_SUBCODE(code) _MP_IOCTL_ ## code ## _CMD_ 309 310 enum RTL871X_MP_IOCTL_SUBCODE { 311 GEN_MP_IOCTL_SUBCODE(MP_START), /*0*/ 312 GEN_MP_IOCTL_SUBCODE(MP_STOP), /*1*/ 313 GEN_MP_IOCTL_SUBCODE(READ_REG), /*2*/ 314 GEN_MP_IOCTL_SUBCODE(WRITE_REG), 315 GEN_MP_IOCTL_SUBCODE(SET_CHANNEL), /*4*/ 316 GEN_MP_IOCTL_SUBCODE(SET_TXPOWER), /*5*/ 317 GEN_MP_IOCTL_SUBCODE(SET_DATARATE), /*6*/ 318 GEN_MP_IOCTL_SUBCODE(READ_BB_REG), /*7*/ 319 GEN_MP_IOCTL_SUBCODE(WRITE_BB_REG), 320 GEN_MP_IOCTL_SUBCODE(READ_RF_REG), /*9*/ 321 GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG), 322 GEN_MP_IOCTL_SUBCODE(SET_RF_INTFS), 323 GEN_MP_IOCTL_SUBCODE(IOCTL_XMIT_PACKET), /*12*/ 324 GEN_MP_IOCTL_SUBCODE(PS_STATE), /*13*/ 325 GEN_MP_IOCTL_SUBCODE(READ16_EEPROM), /*14*/ 326 GEN_MP_IOCTL_SUBCODE(WRITE16_EEPROM), /*15*/ 327 GEN_MP_IOCTL_SUBCODE(SET_PTM), /*16*/ 328 GEN_MP_IOCTL_SUBCODE(READ_TSSI), /*17*/ 329 GEN_MP_IOCTL_SUBCODE(CNTU_TX), /*18*/ 330 GEN_MP_IOCTL_SUBCODE(SET_BANDWIDTH), /*19*/ 331 GEN_MP_IOCTL_SUBCODE(SET_RX_PKT_TYPE), /*20*/ 332 GEN_MP_IOCTL_SUBCODE(RESET_PHY_RX_PKT_CNT), /*21*/ 333 GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_RECV), /*22*/ 334 GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_ERROR), /*23*/ 335 GEN_MP_IOCTL_SUBCODE(SET_POWER_DOWN), /*24*/ 336 GEN_MP_IOCTL_SUBCODE(GET_THERMAL_METER), /*25*/ 337 GEN_MP_IOCTL_SUBCODE(GET_POWER_MODE), /*26*/ 338 GEN_MP_IOCTL_SUBCODE(EFUSE), /*27*/ 339 GEN_MP_IOCTL_SUBCODE(EFUSE_MAP), /*28*/ 340 GEN_MP_IOCTL_SUBCODE(GET_EFUSE_MAX_SIZE), /*29*/ 341 GEN_MP_IOCTL_SUBCODE(GET_EFUSE_CURRENT_SIZE), /*30*/ 342 GEN_MP_IOCTL_SUBCODE(SC_TX), /*31*/ 343 GEN_MP_IOCTL_SUBCODE(CS_TX), /*32*/ 344 GEN_MP_IOCTL_SUBCODE(ST_TX), /*33*/ 345 GEN_MP_IOCTL_SUBCODE(SET_ANTENNA), /*34*/ 346 MAX_MP_IOCTL_SUBCODE, 347 }; 348 349 unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv); 350 351 #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */ 352 /* This ifdef _MUST_ be left in!! */ 353 354 static struct mp_ioctl_handler mp_ioctl_hdl[] = { 355 {sizeof(u32), oid_rt_pro_start_test_hdl, 356 OID_RT_PRO_START_TEST},/*0*/ 357 {sizeof(u32), oid_rt_pro_stop_test_hdl, 358 OID_RT_PRO_STOP_TEST},/*1*/ 359 {sizeof(struct rwreg_param), 360 oid_rt_pro_read_register_hdl, 361 OID_RT_PRO_READ_REGISTER},/*2*/ 362 {sizeof(struct rwreg_param), 363 oid_rt_pro_write_register_hdl, 364 OID_RT_PRO_WRITE_REGISTER}, 365 {sizeof(u32), 366 oid_rt_pro_set_channel_direct_call_hdl, 367 OID_RT_PRO_SET_CHANNEL_DIRECT_CALL}, 368 {sizeof(struct txpower_param), 369 oid_rt_pro_set_tx_power_control_hdl, 370 OID_RT_PRO_SET_TX_POWER_CONTROL}, 371 {sizeof(u32), 372 oid_rt_pro_set_data_rate_hdl, 373 OID_RT_PRO_SET_DATA_RATE}, 374 {sizeof(struct bb_reg_param), 375 oid_rt_pro_read_bb_reg_hdl, 376 OID_RT_PRO_READ_BB_REG},/*7*/ 377 {sizeof(struct bb_reg_param), 378 oid_rt_pro_write_bb_reg_hdl, 379 OID_RT_PRO_WRITE_BB_REG}, 380 {sizeof(struct rwreg_param), 381 oid_rt_pro_read_rf_reg_hdl, 382 OID_RT_PRO_RF_READ_REGISTRY},/*9*/ 383 {sizeof(struct rwreg_param), 384 oid_rt_pro_write_rf_reg_hdl, 385 OID_RT_PRO_RF_WRITE_REGISTRY}, 386 {sizeof(struct rfintfs_parm), NULL, 0}, 387 {0, &mp_ioctl_xmit_packet_hdl, 0},/*12*/ 388 {sizeof(struct psmode_param), NULL, 0},/*13*/ 389 {sizeof(struct eeprom_rw_param), NULL, 0},/*14*/ 390 {sizeof(struct eeprom_rw_param), NULL, 0},/*15*/ 391 {sizeof(unsigned char), NULL, 0},/*16*/ 392 {sizeof(u32), NULL, 0},/*17*/ 393 {sizeof(u32), oid_rt_pro_set_continuous_tx_hdl, 394 OID_RT_PRO_SET_CONTINUOUS_TX},/*18*/ 395 {sizeof(u32), oid_rt_set_bandwidth_hdl, 396 OID_RT_SET_BANDWIDTH},/*19*/ 397 {sizeof(u32), oid_rt_set_rx_packet_type_hdl, 398 OID_RT_SET_RX_PACKET_TYPE},/*20*/ 399 {0, oid_rt_reset_phy_rx_packet_count_hdl, 400 OID_RT_RESET_PHY_RX_PACKET_COUNT},/*21*/ 401 {sizeof(u32), oid_rt_get_phy_rx_packet_received_hdl, 402 OID_RT_GET_PHY_RX_PACKET_RECEIVED},/*22*/ 403 {sizeof(u32), oid_rt_get_phy_rx_packet_crc32_error_hdl, 404 OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR},/*23*/ 405 {sizeof(unsigned char), oid_rt_set_power_down_hdl, 406 OID_RT_SET_POWER_DOWN},/*24*/ 407 {sizeof(u32), oid_rt_get_thermal_meter_hdl, 408 OID_RT_PRO_GET_THERMAL_METER},/*25*/ 409 {sizeof(u32), oid_rt_get_power_mode_hdl, 410 OID_RT_GET_POWER_MODE},/*26*/ 411 {sizeof(struct EFUSE_ACCESS_STRUCT), 412 oid_rt_pro_efuse_hdl, OID_RT_PRO_EFUSE},/*27*/ 413 {EFUSE_MAP_MAX_SIZE, oid_rt_pro_efuse_map_hdl, 414 OID_RT_PRO_EFUSE_MAP},/*28*/ 415 {sizeof(u32), oid_rt_get_efuse_max_size_hdl, 416 OID_RT_GET_EFUSE_MAX_SIZE},/*29*/ 417 {sizeof(u32), oid_rt_get_efuse_current_size_hdl, 418 OID_RT_GET_EFUSE_CURRENT_SIZE},/*30*/ 419 {sizeof(u32), oid_rt_pro_set_single_carrier_tx_hdl, 420 OID_RT_PRO_SET_SINGLE_CARRIER_TX},/*31*/ 421 {sizeof(u32), oid_rt_pro_set_carrier_suppression_tx_hdl, 422 OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX},/*32*/ 423 {sizeof(u32), oid_rt_pro_set_single_tone_tx_hdl, 424 OID_RT_PRO_SET_SINGLE_TONE_TX},/*33*/ 425 {sizeof(u32), oid_rt_pro_set_antenna_bb_hdl, 426 OID_RT_PRO_SET_ANTENNA_BB},/*34*/ 427 }; 428 429 #else /* _RTL871X_MP_IOCTL_C_ */ 430 extern struct mp_ioctl_handler mp_ioctl_hdl[]; 431 #endif /* _RTL871X_MP_IOCTL_C_ */ 432 433 #endif 434 435