1cf3e6881SAli Bahar /****************************************************************************** 2cf3e6881SAli Bahar * 3cf3e6881SAli Bahar * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved. 4cf3e6881SAli Bahar * 5cf3e6881SAli Bahar * This program is free software; you can redistribute it and/or modify it 6cf3e6881SAli Bahar * under the terms of version 2 of the GNU General Public License as 7cf3e6881SAli Bahar * published by the Free Software Foundation. 8cf3e6881SAli Bahar * 9cf3e6881SAli Bahar * This program is distributed in the hope that it will be useful, but WITHOUT 10cf3e6881SAli Bahar * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11cf3e6881SAli Bahar * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12cf3e6881SAli Bahar * more details. 13cf3e6881SAli Bahar * 14cf3e6881SAli Bahar * You should have received a copy of the GNU General Public License along with 15cf3e6881SAli Bahar * this program; if not, write to the Free Software Foundation, Inc., 16cf3e6881SAli Bahar * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 17cf3e6881SAli Bahar * 18cf3e6881SAli Bahar * Modifications for inclusion into the Linux staging tree are 19cf3e6881SAli Bahar * Copyright(c) 2010 Larry Finger. All rights reserved. 20cf3e6881SAli Bahar * 21cf3e6881SAli Bahar * Contact information: 22cf3e6881SAli Bahar * WLAN FAE <wlanfae@realtek.com> 23cf3e6881SAli Bahar * Larry Finger <Larry.Finger@lwfinger.net> 24cf3e6881SAli Bahar * 25cf3e6881SAli Bahar ******************************************************************************/ 262865d42cSLarry Finger #ifndef _RTL871X_MP_IOCTL_H 272865d42cSLarry Finger #define _RTL871X_MP_IOCTL_H 282865d42cSLarry Finger 292865d42cSLarry Finger #include "osdep_service.h" 302865d42cSLarry Finger #include "drv_types.h" 312865d42cSLarry Finger #include "mp_custom_oid.h" 322865d42cSLarry Finger #include "rtl871x_ioctl.h" 332865d42cSLarry Finger #include "rtl871x_ioctl_rtl.h" 342865d42cSLarry Finger #include "rtl8712_efuse.h" 352865d42cSLarry Finger 362865d42cSLarry Finger #define TESTFWCMDNUMBER 1000000 372865d42cSLarry Finger #define TEST_H2CINT_WAIT_TIME 500 382865d42cSLarry Finger #define TEST_C2HINT_WAIT_TIME 500 392865d42cSLarry Finger #define HCI_TEST_SYSCFG_HWMASK 1 402865d42cSLarry Finger #define _BUSCLK_40M (4 << 2) 412865d42cSLarry Finger 422865d42cSLarry Finger struct CFG_DBG_MSG_STRUCT { 432865d42cSLarry Finger u32 DebugLevel; 442865d42cSLarry Finger u32 DebugComponent_H32; 452865d42cSLarry Finger u32 DebugComponent_L32; 462865d42cSLarry Finger }; 472865d42cSLarry Finger 482865d42cSLarry Finger struct mp_rw_reg { 492865d42cSLarry Finger uint offset; 502865d42cSLarry Finger uint width; 512865d42cSLarry Finger u32 value; 522865d42cSLarry Finger }; 532865d42cSLarry Finger 542865d42cSLarry Finger /* for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM */ 552865d42cSLarry Finger struct eeprom_rw_param { 562865d42cSLarry Finger uint offset; 572865d42cSLarry Finger u16 value; 582865d42cSLarry Finger }; 592865d42cSLarry Finger 602865d42cSLarry Finger struct EFUSE_ACCESS_STRUCT { 612865d42cSLarry Finger u16 start_addr; 622865d42cSLarry Finger u16 cnts; 632865d42cSLarry Finger u8 data[0]; 642865d42cSLarry Finger }; 652865d42cSLarry Finger 662865d42cSLarry Finger struct burst_rw_reg { 672865d42cSLarry Finger uint offset; 682865d42cSLarry Finger uint len; 692865d42cSLarry Finger u8 Data[256]; 702865d42cSLarry Finger }; 712865d42cSLarry Finger 722865d42cSLarry Finger struct usb_vendor_req { 732865d42cSLarry Finger u8 bRequest; 742865d42cSLarry Finger u16 wValue; 752865d42cSLarry Finger u16 wIndex; 762865d42cSLarry Finger u16 wLength; 772865d42cSLarry Finger u8 u8Dir;/*0:OUT, 1:IN */ 782865d42cSLarry Finger u8 u8InData; 792865d42cSLarry Finger }; 802865d42cSLarry Finger 812865d42cSLarry Finger struct DR_VARIABLE_STRUCT { 822865d42cSLarry Finger u8 offset; 832865d42cSLarry Finger u32 variable; 842865d42cSLarry Finger }; 852865d42cSLarry Finger 862865d42cSLarry Finger int mp_start_joinbss(struct _adapter *padapter, struct ndis_802_11_ssid *pssid); 872865d42cSLarry Finger 882865d42cSLarry Finger /* oid_rtl_seg_87_11_00 */ 892865d42cSLarry Finger uint oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv); 902865d42cSLarry Finger uint oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv); 912865d42cSLarry Finger /* oid_rtl_seg_81_80_00 */ 922865d42cSLarry Finger uint oid_rt_pro_set_data_rate_hdl( 932865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 942865d42cSLarry Finger uint oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv); 952865d42cSLarry Finger uint oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv); 962865d42cSLarry Finger uint oid_rt_pro_set_channel_direct_call_hdl( 972865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 982865d42cSLarry Finger uint oid_rt_pro_set_antenna_bb_hdl( 992865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1002865d42cSLarry Finger uint oid_rt_pro_set_tx_power_control_hdl( 1012865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1022865d42cSLarry Finger /* oid_rtl_seg_81_80_20 */ 1032865d42cSLarry Finger uint oid_rt_pro_query_tx_packet_sent_hdl( 1042865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1052865d42cSLarry Finger uint oid_rt_pro_query_rx_packet_received_hdl( 1062865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1072865d42cSLarry Finger uint oid_rt_pro_query_rx_packet_crc32_error_hdl( 1082865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1092865d42cSLarry Finger uint oid_rt_pro_reset_tx_packet_sent_hdl( 1102865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1112865d42cSLarry Finger uint oid_rt_pro_reset_rx_packet_received_hdl( 1122865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1132865d42cSLarry Finger uint oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv); 1142865d42cSLarry Finger uint oid_rt_pro_set_continuous_tx_hdl( 1152865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1162865d42cSLarry Finger uint oid_rt_pro_set_single_carrier_tx_hdl( 1172865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1182865d42cSLarry Finger uint oid_rt_pro_set_carrier_suppression_tx_hdl( 1192865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1202865d42cSLarry Finger uint oid_rt_pro_set_single_tone_tx_hdl( 1212865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1222865d42cSLarry Finger /* oid_rtl_seg_81_87 */ 1232865d42cSLarry Finger uint oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv); 1242865d42cSLarry Finger uint oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv); 1252865d42cSLarry Finger uint oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv); 1262865d42cSLarry Finger uint oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv); 1272865d42cSLarry Finger /* oid_rtl_seg_81_85 */ 1282865d42cSLarry Finger uint oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv); 1292865d42cSLarry Finger uint oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv); 1302865d42cSLarry Finger uint oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv); 1312865d42cSLarry Finger uint oid_rt_get_efuse_current_size_hdl( 1322865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1332865d42cSLarry Finger uint oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv); 1342865d42cSLarry Finger uint oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv); 1352865d42cSLarry Finger uint oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv); 1362865d42cSLarry Finger uint oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv); 1372865d42cSLarry Finger uint oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv); 1382865d42cSLarry Finger uint oid_rt_get_thermal_meter_hdl( 1392865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1402865d42cSLarry Finger uint oid_rt_reset_phy_rx_packet_count_hdl( 1412865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1422865d42cSLarry Finger uint oid_rt_get_phy_rx_packet_received_hdl( 1432865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1442865d42cSLarry Finger uint oid_rt_get_phy_rx_packet_crc32_error_hdl( 1452865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1462865d42cSLarry Finger uint oid_rt_set_power_down_hdl( 1472865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1482865d42cSLarry Finger uint oid_rt_get_power_mode_hdl( 1492865d42cSLarry Finger struct oid_par_priv *poid_par_priv); 1502865d42cSLarry Finger #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */ 1512865d42cSLarry Finger /* This ifdef _MUST_ be left in!! */ 1522865d42cSLarry Finger static const struct oid_obj_priv oid_rtl_seg_81_80_00[] = { 1534c3ff837SDerek Robson /* 0x00 OID_RT_PRO_RESET_DUT */ 1544c3ff837SDerek Robson {1, oid_null_function}, 1554c3ff837SDerek Robson /* 0x01 */ 1564c3ff837SDerek Robson {1, oid_rt_pro_set_data_rate_hdl}, 1574c3ff837SDerek Robson /* 0x02 */ 1584c3ff837SDerek Robson {1, oid_rt_pro_start_test_hdl}, 1594c3ff837SDerek Robson /* 0x03 */ 1604c3ff837SDerek Robson {1, oid_rt_pro_stop_test_hdl}, 1614c3ff837SDerek Robson /* 0x04 OID_RT_PRO_SET_PREAMBLE */ 1624c3ff837SDerek Robson {1, oid_null_function}, 1634c3ff837SDerek Robson /* 0x05 OID_RT_PRO_SET_SCRAMBLER */ 1644c3ff837SDerek Robson {1, oid_null_function}, 1654c3ff837SDerek Robson /* 0x06 OID_RT_PRO_SET_FILTER_BB */ 1664c3ff837SDerek Robson {1, oid_null_function}, 1674c3ff837SDerek Robson /* 0x07 OID_RT_PRO_SET_MANUAL_DIVERS_BB */ 1684c3ff837SDerek Robson {1, oid_null_function}, 1694c3ff837SDerek Robson /* 0x08 */ 1704c3ff837SDerek Robson {1, oid_rt_pro_set_channel_direct_call_hdl}, 1714c3ff837SDerek Robson /* 0x09 OID_RT_PRO_SET_SLEEP_MODE_DIRECT_CALL */ 1724c3ff837SDerek Robson {1, oid_null_function}, 1734c3ff837SDerek Robson /* 0x0A OID_RT_PRO_SET_WAKE_MODE_DIRECT_CALL */ 1744c3ff837SDerek Robson {1, oid_null_function}, 1754c3ff837SDerek Robson /* 0x0B OID_RT_PRO_SET_TX_CONTINUOUS_DIRECT_CALL */ 1764c3ff837SDerek Robson {1, oid_rt_pro_set_continuous_tx_hdl}, 1774c3ff837SDerek Robson /* 0x0C OID_RT_PRO_SET_SINGLE_CARRIER_TX_CONTINUOUS */ 1784c3ff837SDerek Robson {1, oid_rt_pro_set_single_carrier_tx_hdl}, 1794c3ff837SDerek Robson /* 0x0D OID_RT_PRO_SET_TX_ANTENNA_BB */ 1804c3ff837SDerek Robson {1, oid_null_function}, 1814c3ff837SDerek Robson /* 0x0E */ 1824c3ff837SDerek Robson {1, oid_rt_pro_set_antenna_bb_hdl}, 1834c3ff837SDerek Robson /* 0x0F OID_RT_PRO_SET_CR_SCRAMBLER */ 1844c3ff837SDerek Robson {1, oid_null_function}, 1854c3ff837SDerek Robson /* 0x10 OID_RT_PRO_SET_CR_NEW_FILTER */ 1864c3ff837SDerek Robson {1, oid_null_function}, 1874c3ff837SDerek Robson /* 0x11 OID_RT_PRO_SET_TX_POWER_CONTROL */ 1884c3ff837SDerek Robson {1, oid_rt_pro_set_tx_power_control_hdl}, 1894c3ff837SDerek Robson /* 0x12 OID_RT_PRO_SET_CR_TX_CONFIG */ 1904c3ff837SDerek Robson {1, oid_null_function}, 1914c3ff837SDerek Robson /* 0x13 OID_RT_PRO_GET_TX_POWER_CONTROL */ 1924c3ff837SDerek Robson {1, oid_null_function}, 1934c3ff837SDerek Robson /* 0x14 OID_RT_PRO_GET_CR_SIGNAL_QUALITY */ 1944c3ff837SDerek Robson {1, oid_null_function}, 1954c3ff837SDerek Robson /* 0x15 OID_RT_PRO_SET_CR_SETPOINT */ 1964c3ff837SDerek Robson {1, oid_null_function}, 1974c3ff837SDerek Robson /* 0x16 OID_RT_PRO_SET_INTEGRATOR */ 1984c3ff837SDerek Robson {1, oid_null_function}, 1994c3ff837SDerek Robson /* 0x17 OID_RT_PRO_SET_SIGNAL_QUALITY */ 2004c3ff837SDerek Robson {1, oid_null_function}, 2014c3ff837SDerek Robson /* 0x18 OID_RT_PRO_GET_INTEGRATOR */ 2024c3ff837SDerek Robson {1, oid_null_function}, 2034c3ff837SDerek Robson /* 0x19 OID_RT_PRO_GET_SIGNAL_QUALITY */ 2044c3ff837SDerek Robson {1, oid_null_function}, 2054c3ff837SDerek Robson /* 0x1A OID_RT_PRO_QUERY_EEPROM_TYPE */ 2064c3ff837SDerek Robson {1, oid_null_function}, 2074c3ff837SDerek Robson /* 0x1B OID_RT_PRO_WRITE_MAC_ADDRESS */ 2084c3ff837SDerek Robson {1, oid_null_function}, 2094c3ff837SDerek Robson /* 0x1C OID_RT_PRO_READ_MAC_ADDRESS */ 2104c3ff837SDerek Robson {1, oid_null_function}, 2114c3ff837SDerek Robson /* 0x1D OID_RT_PRO_WRITE_CIS_DATA */ 2124c3ff837SDerek Robson {1, oid_null_function}, 2134c3ff837SDerek Robson /* 0x1E OID_RT_PRO_READ_CIS_DATA */ 2144c3ff837SDerek Robson {1, oid_null_function}, 2154c3ff837SDerek Robson /* 0x1F OID_RT_PRO_WRITE_POWER_CONTROL */ 2164c3ff837SDerek Robson {1, oid_null_function} 2172865d42cSLarry Finger }; 2182865d42cSLarry Finger 2192865d42cSLarry Finger static const struct oid_obj_priv oid_rtl_seg_81_80_20[] = { 2204c3ff837SDerek Robson /* 0x20 OID_RT_PRO_READ_POWER_CONTROL */ 2214c3ff837SDerek Robson {1, oid_null_function}, 2224c3ff837SDerek Robson /* 0x21 OID_RT_PRO_WRITE_EEPROM */ 2234c3ff837SDerek Robson {1, oid_null_function}, 2244c3ff837SDerek Robson /* 0x22 OID_RT_PRO_READ_EEPROM */ 2254c3ff837SDerek Robson {1, oid_null_function}, 2264c3ff837SDerek Robson /* 0x23 */ 2274c3ff837SDerek Robson {1, oid_rt_pro_reset_tx_packet_sent_hdl}, 2284c3ff837SDerek Robson /* 0x24 */ 2294c3ff837SDerek Robson {1, oid_rt_pro_query_tx_packet_sent_hdl}, 2304c3ff837SDerek Robson /* 0x25 */ 2314c3ff837SDerek Robson {1, oid_rt_pro_reset_rx_packet_received_hdl}, 2324c3ff837SDerek Robson /* 0x26 */ 2334c3ff837SDerek Robson {1, oid_rt_pro_query_rx_packet_received_hdl}, 2344c3ff837SDerek Robson /* 0x27 */ 2354c3ff837SDerek Robson {1, oid_rt_pro_query_rx_packet_crc32_error_hdl}, 2364c3ff837SDerek Robson /* 0x28 OID_RT_PRO_QUERY_CURRENT_ADDRESS */ 2374c3ff837SDerek Robson {1, oid_null_function}, 2384c3ff837SDerek Robson /* 0x29 OID_RT_PRO_QUERY_PERMANENT_ADDRESS */ 2394c3ff837SDerek Robson {1, oid_null_function}, 2404c3ff837SDerek Robson /* 0x2A OID_RT_PRO_SET_PHILIPS_RF_PARAMETERS */ 2414c3ff837SDerek Robson {1, oid_null_function}, 2424c3ff837SDerek Robson /* 0x2B OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX */ 2434c3ff837SDerek Robson {1, oid_rt_pro_set_carrier_suppression_tx_hdl}, 2444c3ff837SDerek Robson /* 0x2C OID_RT_PRO_RECEIVE_PACKET */ 2454c3ff837SDerek Robson {1, oid_null_function}, 2464c3ff837SDerek Robson /* 0x2D OID_RT_PRO_WRITE_EEPROM_BYTE */ 2474c3ff837SDerek Robson {1, oid_null_function}, 2484c3ff837SDerek Robson /* 0x2E OID_RT_PRO_READ_EEPROM_BYTE */ 2494c3ff837SDerek Robson {1, oid_null_function}, 2504c3ff837SDerek Robson /* 0x2F */ 2514c3ff837SDerek Robson {1, oid_rt_pro_set_modulation_hdl} 2522865d42cSLarry Finger }; 2532865d42cSLarry Finger 2542865d42cSLarry Finger static const struct oid_obj_priv oid_rtl_seg_81_80_40[] = { 255bce2fc58SAmitoj Kaur Chawla {1, oid_null_function}, /* 0x40 */ 256bce2fc58SAmitoj Kaur Chawla {1, oid_null_function}, /* 0x41 */ 257bce2fc58SAmitoj Kaur Chawla {1, oid_null_function}, /* 0x42 */ 258bce2fc58SAmitoj Kaur Chawla {1, oid_rt_pro_set_single_tone_tx_hdl}, /* 0x43 */ 259bce2fc58SAmitoj Kaur Chawla {1, oid_null_function}, /* 0x44 */ 260bce2fc58SAmitoj Kaur Chawla {1, oid_null_function} /* 0x45 */ 2612865d42cSLarry Finger }; 2622865d42cSLarry Finger 2632865d42cSLarry Finger static const struct oid_obj_priv oid_rtl_seg_81_80_80[] = { 264bce2fc58SAmitoj Kaur Chawla {1, oid_null_function}, /* 0x80 OID_RT_DRIVER_OPTION */ 265bce2fc58SAmitoj Kaur Chawla {1, oid_null_function}, /* 0x81 OID_RT_RF_OFF */ 266bce2fc58SAmitoj Kaur Chawla {1, oid_null_function} /* 0x82 OID_RT_AUTH_STATUS */ 2672865d42cSLarry Finger 2682865d42cSLarry Finger }; 2692865d42cSLarry Finger 2702865d42cSLarry Finger static const struct oid_obj_priv oid_rtl_seg_81_85[] = { 2714c3ff837SDerek Robson /* 0x00 OID_RT_WIRELESS_MODE */ 2724c3ff837SDerek Robson {1, oid_rt_wireless_mode_hdl} 2732865d42cSLarry Finger }; 2742865d42cSLarry Finger 2752865d42cSLarry Finger #else /* _RTL871X_MP_IOCTL_C_ */ 2762865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_81_80_00[32]; 2772865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_81_80_20[16]; 2782865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_81_80_40[6]; 2792865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_81_80_80[3]; 2802865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_81_85[1]; 2812865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_81_87[5]; 2822865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_00[32]; 2832865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_20[5]; 2842865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_50[2]; 2852865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_80[1]; 2862865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_B0[1]; 2872865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_F0[16]; 2882865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_12_00[32]; 2892865d42cSLarry Finger 2902865d42cSLarry Finger #endif /* _RTL871X_MP_IOCTL_C_ */ 2912865d42cSLarry Finger 2922865d42cSLarry Finger 2932865d42cSLarry Finger enum MP_MODE { 2942865d42cSLarry Finger MP_START_MODE, 2952865d42cSLarry Finger MP_STOP_MODE, 2962865d42cSLarry Finger MP_ERR_MODE 2972865d42cSLarry Finger }; 2982865d42cSLarry Finger 2992865d42cSLarry Finger struct rwreg_param { 3002865d42cSLarry Finger unsigned int offset; 3012865d42cSLarry Finger unsigned int width; 3022865d42cSLarry Finger unsigned int value; 3032865d42cSLarry Finger }; 3042865d42cSLarry Finger 3052865d42cSLarry Finger struct bbreg_param { 3062865d42cSLarry Finger unsigned int offset; 3072865d42cSLarry Finger unsigned int phymask; 3082865d42cSLarry Finger unsigned int value; 3092865d42cSLarry Finger }; 3102865d42cSLarry Finger 3112865d42cSLarry Finger struct txpower_param { 3122865d42cSLarry Finger unsigned int pwr_index; 3132865d42cSLarry Finger }; 3142865d42cSLarry Finger 3152865d42cSLarry Finger struct datarate_param { 3162865d42cSLarry Finger unsigned int rate_index; 3172865d42cSLarry Finger }; 3182865d42cSLarry Finger 3192865d42cSLarry Finger struct rfintfs_parm { 3202865d42cSLarry Finger unsigned int rfintfs; 3212865d42cSLarry Finger }; 3222865d42cSLarry Finger 3232865d42cSLarry Finger struct mp_xmit_packet { 3242865d42cSLarry Finger unsigned int len; 3252865d42cSLarry Finger }; 3262865d42cSLarry Finger 3272865d42cSLarry Finger struct psmode_param { 3282865d42cSLarry Finger unsigned int ps_mode; 3292865d42cSLarry Finger unsigned int smart_ps; 3302865d42cSLarry Finger }; 3312865d42cSLarry Finger 3322865d42cSLarry Finger struct mp_ioctl_handler { 3332865d42cSLarry Finger unsigned int paramsize; 3342865d42cSLarry Finger unsigned int (*handler)(struct oid_par_priv *poid_par_priv); 3352865d42cSLarry Finger unsigned int oid; 3362865d42cSLarry Finger }; 3372865d42cSLarry Finger 3382865d42cSLarry Finger struct mp_ioctl_param { 3392865d42cSLarry Finger unsigned int subcode; 3402865d42cSLarry Finger unsigned int len; 3412865d42cSLarry Finger unsigned char data[0]; 3422865d42cSLarry Finger }; 3432865d42cSLarry Finger 3442865d42cSLarry Finger #define GEN_MP_IOCTL_SUBCODE(code) _MP_IOCTL_ ## code ## _CMD_ 3452865d42cSLarry Finger 3462865d42cSLarry Finger enum RTL871X_MP_IOCTL_SUBCODE { 3472865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(MP_START), /*0*/ 3482865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(MP_STOP), /*1*/ 3492865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(READ_REG), /*2*/ 3502865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(WRITE_REG), 3512865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_CHANNEL), /*4*/ 3522865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_TXPOWER), /*5*/ 3532865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_DATARATE), /*6*/ 3542865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(READ_BB_REG), /*7*/ 3552865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(WRITE_BB_REG), 3562865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(READ_RF_REG), /*9*/ 3572865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG), 3582865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_RF_INTFS), 3592865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(IOCTL_XMIT_PACKET), /*12*/ 3602865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(PS_STATE), /*13*/ 3612865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(READ16_EEPROM), /*14*/ 3622865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(WRITE16_EEPROM), /*15*/ 3632865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_PTM), /*16*/ 3642865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(READ_TSSI), /*17*/ 3652865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(CNTU_TX), /*18*/ 3662865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_BANDWIDTH), /*19*/ 3672865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_RX_PKT_TYPE), /*20*/ 3682865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(RESET_PHY_RX_PKT_CNT), /*21*/ 3692865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_RECV), /*22*/ 3702865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_ERROR), /*23*/ 3712865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_POWER_DOWN), /*24*/ 3722865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(GET_THERMAL_METER), /*25*/ 3732865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(GET_POWER_MODE), /*26*/ 3742865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(EFUSE), /*27*/ 3752865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(EFUSE_MAP), /*28*/ 3762865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(GET_EFUSE_MAX_SIZE), /*29*/ 3772865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(GET_EFUSE_CURRENT_SIZE), /*30*/ 3782865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SC_TX), /*31*/ 3792865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(CS_TX), /*32*/ 3802865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(ST_TX), /*33*/ 3812865d42cSLarry Finger GEN_MP_IOCTL_SUBCODE(SET_ANTENNA), /*34*/ 3822865d42cSLarry Finger MAX_MP_IOCTL_SUBCODE, 3832865d42cSLarry Finger }; 3842865d42cSLarry Finger 3852865d42cSLarry Finger unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv); 3862865d42cSLarry Finger 3872865d42cSLarry Finger #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */ 3882865d42cSLarry Finger /* This ifdef _MUST_ be left in!! */ 3892865d42cSLarry Finger 390e3dc896bSLarry Finger static struct mp_ioctl_handler mp_ioctl_hdl[] = { 3912865d42cSLarry Finger {sizeof(u32), oid_rt_pro_start_test_hdl, 3922865d42cSLarry Finger OID_RT_PRO_START_TEST},/*0*/ 3932865d42cSLarry Finger {sizeof(u32), oid_rt_pro_stop_test_hdl, 3942865d42cSLarry Finger OID_RT_PRO_STOP_TEST},/*1*/ 3952865d42cSLarry Finger {sizeof(struct rwreg_param), 3962865d42cSLarry Finger oid_rt_pro_read_register_hdl, 3972865d42cSLarry Finger OID_RT_PRO_READ_REGISTER},/*2*/ 3982865d42cSLarry Finger {sizeof(struct rwreg_param), 3992865d42cSLarry Finger oid_rt_pro_write_register_hdl, 4002865d42cSLarry Finger OID_RT_PRO_WRITE_REGISTER}, 4012865d42cSLarry Finger {sizeof(u32), 4022865d42cSLarry Finger oid_rt_pro_set_channel_direct_call_hdl, 4032865d42cSLarry Finger OID_RT_PRO_SET_CHANNEL_DIRECT_CALL}, 4042865d42cSLarry Finger {sizeof(struct txpower_param), 4052865d42cSLarry Finger oid_rt_pro_set_tx_power_control_hdl, 4062865d42cSLarry Finger OID_RT_PRO_SET_TX_POWER_CONTROL}, 4072865d42cSLarry Finger {sizeof(u32), 4082865d42cSLarry Finger oid_rt_pro_set_data_rate_hdl, 4092865d42cSLarry Finger OID_RT_PRO_SET_DATA_RATE}, 4102865d42cSLarry Finger {sizeof(struct bb_reg_param), 4112865d42cSLarry Finger oid_rt_pro_read_bb_reg_hdl, 4122865d42cSLarry Finger OID_RT_PRO_READ_BB_REG},/*7*/ 4132865d42cSLarry Finger {sizeof(struct bb_reg_param), 4142865d42cSLarry Finger oid_rt_pro_write_bb_reg_hdl, 4152865d42cSLarry Finger OID_RT_PRO_WRITE_BB_REG}, 4162865d42cSLarry Finger {sizeof(struct rwreg_param), 4172865d42cSLarry Finger oid_rt_pro_read_rf_reg_hdl, 4182865d42cSLarry Finger OID_RT_PRO_RF_READ_REGISTRY},/*9*/ 4192865d42cSLarry Finger {sizeof(struct rwreg_param), 4202865d42cSLarry Finger oid_rt_pro_write_rf_reg_hdl, 4212865d42cSLarry Finger OID_RT_PRO_RF_WRITE_REGISTRY}, 4222865d42cSLarry Finger {sizeof(struct rfintfs_parm), NULL, 0}, 423bce2fc58SAmitoj Kaur Chawla {0, mp_ioctl_xmit_packet_hdl, 0},/*12*/ 4242865d42cSLarry Finger {sizeof(struct psmode_param), NULL, 0},/*13*/ 4252865d42cSLarry Finger {sizeof(struct eeprom_rw_param), NULL, 0},/*14*/ 4262865d42cSLarry Finger {sizeof(struct eeprom_rw_param), NULL, 0},/*15*/ 427ac9bfc14SAli Bahar {sizeof(unsigned char), NULL, 0},/*16*/ 4282865d42cSLarry Finger {sizeof(u32), NULL, 0},/*17*/ 4292865d42cSLarry Finger {sizeof(u32), oid_rt_pro_set_continuous_tx_hdl, 4302865d42cSLarry Finger OID_RT_PRO_SET_CONTINUOUS_TX},/*18*/ 4312865d42cSLarry Finger {sizeof(u32), oid_rt_set_bandwidth_hdl, 4322865d42cSLarry Finger OID_RT_SET_BANDWIDTH},/*19*/ 4332865d42cSLarry Finger {sizeof(u32), oid_rt_set_rx_packet_type_hdl, 4342865d42cSLarry Finger OID_RT_SET_RX_PACKET_TYPE},/*20*/ 4352865d42cSLarry Finger {0, oid_rt_reset_phy_rx_packet_count_hdl, 4362865d42cSLarry Finger OID_RT_RESET_PHY_RX_PACKET_COUNT},/*21*/ 4372865d42cSLarry Finger {sizeof(u32), oid_rt_get_phy_rx_packet_received_hdl, 4382865d42cSLarry Finger OID_RT_GET_PHY_RX_PACKET_RECEIVED},/*22*/ 4392865d42cSLarry Finger {sizeof(u32), oid_rt_get_phy_rx_packet_crc32_error_hdl, 4402865d42cSLarry Finger OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR},/*23*/ 4412865d42cSLarry Finger {sizeof(unsigned char), oid_rt_set_power_down_hdl, 4422865d42cSLarry Finger OID_RT_SET_POWER_DOWN},/*24*/ 4432865d42cSLarry Finger {sizeof(u32), oid_rt_get_thermal_meter_hdl, 4442865d42cSLarry Finger OID_RT_PRO_GET_THERMAL_METER},/*25*/ 4452865d42cSLarry Finger {sizeof(u32), oid_rt_get_power_mode_hdl, 4462865d42cSLarry Finger OID_RT_GET_POWER_MODE},/*26*/ 4472865d42cSLarry Finger {sizeof(struct EFUSE_ACCESS_STRUCT), 4482865d42cSLarry Finger oid_rt_pro_efuse_hdl, OID_RT_PRO_EFUSE},/*27*/ 4492865d42cSLarry Finger {EFUSE_MAP_MAX_SIZE, oid_rt_pro_efuse_map_hdl, 4502865d42cSLarry Finger OID_RT_PRO_EFUSE_MAP},/*28*/ 4512865d42cSLarry Finger {sizeof(u32), oid_rt_get_efuse_max_size_hdl, 4522865d42cSLarry Finger OID_RT_GET_EFUSE_MAX_SIZE},/*29*/ 4532865d42cSLarry Finger {sizeof(u32), oid_rt_get_efuse_current_size_hdl, 4542865d42cSLarry Finger OID_RT_GET_EFUSE_CURRENT_SIZE},/*30*/ 4552865d42cSLarry Finger {sizeof(u32), oid_rt_pro_set_single_carrier_tx_hdl, 4562865d42cSLarry Finger OID_RT_PRO_SET_SINGLE_CARRIER_TX},/*31*/ 4572865d42cSLarry Finger {sizeof(u32), oid_rt_pro_set_carrier_suppression_tx_hdl, 4582865d42cSLarry Finger OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX},/*32*/ 4592865d42cSLarry Finger {sizeof(u32), oid_rt_pro_set_single_tone_tx_hdl, 4602865d42cSLarry Finger OID_RT_PRO_SET_SINGLE_TONE_TX},/*33*/ 4612865d42cSLarry Finger {sizeof(u32), oid_rt_pro_set_antenna_bb_hdl, 4622865d42cSLarry Finger OID_RT_PRO_SET_ANTENNA_BB},/*34*/ 4632865d42cSLarry Finger }; 4642865d42cSLarry Finger 4652865d42cSLarry Finger #else /* _RTL871X_MP_IOCTL_C_ */ 4662865d42cSLarry Finger extern struct mp_ioctl_handler mp_ioctl_hdl[]; 4672865d42cSLarry Finger #endif /* _RTL871X_MP_IOCTL_C_ */ 4682865d42cSLarry Finger 4692865d42cSLarry Finger #endif 4702865d42cSLarry Finger 471