1e24c1f86SMichael Straube /* SPDX-License-Identifier: GPL-2.0 */
2cf3e6881SAli Bahar /******************************************************************************
3cf3e6881SAli Bahar  *
4cf3e6881SAli Bahar  * Copyright(c) 2007 - 2010 Realtek Corporation. All rights reserved.
5cf3e6881SAli Bahar  *
6cf3e6881SAli Bahar  * Modifications for inclusion into the Linux staging tree are
7cf3e6881SAli Bahar  * Copyright(c) 2010 Larry Finger. All rights reserved.
8cf3e6881SAli Bahar  *
9cf3e6881SAli Bahar  * Contact information:
10cf3e6881SAli Bahar  * WLAN FAE <wlanfae@realtek.com>
11cf3e6881SAli Bahar  * Larry Finger <Larry.Finger@lwfinger.net>
12cf3e6881SAli Bahar  *
13cf3e6881SAli Bahar  ******************************************************************************/
142865d42cSLarry Finger #ifndef _RTL871X_MP_IOCTL_H
152865d42cSLarry Finger #define _RTL871X_MP_IOCTL_H
162865d42cSLarry Finger 
172865d42cSLarry Finger #include "osdep_service.h"
182865d42cSLarry Finger #include "drv_types.h"
192865d42cSLarry Finger #include "mp_custom_oid.h"
202865d42cSLarry Finger #include "rtl871x_ioctl.h"
212865d42cSLarry Finger #include "rtl871x_ioctl_rtl.h"
222865d42cSLarry Finger #include "rtl8712_efuse.h"
232865d42cSLarry Finger 
242865d42cSLarry Finger #define TESTFWCMDNUMBER			1000000
252865d42cSLarry Finger #define TEST_H2CINT_WAIT_TIME		500
262865d42cSLarry Finger #define TEST_C2HINT_WAIT_TIME		500
272865d42cSLarry Finger #define HCI_TEST_SYSCFG_HWMASK		1
282865d42cSLarry Finger #define _BUSCLK_40M			(4 << 2)
292865d42cSLarry Finger 
302865d42cSLarry Finger struct CFG_DBG_MSG_STRUCT {
312865d42cSLarry Finger 	u32 DebugLevel;
322865d42cSLarry Finger 	u32 DebugComponent_H32;
332865d42cSLarry Finger 	u32 DebugComponent_L32;
342865d42cSLarry Finger };
352865d42cSLarry Finger 
362865d42cSLarry Finger struct mp_rw_reg {
372865d42cSLarry Finger 	uint offset;
382865d42cSLarry Finger 	uint width;
392865d42cSLarry Finger 	u32 value;
402865d42cSLarry Finger };
412865d42cSLarry Finger 
422865d42cSLarry Finger /* for OID_RT_PRO_READ16_EEPROM & OID_RT_PRO_WRITE16_EEPROM */
432865d42cSLarry Finger struct eeprom_rw_param {
442865d42cSLarry Finger 	uint offset;
452865d42cSLarry Finger 	u16 value;
462865d42cSLarry Finger };
472865d42cSLarry Finger 
482865d42cSLarry Finger struct EFUSE_ACCESS_STRUCT {
492865d42cSLarry Finger 	u16	start_addr;
502865d42cSLarry Finger 	u16	cnts;
515979afa2SGustavo A. R. Silva 	u8	data[];
522865d42cSLarry Finger };
532865d42cSLarry Finger 
542865d42cSLarry Finger struct burst_rw_reg {
552865d42cSLarry Finger 	uint offset;
562865d42cSLarry Finger 	uint len;
572865d42cSLarry Finger 	u8 Data[256];
582865d42cSLarry Finger };
592865d42cSLarry Finger 
602865d42cSLarry Finger struct usb_vendor_req {
612865d42cSLarry Finger 	u8	bRequest;
622865d42cSLarry Finger 	u16	wValue;
632865d42cSLarry Finger 	u16	wIndex;
642865d42cSLarry Finger 	u16	wLength;
652865d42cSLarry Finger 	u8	u8Dir;/*0:OUT, 1:IN */
662865d42cSLarry Finger 	u8	u8InData;
672865d42cSLarry Finger };
682865d42cSLarry Finger 
692865d42cSLarry Finger struct DR_VARIABLE_STRUCT {
702865d42cSLarry Finger 	u8 offset;
712865d42cSLarry Finger 	u32 variable;
722865d42cSLarry Finger };
732865d42cSLarry Finger 
742865d42cSLarry Finger /* oid_rtl_seg_87_11_00 */
752865d42cSLarry Finger uint oid_rt_pro_read_register_hdl(struct oid_par_priv *poid_par_priv);
762865d42cSLarry Finger uint oid_rt_pro_write_register_hdl(struct oid_par_priv *poid_par_priv);
772865d42cSLarry Finger /* oid_rtl_seg_81_80_00 */
782865d42cSLarry Finger uint oid_rt_pro_set_data_rate_hdl(
792865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
802865d42cSLarry Finger uint oid_rt_pro_start_test_hdl(struct oid_par_priv *poid_par_priv);
812865d42cSLarry Finger uint oid_rt_pro_stop_test_hdl(struct oid_par_priv *poid_par_priv);
822865d42cSLarry Finger uint oid_rt_pro_set_channel_direct_call_hdl(
832865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
842865d42cSLarry Finger uint oid_rt_pro_set_antenna_bb_hdl(
852865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
862865d42cSLarry Finger uint oid_rt_pro_set_tx_power_control_hdl(
872865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
882865d42cSLarry Finger /* oid_rtl_seg_81_80_20 */
892865d42cSLarry Finger uint oid_rt_pro_query_tx_packet_sent_hdl(
902865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
912865d42cSLarry Finger uint oid_rt_pro_query_rx_packet_received_hdl(
922865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
932865d42cSLarry Finger uint oid_rt_pro_query_rx_packet_crc32_error_hdl(
942865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
952865d42cSLarry Finger uint oid_rt_pro_reset_tx_packet_sent_hdl(
962865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
972865d42cSLarry Finger uint oid_rt_pro_reset_rx_packet_received_hdl(
982865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
992865d42cSLarry Finger uint oid_rt_pro_set_modulation_hdl(struct oid_par_priv *poid_par_priv);
1002865d42cSLarry Finger uint oid_rt_pro_set_continuous_tx_hdl(
1012865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1022865d42cSLarry Finger uint oid_rt_pro_set_single_carrier_tx_hdl(
1032865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1042865d42cSLarry Finger uint oid_rt_pro_set_carrier_suppression_tx_hdl(
1052865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1062865d42cSLarry Finger uint oid_rt_pro_set_single_tone_tx_hdl(
1072865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1082865d42cSLarry Finger /* oid_rtl_seg_81_87 */
1092865d42cSLarry Finger uint oid_rt_pro_write_bb_reg_hdl(struct oid_par_priv *poid_par_priv);
1102865d42cSLarry Finger uint oid_rt_pro_read_bb_reg_hdl(struct oid_par_priv *poid_par_priv);
1112865d42cSLarry Finger uint oid_rt_pro_write_rf_reg_hdl(struct oid_par_priv *poid_par_priv);
1122865d42cSLarry Finger uint oid_rt_pro_read_rf_reg_hdl(struct oid_par_priv *poid_par_priv);
1132865d42cSLarry Finger /* oid_rtl_seg_81_85 */
1142865d42cSLarry Finger uint oid_rt_wireless_mode_hdl(struct oid_par_priv *poid_par_priv);
1152865d42cSLarry Finger uint oid_rt_pro_read_efuse_hdl(struct oid_par_priv *poid_par_priv);
1162865d42cSLarry Finger uint oid_rt_pro_write_efuse_hdl(struct oid_par_priv *poid_par_priv);
1172865d42cSLarry Finger uint oid_rt_get_efuse_current_size_hdl(
1182865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1192865d42cSLarry Finger uint oid_rt_pro_efuse_hdl(struct oid_par_priv *poid_par_priv);
1202865d42cSLarry Finger uint oid_rt_pro_efuse_map_hdl(struct oid_par_priv *poid_par_priv);
1212865d42cSLarry Finger uint oid_rt_set_bandwidth_hdl(struct oid_par_priv *poid_par_priv);
1222865d42cSLarry Finger uint oid_rt_set_rx_packet_type_hdl(struct oid_par_priv *poid_par_priv);
1232865d42cSLarry Finger uint oid_rt_get_efuse_max_size_hdl(struct oid_par_priv *poid_par_priv);
1242865d42cSLarry Finger uint oid_rt_get_thermal_meter_hdl(
1252865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1262865d42cSLarry Finger uint oid_rt_reset_phy_rx_packet_count_hdl(
1272865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1282865d42cSLarry Finger uint oid_rt_get_phy_rx_packet_received_hdl(
1292865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1302865d42cSLarry Finger uint oid_rt_get_phy_rx_packet_crc32_error_hdl(
1312865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1322865d42cSLarry Finger uint oid_rt_set_power_down_hdl(
1332865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1342865d42cSLarry Finger uint oid_rt_get_power_mode_hdl(
1352865d42cSLarry Finger 				struct oid_par_priv *poid_par_priv);
1362865d42cSLarry Finger #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */
1372865d42cSLarry Finger /* This ifdef _MUST_ be left in!! */
1382865d42cSLarry Finger 
1392865d42cSLarry Finger #else /* _RTL871X_MP_IOCTL_C_ */
1402865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_81_87[5];
1412865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_00[32];
1422865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_20[5];
1432865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_50[2];
1442865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_80[1];
1452865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_B0[1];
1462865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_11_F0[16];
1472865d42cSLarry Finger extern struct oid_obj_priv oid_rtl_seg_87_12_00[32];
1482865d42cSLarry Finger 
1492865d42cSLarry Finger #endif /* _RTL871X_MP_IOCTL_C_ */
1502865d42cSLarry Finger 
1512865d42cSLarry Finger enum MP_MODE {
1522865d42cSLarry Finger 	MP_START_MODE,
1532865d42cSLarry Finger 	MP_STOP_MODE,
1542865d42cSLarry Finger 	MP_ERR_MODE
1552865d42cSLarry Finger };
1562865d42cSLarry Finger 
1572865d42cSLarry Finger struct rwreg_param {
1582865d42cSLarry Finger 	unsigned int offset;
1592865d42cSLarry Finger 	unsigned int width;
1602865d42cSLarry Finger 	unsigned int value;
1612865d42cSLarry Finger };
1622865d42cSLarry Finger 
1632865d42cSLarry Finger struct bbreg_param {
1642865d42cSLarry Finger 	unsigned int offset;
1652865d42cSLarry Finger 	unsigned int phymask;
1662865d42cSLarry Finger 	unsigned int value;
1672865d42cSLarry Finger };
1682865d42cSLarry Finger 
1692865d42cSLarry Finger struct txpower_param {
1702865d42cSLarry Finger 	unsigned int pwr_index;
1712865d42cSLarry Finger };
1722865d42cSLarry Finger 
1732865d42cSLarry Finger struct datarate_param {
1742865d42cSLarry Finger 	unsigned int rate_index;
1752865d42cSLarry Finger };
1762865d42cSLarry Finger 
1772865d42cSLarry Finger struct rfintfs_parm {
1782865d42cSLarry Finger 	unsigned int rfintfs;
1792865d42cSLarry Finger };
1802865d42cSLarry Finger 
1812865d42cSLarry Finger struct mp_xmit_packet {
1822865d42cSLarry Finger 	unsigned int len;
1832865d42cSLarry Finger };
1842865d42cSLarry Finger 
1852865d42cSLarry Finger struct psmode_param {
1862865d42cSLarry Finger 	unsigned int ps_mode;
1872865d42cSLarry Finger 	unsigned int smart_ps;
1882865d42cSLarry Finger };
1892865d42cSLarry Finger 
1902865d42cSLarry Finger struct mp_ioctl_handler {
1912865d42cSLarry Finger 	unsigned int paramsize;
1922865d42cSLarry Finger 	unsigned int (*handler)(struct oid_par_priv *poid_par_priv);
1932865d42cSLarry Finger 	unsigned int oid;
1942865d42cSLarry Finger };
1952865d42cSLarry Finger 
1962865d42cSLarry Finger struct mp_ioctl_param {
1972865d42cSLarry Finger 	unsigned int subcode;
1982865d42cSLarry Finger 	unsigned int len;
1995979afa2SGustavo A. R. Silva 	unsigned char data[];
2002865d42cSLarry Finger };
2012865d42cSLarry Finger 
2022865d42cSLarry Finger #define GEN_MP_IOCTL_SUBCODE(code) _MP_IOCTL_ ## code ## _CMD_
2032865d42cSLarry Finger 
2042865d42cSLarry Finger enum RTL871X_MP_IOCTL_SUBCODE {
2052865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(MP_START),			/*0*/
2062865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(MP_STOP),			/*1*/
2072865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(READ_REG),			/*2*/
2082865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(WRITE_REG),
2092865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_CHANNEL),		/*4*/
2102865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_TXPOWER),		/*5*/
2112865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_DATARATE),		/*6*/
2122865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(READ_BB_REG),		/*7*/
2132865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(WRITE_BB_REG),
2142865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(READ_RF_REG),		/*9*/
2152865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(WRITE_RF_REG),
2162865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_RF_INTFS),
2172865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(IOCTL_XMIT_PACKET),	/*12*/
2182865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(PS_STATE),			/*13*/
2192865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(READ16_EEPROM),		/*14*/
2202865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(WRITE16_EEPROM),		/*15*/
2212865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_PTM),			/*16*/
2222865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(READ_TSSI),		/*17*/
2232865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(CNTU_TX),			/*18*/
2242865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_BANDWIDTH),		/*19*/
2252865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_RX_PKT_TYPE),		/*20*/
2262865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(RESET_PHY_RX_PKT_CNT),	/*21*/
2272865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_RECV),	/*22*/
2282865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(GET_PHY_RX_PKT_ERROR),	/*23*/
2292865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_POWER_DOWN),		/*24*/
2302865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(GET_THERMAL_METER),	/*25*/
2312865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(GET_POWER_MODE),		/*26*/
2322865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(EFUSE),			/*27*/
2332865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(EFUSE_MAP),		/*28*/
2342865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(GET_EFUSE_MAX_SIZE),	/*29*/
2352865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(GET_EFUSE_CURRENT_SIZE),	/*30*/
2362865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SC_TX),			/*31*/
2372865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(CS_TX),			/*32*/
2382865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(ST_TX),			/*33*/
2392865d42cSLarry Finger 	GEN_MP_IOCTL_SUBCODE(SET_ANTENNA),		/*34*/
2402865d42cSLarry Finger 	MAX_MP_IOCTL_SUBCODE,
2412865d42cSLarry Finger };
2422865d42cSLarry Finger 
2432865d42cSLarry Finger unsigned int mp_ioctl_xmit_packet_hdl(struct oid_par_priv *poid_par_priv);
2442865d42cSLarry Finger 
2452865d42cSLarry Finger #ifdef _RTL871X_MP_IOCTL_C_ /* CAUTION!!! */
2462865d42cSLarry Finger /* This ifdef _MUST_ be left in!! */
2472865d42cSLarry Finger 
248e3dc896bSLarry Finger static struct mp_ioctl_handler mp_ioctl_hdl[] = {
2492865d42cSLarry Finger 	{sizeof(u32), oid_rt_pro_start_test_hdl,
2502865d42cSLarry Finger 			     OID_RT_PRO_START_TEST},/*0*/
2512865d42cSLarry Finger 	{sizeof(u32), oid_rt_pro_stop_test_hdl,
2522865d42cSLarry Finger 			     OID_RT_PRO_STOP_TEST},/*1*/
2532865d42cSLarry Finger 	{sizeof(struct rwreg_param),
2542865d42cSLarry Finger 			     oid_rt_pro_read_register_hdl,
2552865d42cSLarry Finger 			     OID_RT_PRO_READ_REGISTER},/*2*/
2562865d42cSLarry Finger 	{sizeof(struct rwreg_param),
2572865d42cSLarry Finger 			     oid_rt_pro_write_register_hdl,
2582865d42cSLarry Finger 			     OID_RT_PRO_WRITE_REGISTER},
2592865d42cSLarry Finger 	{sizeof(u32),
2602865d42cSLarry Finger 			     oid_rt_pro_set_channel_direct_call_hdl,
2612865d42cSLarry Finger 			     OID_RT_PRO_SET_CHANNEL_DIRECT_CALL},
2622865d42cSLarry Finger 	{sizeof(struct txpower_param),
2632865d42cSLarry Finger 			     oid_rt_pro_set_tx_power_control_hdl,
2642865d42cSLarry Finger 			     OID_RT_PRO_SET_TX_POWER_CONTROL},
2652865d42cSLarry Finger 	{sizeof(u32),
2662865d42cSLarry Finger 			     oid_rt_pro_set_data_rate_hdl,
2672865d42cSLarry Finger 			     OID_RT_PRO_SET_DATA_RATE},
2682865d42cSLarry Finger 	{sizeof(struct bb_reg_param),
2692865d42cSLarry Finger 			     oid_rt_pro_read_bb_reg_hdl,
2702865d42cSLarry Finger 			     OID_RT_PRO_READ_BB_REG},/*7*/
2712865d42cSLarry Finger 	{sizeof(struct bb_reg_param),
2722865d42cSLarry Finger 			     oid_rt_pro_write_bb_reg_hdl,
2732865d42cSLarry Finger 			     OID_RT_PRO_WRITE_BB_REG},
2742865d42cSLarry Finger 	{sizeof(struct rwreg_param),
2752865d42cSLarry Finger 			     oid_rt_pro_read_rf_reg_hdl,
2762865d42cSLarry Finger 			     OID_RT_PRO_RF_READ_REGISTRY},/*9*/
2772865d42cSLarry Finger 	{sizeof(struct rwreg_param),
2782865d42cSLarry Finger 			     oid_rt_pro_write_rf_reg_hdl,
2792865d42cSLarry Finger 			     OID_RT_PRO_RF_WRITE_REGISTRY},
2802865d42cSLarry Finger 	{sizeof(struct rfintfs_parm), NULL, 0},
281bce2fc58SAmitoj Kaur Chawla 	{0, mp_ioctl_xmit_packet_hdl, 0},/*12*/
2822865d42cSLarry Finger 	{sizeof(struct psmode_param), NULL, 0},/*13*/
2832865d42cSLarry Finger 	{sizeof(struct eeprom_rw_param), NULL, 0},/*14*/
2842865d42cSLarry Finger 	{sizeof(struct eeprom_rw_param), NULL, 0},/*15*/
285ac9bfc14SAli Bahar 	{sizeof(unsigned char), NULL, 0},/*16*/
2862865d42cSLarry Finger 	{sizeof(u32), NULL, 0},/*17*/
2872865d42cSLarry Finger 	{sizeof(u32), oid_rt_pro_set_continuous_tx_hdl,
2882865d42cSLarry Finger 			     OID_RT_PRO_SET_CONTINUOUS_TX},/*18*/
2892865d42cSLarry Finger 	{sizeof(u32), oid_rt_set_bandwidth_hdl,
2902865d42cSLarry Finger 			     OID_RT_SET_BANDWIDTH},/*19*/
2912865d42cSLarry Finger 	{sizeof(u32), oid_rt_set_rx_packet_type_hdl,
2922865d42cSLarry Finger 			     OID_RT_SET_RX_PACKET_TYPE},/*20*/
2932865d42cSLarry Finger 	{0, oid_rt_reset_phy_rx_packet_count_hdl,
2942865d42cSLarry Finger 			     OID_RT_RESET_PHY_RX_PACKET_COUNT},/*21*/
2952865d42cSLarry Finger 	{sizeof(u32), oid_rt_get_phy_rx_packet_received_hdl,
2962865d42cSLarry Finger 			     OID_RT_GET_PHY_RX_PACKET_RECEIVED},/*22*/
2972865d42cSLarry Finger 	{sizeof(u32), oid_rt_get_phy_rx_packet_crc32_error_hdl,
2982865d42cSLarry Finger 			     OID_RT_GET_PHY_RX_PACKET_CRC32_ERROR},/*23*/
2992865d42cSLarry Finger 	{sizeof(unsigned char), oid_rt_set_power_down_hdl,
3002865d42cSLarry Finger 			     OID_RT_SET_POWER_DOWN},/*24*/
3012865d42cSLarry Finger 	{sizeof(u32), oid_rt_get_thermal_meter_hdl,
3022865d42cSLarry Finger 			     OID_RT_PRO_GET_THERMAL_METER},/*25*/
3032865d42cSLarry Finger 	{sizeof(u32), oid_rt_get_power_mode_hdl,
3042865d42cSLarry Finger 			     OID_RT_GET_POWER_MODE},/*26*/
3052865d42cSLarry Finger 	{sizeof(struct EFUSE_ACCESS_STRUCT),
3062865d42cSLarry Finger 			     oid_rt_pro_efuse_hdl, OID_RT_PRO_EFUSE},/*27*/
3072865d42cSLarry Finger 	{EFUSE_MAP_MAX_SIZE, oid_rt_pro_efuse_map_hdl,
3082865d42cSLarry Finger 			     OID_RT_PRO_EFUSE_MAP},/*28*/
3092865d42cSLarry Finger 	{sizeof(u32), oid_rt_get_efuse_max_size_hdl,
3102865d42cSLarry Finger 			     OID_RT_GET_EFUSE_MAX_SIZE},/*29*/
3112865d42cSLarry Finger 	{sizeof(u32), oid_rt_get_efuse_current_size_hdl,
3122865d42cSLarry Finger 			     OID_RT_GET_EFUSE_CURRENT_SIZE},/*30*/
3132865d42cSLarry Finger 	{sizeof(u32), oid_rt_pro_set_single_carrier_tx_hdl,
3142865d42cSLarry Finger 			     OID_RT_PRO_SET_SINGLE_CARRIER_TX},/*31*/
3152865d42cSLarry Finger 	{sizeof(u32), oid_rt_pro_set_carrier_suppression_tx_hdl,
3162865d42cSLarry Finger 			     OID_RT_PRO_SET_CARRIER_SUPPRESSION_TX},/*32*/
3172865d42cSLarry Finger 	{sizeof(u32), oid_rt_pro_set_single_tone_tx_hdl,
3182865d42cSLarry Finger 			     OID_RT_PRO_SET_SINGLE_TONE_TX},/*33*/
3192865d42cSLarry Finger 	{sizeof(u32), oid_rt_pro_set_antenna_bb_hdl,
3202865d42cSLarry Finger 			     OID_RT_PRO_SET_ANTENNA_BB},/*34*/
3212865d42cSLarry Finger };
3222865d42cSLarry Finger 
3232865d42cSLarry Finger #else /* _RTL871X_MP_IOCTL_C_ */
3242865d42cSLarry Finger extern struct mp_ioctl_handler mp_ioctl_hdl[];
3252865d42cSLarry Finger #endif /* _RTL871X_MP_IOCTL_C_ */
3262865d42cSLarry Finger 
3272865d42cSLarry Finger #endif
3282865d42cSLarry Finger 
329