162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright(c) 2009-2013 Realtek Corporation.*/ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef __RTL88E_DM_H__ 562306a36Sopenharmony_ci#define __RTL88E_DM_H__ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#define MAIN_ANT 0 862306a36Sopenharmony_ci#define AUX_ANT 1 962306a36Sopenharmony_ci#define MAIN_ANT_CG_TRX 1 1062306a36Sopenharmony_ci#define AUX_ANT_CG_TRX 0 1162306a36Sopenharmony_ci#define MAIN_ANT_CGCS_RX 0 1262306a36Sopenharmony_ci#define AUX_ANT_CGCS_RX 1 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci/*RF REG LIST*/ 1562306a36Sopenharmony_ci#define DM_REG_RF_MODE_11N 0x00 1662306a36Sopenharmony_ci#define DM_REG_RF_0B_11N 0x0B 1762306a36Sopenharmony_ci#define DM_REG_CHNBW_11N 0x18 1862306a36Sopenharmony_ci#define DM_REG_T_METER_11N 0x24 1962306a36Sopenharmony_ci#define DM_REG_RF_25_11N 0x25 2062306a36Sopenharmony_ci#define DM_REG_RF_26_11N 0x26 2162306a36Sopenharmony_ci#define DM_REG_RF_27_11N 0x27 2262306a36Sopenharmony_ci#define DM_REG_RF_2B_11N 0x2B 2362306a36Sopenharmony_ci#define DM_REG_RF_2C_11N 0x2C 2462306a36Sopenharmony_ci#define DM_REG_RXRF_A3_11N 0x3C 2562306a36Sopenharmony_ci#define DM_REG_T_METER_92D_11N 0x42 2662306a36Sopenharmony_ci#define DM_REG_T_METER_88E_11N 0x42 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci/*BB REG LIST*/ 2962306a36Sopenharmony_ci/*PAGE 8 */ 3062306a36Sopenharmony_ci#define DM_REG_BB_CTRL_11N 0x800 3162306a36Sopenharmony_ci#define DM_REG_RF_PIN_11N 0x804 3262306a36Sopenharmony_ci#define DM_REG_PSD_CTRL_11N 0x808 3362306a36Sopenharmony_ci#define DM_REG_TX_ANT_CTRL_11N 0x80C 3462306a36Sopenharmony_ci#define DM_REG_BB_PWR_SAV5_11N 0x818 3562306a36Sopenharmony_ci#define DM_REG_CCK_RPT_FORMAT_11N 0x824 3662306a36Sopenharmony_ci#define DM_REG_RX_DEFAULT_A_11N 0x858 3762306a36Sopenharmony_ci#define DM_REG_RX_DEFAULT_B_11N 0x85A 3862306a36Sopenharmony_ci#define DM_REG_BB_PWR_SAV3_11N 0x85C 3962306a36Sopenharmony_ci#define DM_REG_ANTSEL_CTRL_11N 0x860 4062306a36Sopenharmony_ci#define DM_REG_RX_ANT_CTRL_11N 0x864 4162306a36Sopenharmony_ci#define DM_REG_PIN_CTRL_11N 0x870 4262306a36Sopenharmony_ci#define DM_REG_BB_PWR_SAV1_11N 0x874 4362306a36Sopenharmony_ci#define DM_REG_ANTSEL_PATH_11N 0x878 4462306a36Sopenharmony_ci#define DM_REG_BB_3WIRE_11N 0x88C 4562306a36Sopenharmony_ci#define DM_REG_SC_CNT_11N 0x8C4 4662306a36Sopenharmony_ci#define DM_REG_PSD_DATA_11N 0x8B4 4762306a36Sopenharmony_ci/*PAGE 9*/ 4862306a36Sopenharmony_ci#define DM_REG_ANT_MAPPING1_11N 0x914 4962306a36Sopenharmony_ci#define DM_REG_ANT_MAPPING2_11N 0x918 5062306a36Sopenharmony_ci/*PAGE A*/ 5162306a36Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA1_11N 0xA00 5262306a36Sopenharmony_ci#define DM_REG_CCK_CCA_11N 0xA0A 5362306a36Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA2_11N 0xA0C 5462306a36Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA3_11N 0xA10 5562306a36Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA4_11N 0xA14 5662306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA1_11N 0xA22 5762306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA2_11N 0xA23 5862306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA3_11N 0xA24 5962306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA4_11N 0xA25 6062306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA5_11N 0xA26 6162306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA6_11N 0xA27 6262306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA7_11N 0xA28 6362306a36Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA8_11N 0xA29 6462306a36Sopenharmony_ci#define DM_REG_CCK_FA_RST_11N 0xA2C 6562306a36Sopenharmony_ci#define DM_REG_CCK_FA_MSB_11N 0xA58 6662306a36Sopenharmony_ci#define DM_REG_CCK_FA_LSB_11N 0xA5C 6762306a36Sopenharmony_ci#define DM_REG_CCK_CCA_CNT_11N 0xA60 6862306a36Sopenharmony_ci#define DM_REG_BB_PWR_SAV4_11N 0xA74 6962306a36Sopenharmony_ci/*PAGE B */ 7062306a36Sopenharmony_ci#define DM_REG_LNA_SWITCH_11N 0xB2C 7162306a36Sopenharmony_ci#define DM_REG_PATH_SWITCH_11N 0xB30 7262306a36Sopenharmony_ci#define DM_REG_RSSI_CTRL_11N 0xB38 7362306a36Sopenharmony_ci#define DM_REG_CONFIG_ANTA_11N 0xB68 7462306a36Sopenharmony_ci#define DM_REG_RSSI_BT_11N 0xB9C 7562306a36Sopenharmony_ci/*PAGE C */ 7662306a36Sopenharmony_ci#define DM_REG_OFDM_FA_HOLDC_11N 0xC00 7762306a36Sopenharmony_ci#define DM_REG_RX_PATH_11N 0xC04 7862306a36Sopenharmony_ci#define DM_REG_TRMUX_11N 0xC08 7962306a36Sopenharmony_ci#define DM_REG_OFDM_FA_RSTC_11N 0xC0C 8062306a36Sopenharmony_ci#define DM_REG_RXIQI_MATRIX_11N 0xC14 8162306a36Sopenharmony_ci#define DM_REG_TXIQK_MATRIX_LSB1_11N 0xC4C 8262306a36Sopenharmony_ci#define DM_REG_IGI_A_11N 0xC50 8362306a36Sopenharmony_ci#define DM_REG_ANTDIV_PARA2_11N 0xC54 8462306a36Sopenharmony_ci#define DM_REG_IGI_B_11N 0xC58 8562306a36Sopenharmony_ci#define DM_REG_ANTDIV_PARA3_11N 0xC5C 8662306a36Sopenharmony_ci#define DM_REG_BB_PWR_SAV2_11N 0xC70 8762306a36Sopenharmony_ci#define DM_REG_RX_OFF_11N 0xC7C 8862306a36Sopenharmony_ci#define DM_REG_TXIQK_MATRIXA_11N 0xC80 8962306a36Sopenharmony_ci#define DM_REG_TXIQK_MATRIXB_11N 0xC88 9062306a36Sopenharmony_ci#define DM_REG_TXIQK_MATRIXA_LSB2_11N 0xC94 9162306a36Sopenharmony_ci#define DM_REG_TXIQK_MATRIXB_LSB2_11N 0xC9C 9262306a36Sopenharmony_ci#define DM_REG_RXIQK_MATRIX_LSB_11N 0xCA0 9362306a36Sopenharmony_ci#define DM_REG_ANTDIV_PARA1_11N 0xCA4 9462306a36Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE1_11N 0xCF0 9562306a36Sopenharmony_ci/*PAGE D */ 9662306a36Sopenharmony_ci#define DM_REG_OFDM_FA_RSTD_11N 0xD00 9762306a36Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE2_11N 0xDA0 9862306a36Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE3_11N 0xDA4 9962306a36Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE4_11N 0xDA8 10062306a36Sopenharmony_ci/*PAGE E */ 10162306a36Sopenharmony_ci#define DM_REG_TXAGC_A_6_18_11N 0xE00 10262306a36Sopenharmony_ci#define DM_REG_TXAGC_A_24_54_11N 0xE04 10362306a36Sopenharmony_ci#define DM_REG_TXAGC_A_1_MCS32_11N 0xE08 10462306a36Sopenharmony_ci#define DM_REG_TXAGC_A_MCS0_3_11N 0xE10 10562306a36Sopenharmony_ci#define DM_REG_TXAGC_A_MCS4_7_11N 0xE14 10662306a36Sopenharmony_ci#define DM_REG_TXAGC_A_MCS8_11_11N 0xE18 10762306a36Sopenharmony_ci#define DM_REG_TXAGC_A_MCS12_15_11N 0xE1C 10862306a36Sopenharmony_ci#define DM_REG_FPGA0_IQK_11N 0xE28 10962306a36Sopenharmony_ci#define DM_REG_TXIQK_TONE_A_11N 0xE30 11062306a36Sopenharmony_ci#define DM_REG_RXIQK_TONE_A_11N 0xE34 11162306a36Sopenharmony_ci#define DM_REG_TXIQK_PI_A_11N 0xE38 11262306a36Sopenharmony_ci#define DM_REG_RXIQK_PI_A_11N 0xE3C 11362306a36Sopenharmony_ci#define DM_REG_TXIQK_11N 0xE40 11462306a36Sopenharmony_ci#define DM_REG_RXIQK_11N 0xE44 11562306a36Sopenharmony_ci#define DM_REG_IQK_AGC_PTS_11N 0xE48 11662306a36Sopenharmony_ci#define DM_REG_IQK_AGC_RSP_11N 0xE4C 11762306a36Sopenharmony_ci#define DM_REG_BLUETOOTH_11N 0xE6C 11862306a36Sopenharmony_ci#define DM_REG_RX_WAIT_CCA_11N 0xE70 11962306a36Sopenharmony_ci#define DM_REG_TX_CCK_RFON_11N 0xE74 12062306a36Sopenharmony_ci#define DM_REG_TX_CCK_BBON_11N 0xE78 12162306a36Sopenharmony_ci#define DM_REG_OFDM_RFON_11N 0xE7C 12262306a36Sopenharmony_ci#define DM_REG_OFDM_BBON_11N 0xE80 12362306a36Sopenharmony_ci#define DM_REG_TX2RX_11N 0xE84 12462306a36Sopenharmony_ci#define DM_REG_TX2TX_11N 0xE88 12562306a36Sopenharmony_ci#define DM_REG_RX_CCK_11N 0xE8C 12662306a36Sopenharmony_ci#define DM_REG_RX_OFDM_11N 0xED0 12762306a36Sopenharmony_ci#define DM_REG_RX_WAIT_RIFS_11N 0xED4 12862306a36Sopenharmony_ci#define DM_REG_RX2RX_11N 0xED8 12962306a36Sopenharmony_ci#define DM_REG_STANDBY_11N 0xEDC 13062306a36Sopenharmony_ci#define DM_REG_SLEEP_11N 0xEE0 13162306a36Sopenharmony_ci#define DM_REG_PMPD_ANAEN_11N 0xEEC 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci/*MAC REG LIST*/ 13462306a36Sopenharmony_ci#define DM_REG_BB_RST_11N 0x02 13562306a36Sopenharmony_ci#define DM_REG_ANTSEL_PIN_11N 0x4C 13662306a36Sopenharmony_ci#define DM_REG_EARLY_MODE_11N 0x4D0 13762306a36Sopenharmony_ci#define DM_REG_RSSI_MONITOR_11N 0x4FE 13862306a36Sopenharmony_ci#define DM_REG_EDCA_VO_11N 0x500 13962306a36Sopenharmony_ci#define DM_REG_EDCA_VI_11N 0x504 14062306a36Sopenharmony_ci#define DM_REG_EDCA_BE_11N 0x508 14162306a36Sopenharmony_ci#define DM_REG_EDCA_BK_11N 0x50C 14262306a36Sopenharmony_ci#define DM_REG_TXPAUSE_11N 0x522 14362306a36Sopenharmony_ci#define DM_REG_RESP_TX_11N 0x6D8 14462306a36Sopenharmony_ci#define DM_REG_ANT_TRAIN_PARA1_11N 0x7b0 14562306a36Sopenharmony_ci#define DM_REG_ANT_TRAIN_PARA2_11N 0x7b4 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ci 14862306a36Sopenharmony_ci/*DIG Related*/ 14962306a36Sopenharmony_ci#define DM_BIT_IGI_11N 0x0000007F 15062306a36Sopenharmony_ci 15162306a36Sopenharmony_ci#define HAL_DM_DIG_DISABLE BIT(0) 15262306a36Sopenharmony_ci#define HAL_DM_HIPWR_DISABLE BIT(1) 15362306a36Sopenharmony_ci 15462306a36Sopenharmony_ci#define OFDM_TABLE_LENGTH 43 15562306a36Sopenharmony_ci#define CCK_TABLE_LENGTH 33 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci#define OFDM_TABLE_SIZE 43 15862306a36Sopenharmony_ci#define CCK_TABLE_SIZE 33 15962306a36Sopenharmony_ci 16062306a36Sopenharmony_ci#define BW_AUTO_SWITCH_HIGH_LOW 25 16162306a36Sopenharmony_ci#define BW_AUTO_SWITCH_LOW_HIGH 30 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci#define DM_DIG_FA_UPPER 0x3e 16462306a36Sopenharmony_ci#define DM_DIG_FA_LOWER 0x1e 16562306a36Sopenharmony_ci#define DM_DIG_FA_TH0 0x200 16662306a36Sopenharmony_ci#define DM_DIG_FA_TH1 0x300 16762306a36Sopenharmony_ci#define DM_DIG_FA_TH2 0x400 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci#define RXPATHSELECTION_SS_TH_W 30 17062306a36Sopenharmony_ci#define RXPATHSELECTION_DIFF_TH 18 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci#define DM_RATR_STA_INIT 0 17362306a36Sopenharmony_ci#define DM_RATR_STA_HIGH 1 17462306a36Sopenharmony_ci#define DM_RATR_STA_MIDDLE 2 17562306a36Sopenharmony_ci#define DM_RATR_STA_LOW 3 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ci#define CTS2SELF_THVAL 30 17862306a36Sopenharmony_ci#define REGC38_TH 20 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci#define WAIOTTHVAL 25 18162306a36Sopenharmony_ci 18262306a36Sopenharmony_ci#define TXHIGHPWRLEVEL_NORMAL 0 18362306a36Sopenharmony_ci#define TXHIGHPWRLEVEL_LEVEL1 1 18462306a36Sopenharmony_ci#define TXHIGHPWRLEVEL_LEVEL2 2 18562306a36Sopenharmony_ci#define TXHIGHPWRLEVEL_BT1 3 18662306a36Sopenharmony_ci#define TXHIGHPWRLEVEL_BT2 4 18762306a36Sopenharmony_ci 18862306a36Sopenharmony_ci#define DM_TYPE_BYFW 0 18962306a36Sopenharmony_ci#define DM_TYPE_BYDRIVER 1 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 19262306a36Sopenharmony_ci#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 19362306a36Sopenharmony_ci#define TXPWRTRACK_MAX_IDX 6 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_cistruct swat_t { 19662306a36Sopenharmony_ci u8 failure_cnt; 19762306a36Sopenharmony_ci u8 try_flag; 19862306a36Sopenharmony_ci u8 stop_trying; 19962306a36Sopenharmony_ci 20062306a36Sopenharmony_ci long pre_rssi; 20162306a36Sopenharmony_ci long trying_threshold; 20262306a36Sopenharmony_ci u8 cur_antenna; 20362306a36Sopenharmony_ci u8 pre_antenna; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci}; 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_cienum FAT_STATE { 20862306a36Sopenharmony_ci FAT_NORMAL_STATE = 0, 20962306a36Sopenharmony_ci FAT_TRAINING_STATE = 1, 21062306a36Sopenharmony_ci}; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_cienum tag_dynamic_init_gain_operation_type_definition { 21362306a36Sopenharmony_ci DIG_TYPE_THRESH_HIGH = 0, 21462306a36Sopenharmony_ci DIG_TYPE_THRESH_LOW = 1, 21562306a36Sopenharmony_ci DIG_TYPE_BACKOFF = 2, 21662306a36Sopenharmony_ci DIG_TYPE_RX_GAIN_MIN = 3, 21762306a36Sopenharmony_ci DIG_TYPE_RX_GAIN_MAX = 4, 21862306a36Sopenharmony_ci DIG_TYPE_ENABLE = 5, 21962306a36Sopenharmony_ci DIG_TYPE_DISABLE = 6, 22062306a36Sopenharmony_ci DIG_OP_TYPE_MAX 22162306a36Sopenharmony_ci}; 22262306a36Sopenharmony_ci 22362306a36Sopenharmony_cienum dm_1r_cca_e { 22462306a36Sopenharmony_ci CCA_1R = 0, 22562306a36Sopenharmony_ci CCA_2R = 1, 22662306a36Sopenharmony_ci CCA_MAX = 2, 22762306a36Sopenharmony_ci}; 22862306a36Sopenharmony_ci 22962306a36Sopenharmony_cienum dm_rf_e { 23062306a36Sopenharmony_ci RF_SAVE = 0, 23162306a36Sopenharmony_ci RF_NORMAL = 1, 23262306a36Sopenharmony_ci RF_MAX = 2, 23362306a36Sopenharmony_ci}; 23462306a36Sopenharmony_ci 23562306a36Sopenharmony_cienum dm_sw_ant_switch_e { 23662306a36Sopenharmony_ci ANS_ANTENNA_B = 1, 23762306a36Sopenharmony_ci ANS_ANTENNA_A = 2, 23862306a36Sopenharmony_ci ANS_ANTENNA_MAX = 3, 23962306a36Sopenharmony_ci}; 24062306a36Sopenharmony_ci 24162306a36Sopenharmony_cienum pwr_track_control_method { 24262306a36Sopenharmony_ci BBSWING, 24362306a36Sopenharmony_ci TXAGC 24462306a36Sopenharmony_ci}; 24562306a36Sopenharmony_ci 24662306a36Sopenharmony_civoid rtl88e_dm_set_tx_ant_by_tx_info(struct ieee80211_hw *hw, 24762306a36Sopenharmony_ci u8 *pdesc, u32 mac_id); 24862306a36Sopenharmony_civoid rtl88e_dm_ant_sel_statistics(struct ieee80211_hw *hw, 24962306a36Sopenharmony_ci u8 antsel_tr_mux, u32 mac_id, 25062306a36Sopenharmony_ci u32 rx_pwdb_all); 25162306a36Sopenharmony_civoid rtl88e_dm_fast_antenna_training_callback(struct timer_list *t); 25262306a36Sopenharmony_civoid rtl88e_dm_init(struct ieee80211_hw *hw); 25362306a36Sopenharmony_civoid rtl88e_dm_watchdog(struct ieee80211_hw *hw); 25462306a36Sopenharmony_civoid rtl88e_dm_write_dig(struct ieee80211_hw *hw); 25562306a36Sopenharmony_civoid rtl88e_dm_init_edca_turbo(struct ieee80211_hw *hw); 25662306a36Sopenharmony_civoid rtl88e_dm_check_txpower_tracking(struct ieee80211_hw *hw); 25762306a36Sopenharmony_civoid rtl88e_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw); 25862306a36Sopenharmony_civoid rtl88e_dm_txpower_track_adjust(struct ieee80211_hw *hw, 25962306a36Sopenharmony_ci u8 type, u8 *pdirection, u32 *poutwrite_val); 26062306a36Sopenharmony_ci#endif 261