18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* Copyright(c) 2009-2014 Realtek Corporation.*/ 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci#ifndef __RTL92E_DM_H__ 58c2ecf20Sopenharmony_ci#define __RTL92E_DM_H__ 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci#define OFDMCCA_TH 500 88c2ecf20Sopenharmony_ci#define BW_IND_BIAS 500 98c2ecf20Sopenharmony_ci#define MF_USC 2 108c2ecf20Sopenharmony_ci#define MF_LSC 1 118c2ecf20Sopenharmony_ci#define MF_USC_LSC 0 128c2ecf20Sopenharmony_ci#define MONITOR_TIME 30 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#define MAIN_ANT 0 158c2ecf20Sopenharmony_ci#define AUX_ANT 1 168c2ecf20Sopenharmony_ci#define MAIN_ANT_CG_TRX 1 178c2ecf20Sopenharmony_ci#define AUX_ANT_CG_TRX 0 188c2ecf20Sopenharmony_ci#define MAIN_ANT_CGCS_RX 0 198c2ecf20Sopenharmony_ci#define AUX_ANT_CGCS_RX 1 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/*RF REG LIST*/ 228c2ecf20Sopenharmony_ci#define DM_REG_RF_MODE_11N 0x00 238c2ecf20Sopenharmony_ci#define DM_REG_RF_0B_11N 0x0B 248c2ecf20Sopenharmony_ci#define DM_REG_CHNBW_11N 0x18 258c2ecf20Sopenharmony_ci#define DM_REG_T_METER_11N 0x24 268c2ecf20Sopenharmony_ci#define DM_REG_RF_25_11N 0x25 278c2ecf20Sopenharmony_ci#define DM_REG_RF_26_11N 0x26 288c2ecf20Sopenharmony_ci#define DM_REG_RF_27_11N 0x27 298c2ecf20Sopenharmony_ci#define DM_REG_RF_2B_11N 0x2B 308c2ecf20Sopenharmony_ci#define DM_REG_RF_2C_11N 0x2C 318c2ecf20Sopenharmony_ci#define DM_REG_RXRF_A3_11N 0x3C 328c2ecf20Sopenharmony_ci#define DM_REG_T_METER_92D_11N 0x42 338c2ecf20Sopenharmony_ci#define DM_REG_T_METER_92E_11N 0x42 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci/*BB REG LIST*/ 368c2ecf20Sopenharmony_ci/*PAGE 8 */ 378c2ecf20Sopenharmony_ci#define DM_REG_BB_CTRL_11N 0x800 388c2ecf20Sopenharmony_ci#define DM_REG_RF_PIN_11N 0x804 398c2ecf20Sopenharmony_ci#define DM_REG_PSD_CTRL_11N 0x808 408c2ecf20Sopenharmony_ci#define DM_REG_TX_ANT_CTRL_11N 0x80C 418c2ecf20Sopenharmony_ci#define DM_REG_BB_PWR_SAV5_11N 0x818 428c2ecf20Sopenharmony_ci#define DM_REG_CCK_RPT_FORMAT_11N 0x824 438c2ecf20Sopenharmony_ci#define DM_REG_RX_DEFUALT_A_11N 0x858 448c2ecf20Sopenharmony_ci#define DM_REG_RX_DEFUALT_B_11N 0x85A 458c2ecf20Sopenharmony_ci#define DM_REG_BB_PWR_SAV3_11N 0x85C 468c2ecf20Sopenharmony_ci#define DM_REG_ANTSEL_CTRL_11N 0x860 478c2ecf20Sopenharmony_ci#define DM_REG_RX_ANT_CTRL_11N 0x864 488c2ecf20Sopenharmony_ci#define DM_REG_PIN_CTRL_11N 0x870 498c2ecf20Sopenharmony_ci#define DM_REG_BB_PWR_SAV1_11N 0x874 508c2ecf20Sopenharmony_ci#define DM_REG_ANTSEL_PATH_11N 0x878 518c2ecf20Sopenharmony_ci#define DM_REG_BB_3WIRE_11N 0x88C 528c2ecf20Sopenharmony_ci#define DM_REG_SC_CNT_11N 0x8C4 538c2ecf20Sopenharmony_ci#define DM_REG_PSD_DATA_11N 0x8B4 548c2ecf20Sopenharmony_ci/*PAGE 9*/ 558c2ecf20Sopenharmony_ci#define DM_REG_ANT_MAPPING1_11N 0x914 568c2ecf20Sopenharmony_ci#define DM_REG_ANT_MAPPING2_11N 0x918 578c2ecf20Sopenharmony_ci/*PAGE A*/ 588c2ecf20Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA1_11N 0xA00 598c2ecf20Sopenharmony_ci#define DM_REG_CCK_CCA_11N 0xA0A 608c2ecf20Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA2_11N 0xA0C 618c2ecf20Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA3_11N 0xA10 628c2ecf20Sopenharmony_ci#define DM_REG_CCK_ANTDIV_PARA4_11N 0xA14 638c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA1_11N 0xA22 648c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA2_11N 0xA23 658c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA3_11N 0xA24 668c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA4_11N 0xA25 678c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA5_11N 0xA26 688c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA6_11N 0xA27 698c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA7_11N 0xA28 708c2ecf20Sopenharmony_ci#define DM_REG_CCK_FILTER_PARA8_11N 0xA29 718c2ecf20Sopenharmony_ci#define DM_REG_CCK_FA_RST_11N 0xA2C 728c2ecf20Sopenharmony_ci#define DM_REG_CCK_FA_MSB_11N 0xA58 738c2ecf20Sopenharmony_ci#define DM_REG_CCK_FA_LSB_11N 0xA5C 748c2ecf20Sopenharmony_ci#define DM_REG_CCK_CCA_CNT_11N 0xA60 758c2ecf20Sopenharmony_ci#define DM_REG_BB_PWR_SAV4_11N 0xA74 768c2ecf20Sopenharmony_ci/*PAGE B */ 778c2ecf20Sopenharmony_ci#define DM_REG_LNA_SWITCH_11N 0xB2C 788c2ecf20Sopenharmony_ci#define DM_REG_PATH_SWITCH_11N 0xB30 798c2ecf20Sopenharmony_ci#define DM_REG_RSSI_CTRL_11N 0xB38 808c2ecf20Sopenharmony_ci#define DM_REG_CONFIG_ANTA_11N 0xB68 818c2ecf20Sopenharmony_ci#define DM_REG_RSSI_BT_11N 0xB9C 828c2ecf20Sopenharmony_ci/*PAGE C */ 838c2ecf20Sopenharmony_ci#define DM_REG_OFDM_FA_HOLDC_11N 0xC00 848c2ecf20Sopenharmony_ci#define DM_REG_RX_PATH_11N 0xC04 858c2ecf20Sopenharmony_ci#define DM_REG_TRMUX_11N 0xC08 868c2ecf20Sopenharmony_ci#define DM_REG_OFDM_FA_RSTC_11N 0xC0C 878c2ecf20Sopenharmony_ci#define DM_REG_RXIQI_MATRIX_11N 0xC14 888c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_MATRIX_LSB1_11N 0xC4C 898c2ecf20Sopenharmony_ci#define DM_REG_IGI_A_11N 0xC50 908c2ecf20Sopenharmony_ci#define DM_REG_ANTDIV_PARA2_11N 0xC54 918c2ecf20Sopenharmony_ci#define DM_REG_IGI_B_11N 0xC58 928c2ecf20Sopenharmony_ci#define DM_REG_ANTDIV_PARA3_11N 0xC5C 938c2ecf20Sopenharmony_ci#define DM_REG_L1SBD_PD_CH_11N 0XC6C 948c2ecf20Sopenharmony_ci#define DM_REG_BB_PWR_SAV2_11N 0xC70 958c2ecf20Sopenharmony_ci#define DM_REG_RX_OFF_11N 0xC7C 968c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_MATRIXA_11N 0xC80 978c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_MATRIXB_11N 0xC88 988c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_MATRIXA_LSB2_11N 0xC94 998c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_MATRIXB_LSB2_11N 0xC9C 1008c2ecf20Sopenharmony_ci#define DM_REG_RXIQK_MATRIX_LSB_11N 0xCA0 1018c2ecf20Sopenharmony_ci#define DM_REG_ANTDIV_PARA1_11N 0xCA4 1028c2ecf20Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE1_11N 0xCF0 1038c2ecf20Sopenharmony_ci/*PAGE D */ 1048c2ecf20Sopenharmony_ci#define DM_REG_OFDM_FA_RSTD_11N 0xD00 1058c2ecf20Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE2_11N 0xDA0 1068c2ecf20Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE3_11N 0xDA4 1078c2ecf20Sopenharmony_ci#define DM_REG_OFDM_FA_TYPE4_11N 0xDA8 1088c2ecf20Sopenharmony_ci/*PAGE E */ 1098c2ecf20Sopenharmony_ci#define DM_REG_TXAGC_A_6_18_11N 0xE00 1108c2ecf20Sopenharmony_ci#define DM_REG_TXAGC_A_24_54_11N 0xE04 1118c2ecf20Sopenharmony_ci#define DM_REG_TXAGC_A_1_MCS32_11N 0xE08 1128c2ecf20Sopenharmony_ci#define DM_REG_TXAGC_A_MCS0_3_11N 0xE10 1138c2ecf20Sopenharmony_ci#define DM_REG_TXAGC_A_MCS4_7_11N 0xE14 1148c2ecf20Sopenharmony_ci#define DM_REG_TXAGC_A_MCS8_11_11N 0xE18 1158c2ecf20Sopenharmony_ci#define DM_REG_TXAGC_A_MCS12_15_11N 0xE1C 1168c2ecf20Sopenharmony_ci#define DM_REG_FPGA0_IQK_11N 0xE28 1178c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_TONE_A_11N 0xE30 1188c2ecf20Sopenharmony_ci#define DM_REG_RXIQK_TONE_A_11N 0xE34 1198c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_PI_A_11N 0xE38 1208c2ecf20Sopenharmony_ci#define DM_REG_RXIQK_PI_A_11N 0xE3C 1218c2ecf20Sopenharmony_ci#define DM_REG_TXIQK_11N 0xE40 1228c2ecf20Sopenharmony_ci#define DM_REG_RXIQK_11N 0xE44 1238c2ecf20Sopenharmony_ci#define DM_REG_IQK_AGC_PTS_11N 0xE48 1248c2ecf20Sopenharmony_ci#define DM_REG_IQK_AGC_RSP_11N 0xE4C 1258c2ecf20Sopenharmony_ci#define DM_REG_BLUETOOTH_11N 0xE6C 1268c2ecf20Sopenharmony_ci#define DM_REG_RX_WAIT_CCA_11N 0xE70 1278c2ecf20Sopenharmony_ci#define DM_REG_TX_CCK_RFON_11N 0xE74 1288c2ecf20Sopenharmony_ci#define DM_REG_TX_CCK_BBON_11N 0xE78 1298c2ecf20Sopenharmony_ci#define DM_REG_OFDM_RFON_11N 0xE7C 1308c2ecf20Sopenharmony_ci#define DM_REG_OFDM_BBON_11N 0xE80 1318c2ecf20Sopenharmony_ci#define DM_REG_TX2RX_11N 0xE84 1328c2ecf20Sopenharmony_ci#define DM_REG_TX2TX_11N 0xE88 1338c2ecf20Sopenharmony_ci#define DM_REG_RX_CCK_11N 0xE8C 1348c2ecf20Sopenharmony_ci#define DM_REG_RX_OFDM_11N 0xED0 1358c2ecf20Sopenharmony_ci#define DM_REG_RX_WAIT_RIFS_11N 0xED4 1368c2ecf20Sopenharmony_ci#define DM_REG_RX2RX_11N 0xED8 1378c2ecf20Sopenharmony_ci#define DM_REG_STANDBY_11N 0xEDC 1388c2ecf20Sopenharmony_ci#define DM_REG_SLEEP_11N 0xEE0 1398c2ecf20Sopenharmony_ci#define DM_REG_PMPD_ANAEN_11N 0xEEC 1408c2ecf20Sopenharmony_ci 1418c2ecf20Sopenharmony_ci/*MAC REG LIST*/ 1428c2ecf20Sopenharmony_ci#define DM_REG_BB_RST_11N 0x02 1438c2ecf20Sopenharmony_ci#define DM_REG_ANTSEL_PIN_11N 0x4C 1448c2ecf20Sopenharmony_ci#define DM_REG_EARLY_MODE_11N 0x4D0 1458c2ecf20Sopenharmony_ci#define DM_REG_RSSI_MONITOR_11N 0x4FE 1468c2ecf20Sopenharmony_ci#define DM_REG_EDCA_VO_11N 0x500 1478c2ecf20Sopenharmony_ci#define DM_REG_EDCA_VI_11N 0x504 1488c2ecf20Sopenharmony_ci#define DM_REG_EDCA_BE_11N 0x508 1498c2ecf20Sopenharmony_ci#define DM_REG_EDCA_BK_11N 0x50C 1508c2ecf20Sopenharmony_ci#define DM_REG_TXPAUSE_11N 0x522 1518c2ecf20Sopenharmony_ci#define DM_REG_RESP_TX_11N 0x6D8 1528c2ecf20Sopenharmony_ci#define DM_REG_ANT_TRAIN_PARA1_11N 0x7b0 1538c2ecf20Sopenharmony_ci#define DM_REG_ANT_TRAIN_PARA2_11N 0x7b4 1548c2ecf20Sopenharmony_ci 1558c2ecf20Sopenharmony_ci/*DIG Related*/ 1568c2ecf20Sopenharmony_ci#define DM_BIT_IGI_11N 0x0000007F 1578c2ecf20Sopenharmony_ci 1588c2ecf20Sopenharmony_ci#define HAL_DM_DIG_DISABLE BIT(0) 1598c2ecf20Sopenharmony_ci#define HAL_DM_HIPWR_DISABLE BIT(1) 1608c2ecf20Sopenharmony_ci 1618c2ecf20Sopenharmony_ci#define OFDM_TABLE_LENGTH 43 1628c2ecf20Sopenharmony_ci#define CCK_TABLE_LENGTH 33 1638c2ecf20Sopenharmony_ci 1648c2ecf20Sopenharmony_ci#define OFDM_TABLE_SIZE 43 1658c2ecf20Sopenharmony_ci#define CCK_TABLE_SIZE 33 1668c2ecf20Sopenharmony_ci 1678c2ecf20Sopenharmony_ci#define BW_AUTO_SWITCH_HIGH_LOW 25 1688c2ecf20Sopenharmony_ci#define BW_AUTO_SWITCH_LOW_HIGH 30 1698c2ecf20Sopenharmony_ci 1708c2ecf20Sopenharmony_ci#define DM_DIG_FA_UPPER 0x3e 1718c2ecf20Sopenharmony_ci#define DM_DIG_FA_LOWER 0x1e 1728c2ecf20Sopenharmony_ci#define DM_DIG_FA_TH0 0x200 1738c2ecf20Sopenharmony_ci#define DM_DIG_FA_TH1 0x300 1748c2ecf20Sopenharmony_ci#define DM_DIG_FA_TH2 0x400 1758c2ecf20Sopenharmony_ci 1768c2ecf20Sopenharmony_ci#define RXPATHSELECTION_SS_TH_LOW 30 1778c2ecf20Sopenharmony_ci#define RXPATHSELECTION_DIFF_TH 18 1788c2ecf20Sopenharmony_ci 1798c2ecf20Sopenharmony_ci#define DM_RATR_STA_INIT 0 1808c2ecf20Sopenharmony_ci#define DM_RATR_STA_HIGH 1 1818c2ecf20Sopenharmony_ci#define DM_RATR_STA_MIDDLE 2 1828c2ecf20Sopenharmony_ci#define DM_RATR_STA_LOW 3 1838c2ecf20Sopenharmony_ci 1848c2ecf20Sopenharmony_ci#define CTS2SELF_THVAL 30 1858c2ecf20Sopenharmony_ci#define REGC38_TH 20 1868c2ecf20Sopenharmony_ci 1878c2ecf20Sopenharmony_ci#define WAIOTTHVAL 25 1888c2ecf20Sopenharmony_ci 1898c2ecf20Sopenharmony_ci#define TXHIGHPWRLEVEL_NORMAL 0 1908c2ecf20Sopenharmony_ci#define TXHIGHPWRLEVEL_LEVEL1 1 1918c2ecf20Sopenharmony_ci#define TXHIGHPWRLEVEL_LEVEL2 2 1928c2ecf20Sopenharmony_ci#define TXHIGHPWRLEVEL_BT1 3 1938c2ecf20Sopenharmony_ci#define TXHIGHPWRLEVEL_BT2 4 1948c2ecf20Sopenharmony_ci 1958c2ecf20Sopenharmony_ci#define DM_TYPE_BYFW 0 1968c2ecf20Sopenharmony_ci#define DM_TYPE_BYDRIVER 1 1978c2ecf20Sopenharmony_ci 1988c2ecf20Sopenharmony_ci#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74 1998c2ecf20Sopenharmony_ci#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67 2008c2ecf20Sopenharmony_ci#define TXPWRTRACK_MAX_IDX 6 2018c2ecf20Sopenharmony_ci 2028c2ecf20Sopenharmony_ci/* Dynamic ATC switch */ 2038c2ecf20Sopenharmony_ci#define ATC_STATUS_OFF 0x0 /* enable */ 2048c2ecf20Sopenharmony_ci#define ATC_STATUS_ON 0x1 /* disable */ 2058c2ecf20Sopenharmony_ci#define CFO_THRESHOLD_XTAL 10 /* kHz */ 2068c2ecf20Sopenharmony_ci#define CFO_THRESHOLD_ATC 80 /* kHz */ 2078c2ecf20Sopenharmony_ci 2088c2ecf20Sopenharmony_ci/* RSSI Dump Message */ 2098c2ecf20Sopenharmony_ci#define RA_RSSIDUMP 0xcb0 2108c2ecf20Sopenharmony_ci#define RB_RSSIDUMP 0xcb1 2118c2ecf20Sopenharmony_ci#define RS1_RXEVMDUMP 0xcb2 2128c2ecf20Sopenharmony_ci#define RS2_RXEVMDUMP 0xcb3 2138c2ecf20Sopenharmony_ci#define RA_RXSNRDUMP 0xcb4 2148c2ecf20Sopenharmony_ci#define RB_RXSNRDUMP 0xcb5 2158c2ecf20Sopenharmony_ci#define RA_CFOSHORTDUMP 0xcb6 2168c2ecf20Sopenharmony_ci#define RB_CFOSHORTDUMP 0xcb8 2178c2ecf20Sopenharmony_ci#define RA_CFOLONGDUMP 0xcba 2188c2ecf20Sopenharmony_ci#define RB_CFOLONGDUMP 0xcbc 2198c2ecf20Sopenharmony_ci 2208c2ecf20Sopenharmony_civoid rtl92ee_dm_init(struct ieee80211_hw *hw); 2218c2ecf20Sopenharmony_civoid rtl92ee_dm_watchdog(struct ieee80211_hw *hw); 2228c2ecf20Sopenharmony_civoid rtl92ee_dm_write_cck_cca_thres(struct ieee80211_hw *hw, 2238c2ecf20Sopenharmony_ci u8 cur_thres); 2248c2ecf20Sopenharmony_civoid rtl92ee_dm_write_dig(struct ieee80211_hw *hw, u8 current_igi); 2258c2ecf20Sopenharmony_civoid rtl92ee_dm_init_edca_turbo(struct ieee80211_hw *hw); 2268c2ecf20Sopenharmony_civoid rtl92ee_dm_init_rate_adaptive_mask(struct ieee80211_hw *hw); 2278c2ecf20Sopenharmony_civoid rtl92ee_dm_dynamic_arfb_select(struct ieee80211_hw *hw, 2288c2ecf20Sopenharmony_ci u8 rate, bool collision_state); 2298c2ecf20Sopenharmony_ci#endif 230