14f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li/****************************************************************************** 24f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 36a57b08e222f4e054a7e7160ef7426c5614c0cc0Larry Finger * Copyright(c) 2009-2012 Realtek Corporation. 44f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 54f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * This program is free software; you can redistribute it and/or modify it 64f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * under the terms of version 2 of the GNU General Public License as 74f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * published by the Free Software Foundation. 84f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 94f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * This program is distributed in the hope that it will be useful, but WITHOUT 104f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 114f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 124f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * more details. 134f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 144f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * You should have received a copy of the GNU General Public License along with 154f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * this program; if not, write to the Free Software Foundation, Inc., 164f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA 174f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 184f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * The full GNU General Public License is included in this distribution in the 194f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * file called LICENSE. 204f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 214f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * Contact Information: 224f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * wlanfae <wlanfae@realtek.com> 234f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * Realtek Corporation, No. 2, Innovation Road II, Hsinchu Science Park, 244f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * Hsinchu 300, Taiwan. 254f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 264f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * Larry Finger <Larry.Finger@lwfinger.net> 274f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li * 284f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li *****************************************************************************/ 294f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 304f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#ifndef __RTL92C_DM_H__ 314f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define __RTL92C_DM_H__ 324f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 334f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define HAL_DM_DIG_DISABLE BIT(0) 344f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define HAL_DM_HIPWR_DISABLE BIT(1) 354f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 364f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define OFDM_TABLE_LENGTH 37 374f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define OFDM_TABLE_SIZE_92D 43 384f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define CCK_TABLE_LENGTH 33 394f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 404f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define CCK_TABLE_SIZE 33 414f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 424f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define BW_AUTO_SWITCH_HIGH_LOW 25 434f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define BW_AUTO_SWITCH_LOW_HIGH 30 444f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 454f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_THRESH_HIGH 40 464f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_THRESH_LOW 35 474f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 484f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_FALSEALARM_THRESH_LOW 400 494f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_FALSEALARM_THRESH_HIGH 1000 504f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 514f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_MAX 0x3e 524f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_MIN 0x1c 534f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 544f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_FA_UPPER 0x32 554f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_FA_LOWER 0x20 564f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_FA_TH0 0x100 574f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_FA_TH1 0x400 584f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_FA_TH2 0x600 594f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 604f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_BACKOFF_MAX 12 614f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_BACKOFF_MIN -4 624f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_DIG_BACKOFF_DEFAULT 10 634f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 644f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define RXPATHSELECTION_SS_TH_lOW 30 654f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define RXPATHSELECTION_DIFF_TH 18 664f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 674f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_RATR_STA_INIT 0 684f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_RATR_STA_HIGH 1 694f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_RATR_STA_MIDDLE 2 704f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_RATR_STA_LOW 3 714f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 724f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define CTS2SELF_THVAL 30 734f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define REGC38_TH 20 744f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 754f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define WAIOTTHVAL 25 764f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 774f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define TXHIGHPWRLEVEL_NORMAL 0 784f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define TXHIGHPWRLEVEL_LEVEL1 1 794f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define TXHIGHPWRLEVEL_LEVEL2 2 804f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define TXHIGHPWRLEVEL_BT1 3 814f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define TXHIGHPWRLEVEL_BT2 4 824f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 834f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_TYPE_BYFW 0 844f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define DM_TYPE_BYDRIVER 1 854f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 864f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 874f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 884f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#define INDEX_MAPPING_NUM 13 894f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 904f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Listruct ps_t { 914f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 pre_ccastate; 924f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cur_ccasate; 934f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 944f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 pre_rfstate; 954f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cur_rfstate; 964f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 974f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li long rssi_val_min; 984f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 994f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1004f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Listruct dig_t { 1014f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 dig_enable_flag; 1024f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 dig_ext_port_stage; 1034f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1044f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u32 rssi_lowthresh; 1054f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u32 rssi_highthresh; 1064f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1074f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u32 fa_lowthresh; 1084f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u32 fa_highthresh; 1094f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1104f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cursta_connectctate; 1114f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 presta_connectstate; 1124f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 curmultista_connectstate; 1134f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1144f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 pre_igvalue; 1154f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cur_igvalue; 1164f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1174f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li char backoff_val; 1184f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li char backoff_val_range_max; 1194f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li char backoff_val_range_min; 1204f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 rx_gain_range_max; 1214f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 rx_gain_range_min; 1224f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 min_undecorated_pwdb_for_dm; 1234f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li long last_min_undecorated_pwdb_for_dm; 1244f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1254f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 pre_cck_pd_state; 1264f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cur_cck_pd_state; 1274f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1284f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 pre_cck_fa_state; 1294f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cur_cck_fa_state; 1304f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1314f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 pre_ccastate; 1324f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cur_ccasate; 1334f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1344f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 large_fa_hit; 1354f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 forbidden_igi; 1364f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u32 recover_cnt; 1374f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1384f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1394f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Listruct swat { 1404f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 failure_cnt; 1414f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 try_flag; 1424f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 stop_trying; 1434f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li long pre_rssi; 1444f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li long trying_threshold; 1454f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 cur_antenna; 1464f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li u8 pre_antenna; 1474f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1484f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1494f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Lienum tag_dynamic_init_gain_operation_type_definition { 1504f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_TYPE_THRESH_HIGH = 0, 1514f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_TYPE_THRESH_LOW = 1, 1524f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_TYPE_BACKOFF = 2, 1534f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_TYPE_RX_GAIN_MIN = 3, 1544f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_TYPE_RX_GAIN_MAX = 4, 1554f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_TYPE_ENABLE = 5, 1564f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_TYPE_DISABLE = 6, 1574f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_OP_TYPE_MAX 1584f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1594f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1604f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Lienum tag_cck_packet_detection_threshold_type_definition { 1614f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCK_PD_STAGE_LOWRSSI = 0, 1624f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCK_PD_STAGE_HIGHRSSI = 1, 1634f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCK_FA_STAGE_LOW = 2, 1644f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCK_FA_STAGE_HIGH = 3, 1654f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCK_PD_STAGE_MAX = 4, 1664f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1674f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1684f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Lienum dm_1r_cca { 1694f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCA_1R = 0, 1704f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCA_2R = 1, 1714f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li CCA_MAX = 2, 1724f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1734f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1744f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Lienum dm_rf { 1754f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li RF_SAVE = 0, 1764f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li RF_NORMAL = 1, 1774f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li RF_MAX = 2, 1784f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1794f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1804f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Lienum dm_sw_ant_switch { 1814f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li ANS_ANTENNA_B = 1, 1824f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li ANS_ANTENNA_A = 2, 1834f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li ANS_ANTENNA_MAX = 3, 1844f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1854f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1864f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Lienum dm_dig_ext_port_alg { 1874f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_EXT_PORT_STAGE_0 = 0, 1884f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_EXT_PORT_STAGE_1 = 1, 1894f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_EXT_PORT_STAGE_2 = 2, 1904f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_EXT_PORT_STAGE_3 = 3, 1914f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_EXT_PORT_STAGE_MAX = 4, 1924f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 1934f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 1944f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Lienum dm_dig_connect { 1954f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_STA_DISCONNECT = 0, 1964f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_STA_CONNECT = 1, 1974f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_STA_BEFORE_CONNECT = 2, 1984f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_MULTISTA_DISCONNECT = 3, 1994f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_MULTISTA_CONNECT = 4, 2004f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li DIG_CONNECT_MAX 2014f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li}; 2024f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 203ab049fbf5ea87fc92441fc5211c315d04a312ccaLarry Fingerextern struct dig_t de_digtable; 2044f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 2054f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Livoid rtl92d_dm_init(struct ieee80211_hw *hw); 2064f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Livoid rtl92d_dm_watchdog(struct ieee80211_hw *hw); 2074f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Livoid rtl92d_dm_init_edca_turbo(struct ieee80211_hw *hw); 2084f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Livoid rtl92d_dm_write_dig(struct ieee80211_hw *hw); 2094f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Livoid rtl92d_dm_check_txpower_tracking_thermal_meter(struct ieee80211_hw *hw); 2104f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Livoid rtl92d_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw); 2114f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li 2124f01358e5b8a4b0f67cfc7bf785756193006de96Chaoming Li#endif 213