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