10c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger/****************************************************************************** 20c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 39003a4aba4b040be265ce8ed51f6fe437d369453Larry Finger * Copyright(c) 2009-2012 Realtek Corporation. 40c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 50c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * This program is free software; you can redistribute it and/or modify it 60c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * under the terms of version 2 of the GNU General Public License as 70c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * published by the Free Software Foundation. 80c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 90c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * This program is distributed in the hope that it will be useful, but WITHOUT 100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * more details. 130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * You should have received a copy of the GNU General Public License along with 150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * this program; if not, write to the Free Software Foundation, Inc., 160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 180c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * The full GNU General Public License is included in this distribution in the 190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * file called LICENSE. 200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Contact Information: 220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * wlanfae <wlanfae@realtek.com> 230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Hsinchu 300, Taiwan. 250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * Larry Finger <Larry.Finger@lwfinger.net> 270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger * 280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger *****************************************************************************/ 290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#ifndef __RTL92C_PHY_H__ 310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define __RTL92C_PHY_H__ 320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define MAX_PRECMD_CNT 16 340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define MAX_RFDEPENDCMD_CNT 16 350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define MAX_POSTCMD_CNT 16 360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define MAX_DOZE_WAITING_TIMES_9x 64 380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define RT_CANNOT_IO(hw) false 400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define HIGHPOWER_RADIOA_ARRAYLEN 22 410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 42e0b5a5078675f58736787982af811244eeb98081Chaoming_Li#define IQK_ADDA_REG_NUM 16 430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define MAX_TOLERANCE 5 440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define IQK_DELAY_TIME 1 450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define APK_BB_REG_NUM 5 470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define APK_AFE_REG_NUM 16 480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define APK_CURVE_REG_NUM 4 490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define PATH_NUM 2 500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define LOOP_LIMIT 5 520c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define MAX_STALL_TIME 50 530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define AntennaDiversityValue 0x80 540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define MAX_TXPWR_IDX_NMODE_92S 63 550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define Reset_Cnt_Limit 3 560c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define IQK_ADDA_REG_NUM 16 580c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define IQK_MAC_REG_NUM 4 590c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 60e0b5a5078675f58736787982af811244eeb98081Chaoming_Li#define IQK_DELAY_TIME 1 61e0b5a5078675f58736787982af811244eeb98081Chaoming_Li 620c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define RF90_PATH_MAX 2 630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 640c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_MAC_ADDR 0X16 650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 660c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_CCK_TX_PWR_IDX 0x5A 670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_HT401S_TX_PWR_IDX 0x60 680c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_HT402S_TX_PWR_IDX_DIF 0x66 690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_HT20_TX_PWR_IDX_DIFF 0x69 700c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_OFDM_TX_PWR_IDX_DIFF 0x6C 710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 720c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_HT40_MAX_PWR_OFFSET 0x6F 730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_HT20_MAX_PWR_OFFSET 0x72 740c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_CHANNEL_PLAH 0x75 760c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_THERMAL_METER 0x78 770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_RF_OPTION 0x79 780c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_VERSION 0x7E 790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define CT_OFFSET_CUSTOMER_ID 0x7F 800c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#define RTL92C_MAX_PATH_NUM 2 82e0b5a5078675f58736787982af811244eeb98081Chaoming_Li 830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerenum swchnlcmd_id { 840c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger CMDID_END, 850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger CMDID_SET_TXPOWEROWER_LEVEL, 860c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger CMDID_BBREGWRITE10, 870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger CMDID_WRITEPORT_ULONG, 880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger CMDID_WRITEPORT_USHORT, 890c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger CMDID_WRITEPORT_UCHAR, 900c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger CMDID_RF_WRITEREG, 910c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 930c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct swchnlcmd { 940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger enum swchnlcmd_id cmdid; 950c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 para1; 960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 para2; 970c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 msdelay; 980c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 990c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1000c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerenum hw90_block_e { 1010c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger HW90_BLOCK_MAC = 0, 1020c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger HW90_BLOCK_PHY0 = 1, 1030c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger HW90_BLOCK_PHY1 = 2, 1040c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger HW90_BLOCK_RF = 3, 1050c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger HW90_BLOCK_MAXIMUM = 4, 1060c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1070c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerenum baseband_config_type { 1090c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger BASEBAND_CONFIG_PHY_REG = 0, 1100c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger BASEBAND_CONFIG_AGC_TAB = 1, 1110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1120c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerenum ra_offset_area { 1140c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger RA_OFFSET_LEGACY_OFDM1, 1150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger RA_OFFSET_LEGACY_OFDM2, 1160c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger RA_OFFSET_HT_OFDM1, 1170c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger RA_OFFSET_HT_OFDM2, 1180c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger RA_OFFSET_HT_OFDM3, 1190c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger RA_OFFSET_HT_OFDM4, 1200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger RA_OFFSET_HT_CCK, 1210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1230c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerenum antenna_path { 1240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_NONE, 1250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_D, 1260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_C, 1270c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_CD, 1280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_B, 1290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_BD, 1300c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_BC, 1310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_BCD, 1320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_A, 1330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_AD, 1340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_AC, 1350c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_ACD, 1360c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_AB, 1370c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_ABD, 1380c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_ABC, 1390c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger ANTENNA_ABCD 1400c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1410c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1420c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct r_antenna_select_ofdm { 1430c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 r_tx_antenna:4; 1440c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 r_ant_l:4; 1450c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 r_ant_non_ht:4; 1460c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 r_ant_ht1:4; 1470c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 r_ant_ht2:4; 1480c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 r_ant_ht_s1:4; 1490c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 r_ant_non_ht_s1:4; 1500c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 ofdm_txsc:2; 1510c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 reserved:2; 1520c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1530c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1540c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct r_antenna_select_cck { 1550c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 r_cckrx_enable_2:2; 1560c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 r_cckrx_enable:2; 1570c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 r_ccktx_enable:4; 1580c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1590c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1600c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct efuse_contents { 1610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 mac_addr[ETH_ALEN]; 1620c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 cck_tx_power_idx[6]; 1630c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht40_1s_tx_power_idx[6]; 1640c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht40_2s_tx_power_idx_diff[3]; 1650c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht20_tx_power_idx_diff[3]; 1660c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ofdm_tx_power_idx_diff[3]; 1670c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht40_max_power_offset[3]; 1680c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht20_max_power_offset[3]; 1690c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 channel_plan; 1700c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 thermal_meter; 1710c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 rf_option[5]; 1720c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 version; 1730c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 oem_id; 1740c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 regulatory; 1750c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1760c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 1770c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerstruct tx_power_struct { 1780c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 cck[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; 1790c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht40_1s[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; 1800c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht40_2s[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; 1810c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 ht20_diff[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; 1820c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 legacy_ht_diff[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; 1830c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 legacy_ht_txpowerdiff; 1840c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 groupht20[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; 1850c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 groupht40[RTL92C_MAX_PATH_NUM][CHANNEL_MAX_NUMBER]; 1860c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 pwrgroup_cnt; 1870c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 mcs_original_offset[4][16]; 1880c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger}; 1890c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 190e0b5a5078675f58736787982af811244eeb98081Chaoming_Libool rtl92c_phy_bb_config(struct ieee80211_hw *hw); 191e0b5a5078675f58736787982af811244eeb98081Chaoming_Liu32 rtl92c_phy_query_bb_reg(struct ieee80211_hw *hw, 1920c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 regaddr, u32 bitmask); 193e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_set_bb_reg(struct ieee80211_hw *hw, 1940c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 regaddr, u32 bitmask, u32 data); 195e0b5a5078675f58736787982af811244eeb98081Chaoming_Liu32 rtl92c_phy_query_rf_reg(struct ieee80211_hw *hw, 1960c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger enum radio_path rfpath, u32 regaddr, 1970c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 bitmask); 1981472d3a87586eb7529d1d85f7c888055650b7208Larry Fingerextern void rtl92ce_phy_set_rf_reg(struct ieee80211_hw *hw, 199e0b5a5078675f58736787982af811244eeb98081Chaoming_Li enum radio_path rfpath, u32 regaddr, 200e0b5a5078675f58736787982af811244eeb98081Chaoming_Li u32 bitmask, u32 data); 201e0b5a5078675f58736787982af811244eeb98081Chaoming_Libool rtl92c_phy_mac_config(struct ieee80211_hw *hw); 2021472d3a87586eb7529d1d85f7c888055650b7208Larry Fingerbool rtl92ce_phy_bb_config(struct ieee80211_hw *hw); 203e0b5a5078675f58736787982af811244eeb98081Chaoming_Libool rtl92c_phy_rf_config(struct ieee80211_hw *hw); 204e0b5a5078675f58736787982af811244eeb98081Chaoming_Libool rtl92c_phy_config_rf_with_feaderfile(struct ieee80211_hw *hw, 2050c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger enum radio_path rfpath); 206e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_get_hw_reg_originalvalue(struct ieee80211_hw *hw); 207e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_get_txpower_level(struct ieee80211_hw *hw, 2080c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger long *powerlevel); 209e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_set_txpower_level(struct ieee80211_hw *hw, u8 channel); 210e0b5a5078675f58736787982af811244eeb98081Chaoming_Libool rtl92c_phy_update_txpower_dbm(struct ieee80211_hw *hw, 2110c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger long power_indbm); 212e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_scan_operation_backup(struct ieee80211_hw *hw, 2130c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u8 operation); 214e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_set_bw_mode(struct ieee80211_hw *hw, 2150c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger enum nl80211_channel_type ch_type); 216e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_sw_chnl_callback(struct ieee80211_hw *hw); 217e0b5a5078675f58736787982af811244eeb98081Chaoming_Liu8 rtl92c_phy_sw_chnl(struct ieee80211_hw *hw); 218e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_iq_calibrate(struct ieee80211_hw *hw, bool b_recovery); 219e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid rtl92c_phy_set_beacon_hw_reg(struct ieee80211_hw *hw, 2200c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u16 beaconinterval); 2210c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92c_phy_ap_calibrate(struct ieee80211_hw *hw, char delta); 2220c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92c_phy_lc_calibrate(struct ieee80211_hw *hw); 223e0b5a5078675f58736787982af811244eeb98081Chaoming_Livoid _rtl92ce_phy_lc_calibrate(struct ieee80211_hw *hw, bool is2t); 2240c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92c_phy_set_rfpath_switch(struct ieee80211_hw *hw, bool bmain); 2250c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerbool rtl92c_phy_config_rf_with_headerfile(struct ieee80211_hw *hw, 2260c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger enum radio_path rfpath); 227e0b5a5078675f58736787982af811244eeb98081Chaoming_Libool rtl8192_phy_check_is_legal_rfpath(struct ieee80211_hw *hw, 2280c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger u32 rfpath); 2290c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerbool rtl92c_phy_set_io_cmd(struct ieee80211_hw *hw, enum io_type iotype); 2301472d3a87586eb7529d1d85f7c888055650b7208Larry Fingerbool rtl92ce_phy_set_rf_power_state(struct ieee80211_hw *hw, 2310c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger enum rf_pwrstate rfpwr_state); 2320c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92ce_phy_set_rf_on(struct ieee80211_hw *hw); 2330c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingerbool rtl92c_phy_set_io_cmd(struct ieee80211_hw *hw, enum io_type iotype); 2340c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Fingervoid rtl92c_phy_set_io(struct ieee80211_hw *hw); 2357ea4724036ed17ec811cb8082af7760f04484ef7Larry Fingervoid rtl92c_bb_block_on(struct ieee80211_hw *hw); 2361472d3a87586eb7529d1d85f7c888055650b7208Larry Fingeru32 _rtl92c_phy_rf_serial_read(struct ieee80211_hw *hw, 2371472d3a87586eb7529d1d85f7c888055650b7208Larry Finger enum radio_path rfpath, u32 offset); 2381472d3a87586eb7529d1d85f7c888055650b7208Larry Fingeru32 _rtl92c_phy_fw_rf_serial_read(struct ieee80211_hw *hw, 2391472d3a87586eb7529d1d85f7c888055650b7208Larry Finger enum radio_path rfpath, u32 offset); 2401472d3a87586eb7529d1d85f7c888055650b7208Larry Fingeru32 _rtl92c_phy_calculate_bit_shift(u32 bitmask); 2411472d3a87586eb7529d1d85f7c888055650b7208Larry Fingervoid _rtl92c_phy_rf_serial_write(struct ieee80211_hw *hw, 2421472d3a87586eb7529d1d85f7c888055650b7208Larry Finger enum radio_path rfpath, u32 offset, 2431472d3a87586eb7529d1d85f7c888055650b7208Larry Finger u32 data); 2441472d3a87586eb7529d1d85f7c888055650b7208Larry Fingervoid _rtl92c_phy_fw_rf_serial_write(struct ieee80211_hw *hw, 2451472d3a87586eb7529d1d85f7c888055650b7208Larry Finger enum radio_path rfpath, u32 offset, 2461472d3a87586eb7529d1d85f7c888055650b7208Larry Finger u32 data); 2471472d3a87586eb7529d1d85f7c888055650b7208Larry Fingervoid _rtl92c_store_pwrIndex_diffrate_offset(struct ieee80211_hw *hw, 2481472d3a87586eb7529d1d85f7c888055650b7208Larry Finger u32 regaddr, u32 bitmask, 2491472d3a87586eb7529d1d85f7c888055650b7208Larry Finger u32 data); 2501472d3a87586eb7529d1d85f7c888055650b7208Larry Fingerbool _rtl92ce_phy_config_mac_with_headerfile(struct ieee80211_hw *hw); 2511472d3a87586eb7529d1d85f7c888055650b7208Larry Fingervoid _rtl92c_phy_init_bb_rf_register_definition(struct ieee80211_hw *hw); 2521472d3a87586eb7529d1d85f7c888055650b7208Larry Fingerbool _rtl92c_phy_bb8192c_config_parafile(struct ieee80211_hw *hw); 2531472d3a87586eb7529d1d85f7c888055650b7208Larry Fingervoid _rtl92c_phy_set_rf_sleep(struct ieee80211_hw *hw); 254e0b5a5078675f58736787982af811244eeb98081Chaoming_Libool rtl92c_phy_set_rf_power_state(struct ieee80211_hw *hw, 255e0b5a5078675f58736787982af811244eeb98081Chaoming_Li enum rf_pwrstate rfpwr_state); 256d3bb1429a2c1470d1f84646c00e34dc6784ee06eLarry Fingerbool _rtl92ce_phy_config_bb_with_headerfile(struct ieee80211_hw *hw, 257d3bb1429a2c1470d1f84646c00e34dc6784ee06eLarry Finger u8 configtype); 258d3bb1429a2c1470d1f84646c00e34dc6784ee06eLarry Fingerbool _rtl92ce_phy_config_bb_with_pgheaderfile(struct ieee80211_hw *hw, 259d3bb1429a2c1470d1f84646c00e34dc6784ee06eLarry Finger u8 configtype); 260099fb8ab1e57e5d609ac686cc0ab6d1835a79155Larry Fingervoid rtl92ce_phy_set_bw_mode_callback(struct ieee80211_hw *hw); 2610c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger 2620c8173385e549f95cd80c3fff5aab87b4f881d8dLarry Finger#endif 263